docker-compose如何实现滚动更新

 更新时间:2024年05月21日 09:24:18   作者:柯腾_  
这篇文章主要介绍了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 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker容器挂载宿主主机目录的操作方法

    docker容器挂载宿主主机目录的操作方法

    这篇文章主要介绍了docker容器挂载宿主主机目录的操作方法,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友参考下吧
    2018-01-01
  • 云原生自动化应用于docker仓库私有凭据secret创建

    云原生自动化应用于docker仓库私有凭据secret创建

    这篇文章主要为大家介绍了云原生自动化应用于docker仓库私有凭据secret创建,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • docker-compose搭建mongodb、mysql的详细过程

    docker-compose搭建mongodb、mysql的详细过程

    这篇文章主要介绍了docker-compose搭建mongodb、mysql的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • Docker容器定时备份数据库并发送到指定邮箱(设计思路)

    Docker容器定时备份数据库并发送到指定邮箱(设计思路)

    这篇文章主要介绍了Docker容器定时备份数据库并发送到指定邮箱,文中写了一下shell脚本,逻辑也很简单,当前时间与启动时间相同时,则调用sendmail函数发送邮件,具体脚本跟随小编一起看看吧
    2022-01-01
  • docker容器时区错误问题

    docker容器时区错误问题

    常出现docker中运行的容器获取到的时间与北京时间相差8小时的问题,其实是因为容器运行的时区不正确。本文主要介绍了docker容器时区错误问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Docker查看容器IP地址的方法实现

    Docker查看容器IP地址的方法实现

    本文主要介绍了Docker查看容器IP地址的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • jenkins中通过Publish Over SSH插件将项目部署到远程机器上的讲解说明

    jenkins中通过Publish Over SSH插件将项目部署到远程机器上的讲解说明

    今天小编就为大家分享一篇关于jenkins中通过Publish Over SSH插件将项目部署到远程机器上的讲解说明,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Docker镜像分层的实现示例

    Docker镜像分层的实现示例

    本文主要介绍了Docker镜像分层的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • docker容器的几种存储详解

    docker容器的几种存储详解

    本文主要介绍了docker容器的几种存储方式,主要介绍了3种,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Docker 安装Tomcat、实现Tomcat集群的详细过程

    Docker 安装Tomcat、实现Tomcat集群的详细过程

    这篇文章主要介绍了Docker安装Tomcat、实现Tomcat集群,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06

最新评论