You need to enable JavaScript to run this app. docker-compose运行的应用如何实现服务镜像替换?
优惠活动
大模型
产品
解决方案
定价
更多

docker-compose运行的应用如何实现服务镜像替换?

Docker Compose 运行态替换服务镜像的实操说明

直接说结论:完全不用重启整个应用栈,也不是必须改完配置才能换镜像,两种适配不同需求的操作路径都能完成替换,全程可以做到不中断其他正在运行的服务:

临时测试用的镜像替换(不改动compose配置文件)

  • 适用情况:临时换个镜像测功能,不想动正式的配置文件
  • 操作步骤:
    • 只停目标服务就行:比如要换服务a的镜像,执行docker-compose stop a,旁边跑着的服务b全程不受影响,照常运行
    • 把已经停掉的a服务旧容器删掉:docker-compose rm -f a
    • 把你准备好的目标版本镜像,打上和compose配置里一致的标签:比如原配置里a服务绑定的镜像名是a,就执行docker tag <你要换的目标镜像ID/完整名称> a
    • 单服务拉起新容器:docker-compose up -d a,compose会自动认出来本地的a镜像已经换成新的了,直接起新容器就算换完
  • 提醒:这种换法是临时的,后面如果跑全量docker-compose up、或者宿主机重启之后,compose还是会按照原来的配置匹配镜像,临时换的版本不会被存下来。

长期使用的版本替换

  • 适用情况:确认新版本没问题,要正式把原来的镜像换成新的
  • 操作步骤:
    • 先改docker-compose.yml里对应服务的image字段,把原来的镜像名改成带目标版本的完整引用,比如把image: a改成image: a:2.3.0
    • 执行单服务更新命令,不用重启整个应用:docker-compose up -d --no-deps a
    • 这个命令跑起来之后,compose会自动拉你指定的新版本镜像,停掉旧的a服务容器,起新版本的a容器,整个过程服务b既不会被停,也不会被重建,全程正常对外提供服务。
  • 避坑提醒:很多人以为改完compose就得把所有服务重启一遍,其实只要加了--no-deps参数,compose就只操作你指定的那个服务,不会碰其他没改动的实例。

内容的提问来源于stack exchange,提问作者reynoldsbj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 07:15:04