我们可以在容器运行时用 docker-compose 替换图像吗
Posted
技术标签:
【中文标题】我们可以在容器运行时用 docker-compose 替换图像吗【英文标题】:Can we replace an image with docker-compose while container is running 【发布时间】:2021-01-26 12:34:06 【问题描述】:我在一个微服务应用程序中工作,并且有多个服务。我正在使用 docker-compose 来运行不同微服务的实例。我们为每个微服务创建一个镜像。如果我更改微服务的代码,我使用“docker-compose down”,然后更改更新后的微服务的版本,然后使用“docker-compose up”。我认为,应该有一种方法可以在运行时更新图像,而无需使用“docker-compose down”和“docker-compose up”。
有没有办法用 docker-compose 替换正在运行的容器的图像?
【问题讨论】:
我想,这可以帮助你。 Upgrade docker container 和 docker compose in production. 你尝试过 Kubernetes 吗? 【参考方案1】:您可以跳过docker-compose down
。 docker-compose up
命令将在镜像自上次启动后被构建或拉取时重新创建容器。请参阅this answer 了解更多详细信息和实际操作示例。
您不能从正在运行的容器中热交换图像。这相当于在 Linux 操作系统运行时更换根硬盘。它会破坏一些东西,尤其是任何带有打开文件句柄的东西。
【讨论】:
Kubernetes 可以做到,那么 Docker swarm 怎么样? @jtlz2 Kubernetes 不这样做,它替换了容器,与 docker-compose 和 Swarm 模式相同。看看如何使用 ReplicaSet 和 Deployment 来执行滚动更新。以上是关于我们可以在容器运行时用 docker-compose 替换图像吗的主要内容,如果未能解决你的问题,请参考以下文章
将 docker-compose 与 CI 结合使用 - 如何处理退出代码和守护程序链接容器?