JAVA开发Docker容器下自动更新镜像仓库的工具
前段时间在做一套分布式多租户系统,它包括控制平台和应用服务器两部分,应用服务器为企业客户服务,系统会为每家企业建立一个应用服务器实例,它存在于容器中,控制平台用于管理所有的应用服务器引流和访问控制(本文不是重点)。系统V1版发布后,运维将jar包打成镜像,再将镜像push 到harbor服务器中,应用服务器再从harbor服务器拉取镜像实例,放到docker容器运行,命令为:
docker pull harbor.hyj.com/imes/imes:2.2.62 #拉取新版本镜像
docker run -d -p 8888:8080 harbor.hyj.com/imes/imes:2.2.62 #实例容器,并启动
当有新版本jar包发布后,需将原容器停掉,再另外新启一个容器
docker pull harbor.hyj.com/imes/imes:2.2.62 #拉取新版本镜像
docker ps #查看所有运行容器信息
docker stop containid #停止运行容器
docker rm containid #删除已运行容器
docker run -d -p 8888:8080 harbor.hyj.com/imes/imes:2.2.62 #重新拉取新版本容器镜像
规模变大
现假设镜像imes在docker下部署了N个容器实例,当镜像版本更新后,若要更新原有服务器容器,需对每个容器实例进行docker stop->docker rm->docker start的一系列操作,同时确保和原端口一致,并重复操作N次,原命令:
容器A:
docker stop container1A
docker rm container1A
docker run .......
容器2:
docker stop container1B
docker rm container1B
docker run .......