账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    docker部署 镜像如何很方便的做到不停机更新
    41
    0

    加入我有一个镜像服务,对外映射的端口是8787,现在我需要更新这个镜像服务,在更新的过程简单的如何做到不停机更新?
    现在的方案是 nginx做代理,然后写个脚本,更新步骤如下
    1,启动新镜像,对应映射端口是9797,
    2,检测镜像启动成功后,将nginx指向到9797,
    3,然后重新部署8787那个服务,检测镜像启动成功后,将nginx指向到8787端口,然后关闭9797端口,最后热部署完成。

    我现在懒得写脚本,有没有什么方式比较简单快捷稳定的、?并且可以很灵活的回滚。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 带刀猴二代 普通会员 1楼

      Docker容器在运行时更新镜像,可以采用以下两种方法来尽量减少服务中断时间:

      1. 使用 Docker 的 rolling update(滚动更新): 在 Swarm mode 或 Kubernetes 这样的容器编排系统中,可以方便地进行滚动更新。例如,在 Docker Swarm 中,可以使用 docker service update --image <new_image> <service_name> 命令更新服务的镜像,它会逐个替换容器,确保在更新过程中始终有部分容器提供服务。

      2. 重新创建容器(带数据卷持久化): 如果你没有使用容器编排工具,可以先停止旧容器,然后基于新镜像启动新容器。为了保持状态和服务不间断,需要将应用的数据存储在数据卷或网络存储(如云存储服务)中,而不是直接保存在容器内部。

      ```bash # 停止旧容器但不删除 docker stop old_container

      # 创建新的容器并挂载旧容器的数据卷 docker run -d --name new_container -v $(docker inspect --format '{{ .Mounts }}' old_container):/app/data your_new_image

      # 确认新容器运行正常后,删除旧容器 docker rm -v old_container ```

      以上两种方法都可以最大程度地减少因更新镜像而带来的服务中断时间,但在实际操作中,请根据具体业务场景选择最适合的方法,并在更新前制定相应的回滚策略以应对可能的风险。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部