Docker根据名称查询容器ID镜像ID并停止删除,并通过shell脚本部署项目
背景:公司最近做环境搬迁,把以前直接部署在服务器上的项目都与docker进行整合部署,每次手动执行有些繁琐,于是写个脚本便于部署项目。实现:1.容器、镜像删除方法参考链接:https://blog.csdn.net/zimou5581/article/details/940126821. 根据容器名称查询容器ID并删除# 第一种写法docker stop `docker ps -a| grep o
·
背景:
公司最近做环境搬迁,把以前直接部署在服务器上的项目都与docker进行整合部署,每次手动执行有些繁琐,于是写个脚本便于部署项目。
实现:
1.容器、镜像删除方法
参考链接:https://blog.csdn.net/zimou5581/article/details/94012682
1. 根据容器名称查询容器ID并删除
# 第一种写法
docker stop `docker ps -a| grep oes-live-manage | awk '{print $1}' `
docker rm `docker ps -a| grep oes-live-manage | awk '{print $1}' `
# 第二种写法
docker stop `docker ps -aq --filter name=oes-live-manage`
docker rm `docker ps -aq --filter name=oes-live-manage`
2. 根据镜像名称查询容器ID并删除
# 第一种写法
docker stop `docker ps -a| grep ygsama/test-project:1.0.2 | awk '{print $1}' `
docker rm `docker ps -a| grep ygsama/test-project:1.0.2 | awk '{print $1}' `
# 第二种写法--filter,reference 后跟镜像名称
docker stop `docker ps -aq --filter oes-live-manage:1.0.2`
docker rm `docker ps -aq --filter oes-live-manage:1.0.2`
3. 根据镜像名称查询镜像ID并删除
docker images -q --filter reference=oes-live-manage*:*
docker image rm `docker images -q --filter reference=oes-live-manage*:*`
2.具体实现脚本内容
#!/bin/bash
#查看镜像是否存在
appname=oes-live-manage
name=harborUrl/${appname}:1.0.0
#查询得到指定名称的容器ID
#容器ID
ARG1=$(docker ps -aqf "name=${appname}")
#查询得到指定名称的镜像ID
#镜像ID
ARG2=$(docker images -q --filter reference=${name})
#如果查询结果不为空,先停容器在删除
#容器
if [ -n "$ARG1" ]; then
docker rm -f $(docker stop $ARG1)
echo "$name容器停止删除成功.....!!!"
fi
#如果查询结果不为空,先删除镜像
#删除镜像
if [ -n "$ARG2" ]; then
docker rmi -f $ARG2
echo "$name镜像删除成功.....!!!"
fi
#启动项目,远程拉取镜像,并启动容器
docker run -d --name=${appname} --net=host -v /tools/logs/${appname}/:/tools/logs \
--env SPRING_PROFILE_ACTIVE=preview \
--restart=always -d ${name}
结果:
1.在服务器脚本目录执行脚本,比如:
如果脚本不能执行,先赋权
chmod 777 manage.sh

2.查看镜像、容器信息
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)