docker-compose如何实现滚动更新
docker-compose实现滚动更新
平时我们在用docker-compose更新服务的时候,当我们敲下docker-compose up -d service回车之后到服务成功启动起来之前的这段时间,该service是不会提供服务的。
这还是建立在服务正常启动的情况下,如果服务没有正常启动,那该service停止服务的时间会更长。
有没有一种可以在更新的时候不打扰原本服务的运行,在更新结束后替换调原本的服务呢?
思路
命令行输入docker-compose up --help回车我们会发现:

相信看到这,大家或多或少都有点思路了吧~那就是我们的更新服务的时候,容器数量设置成2个,因为原本该服务已经有一个容器在跑了,这个时候docker会再生成一个新的容器用来跑新的服务,当新的服务起来的时候,我们可以停止并删除原来老的容器,这样就实现了滚动更新。
步骤
1.加载要更新的镜像包
docker load < service.tar
2.启动服务(设置两个运行容器)
docker-compose up -d --scale service=2 --no-recreate
ps:这里的service是你的服务名
3.停止并删除原本服务容器
docker stop containerId docker rm containerId
ps:这里的containerId是你老服务的容器id
docker和docker-compose常用命令
docker
# 查看镜像列表 docker images # 查看运行的容器 docker ps -a # 删除指定镜像 docker rmi 镜像ID # 删除全部镜像 docker rmi -f $(docker images -qa) # 启动容器 docker start 容器ID/容器名 # 停止容器 docker stop 容器ID/容器名 # 重启容器 docker restart 容器ID/容器名 # 删除容器 docker rm 容器ID/容器名 # 删除镜像 docker rmi 镜像ID/镜像名 # 构建镜像 docker build -t 镜像名:tag名 . # 拉取在线镜像 docker pull 镜像名 # 导出镜像 docker save -o images.tar 镜像名:tag名 # 后面支持输入多个 # 导入镜像 docker load < images.tar # 查看容器的相关信息 docker inspect 容器ID/容器名 # 查看容器日志 docker logs 容器ID/容器名 # 查看所有容器 docker ps -a # 容器复制文件 docker cp 容器ID/容器名:/opt /opt # 容器拷到本地 docker cp /opt 容器ID/容器名:/opt # 本地拷到容器 # 登录容器 docker exec -it 容器ID/容器名 /bin/bash # 设置容器自启动 新建容器 docker run --restart=always 容器ID/容器名 # 已存在的容器配置自启 docker update --restart=always 容器ID/容器名 # 取消容器自启 docker update --restart=no 容器ID/容器名 # 批量设置容器自启 docker update --restart=always $(docker ps -aq)
docker-compose
# 启动全部容器 docker-compose up -d # 启动指定容器 docker-compose up -d 服务名(如mysql) # 停止容器 docker-compose stop 容器ID # 删除容器(删除前必须关闭容器,执行stop) docker-compose rm nginx # 启动被停止的容器 docker-compose start 容器ID # 更新容器 docker-commpose up -d --build # 停止所有容器并清除 docker-compose down # 重启nignx容器 docker-compose restart nginx
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
dockerfile中ENTRYPOINT与CMD的结合使用及区别
这篇文章主要介绍了dockerfile中ENTRYPOINT与CMD的结合使用,大家都知道CMD 与 ENTRYPOINT都是用于指定启动容器执行的命令,那么他们俩有什么区别呢,本文给大家详细介绍,需要的朋友可以参考下2021-08-08
Docker如何给Springboot项目动态传参的实现方法
这篇文章主要介绍了Docker如何给Springboot项目动态传参的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-11-11
Docker部署Microsoft Sql Server详细步骤
大家好,本篇文章主要讲的是Docker部署Microsoft Sql Server详细步骤,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览2021-12-12
详解私有 Docker Registry 部署方案及用户手册
本文主要介绍了详解私有 Docker Registry 部署方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2026-04-04


最新评论