假设我已经拉取了官方的 mysql:5.6.21 镜像。
我通过创建几个 docker 容器部署了这个镜像。
这些容器已经运行了一段时间,直到 MySQL 5.6.22 发布。 mysql:5.6 的官方镜像随着新版本的更新而更新,但我的容器仍然运行 5.6.21。
如何将映像中的更改(即升级 MySQL 发行版)传播到所有现有容器?这样做的正确Docker方式是什么?
原文由 Yaroslav Stavnichiy 发布,翻译遵循 CC BY-SA 4.0 许可协议
假设我已经拉取了官方的 mysql:5.6.21 镜像。
我通过创建几个 docker 容器部署了这个镜像。
这些容器已经运行了一段时间,直到 MySQL 5.6.22 发布。 mysql:5.6 的官方镜像随着新版本的更新而更新,但我的容器仍然运行 5.6.21。
如何将映像中的更改(即升级 MySQL 发行版)传播到所有现有容器?这样做的正确Docker方式是什么?
原文由 Yaroslav Stavnichiy 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答864 阅读✓ 已解决
1 回答689 阅读✓ 已解决
1 回答632 阅读
在评估了答案并研究了我想总结的主题之后。
Docker升级容器的方式似乎如下:
应用程序容器不应存储应用程序数据。这样,您可以随时通过执行以下操作将应用容器替换为其较新版本:
您可以将数据存储在主机上(在作为卷安装的目录中)或特殊 _的仅数据容器中_。阅读更多关于它的信息
在容器中升级应用程序(例如使用 yum/apt-get upgrade)被认为是一种反模式。应用程序容器应该是 不可变 的,这应保证可重现的行为。一些官方应用程序映像(尤其是 mysql:5.6)甚至没有设计为自我更新(apt-get upgrade 不起作用)。
我要感谢所有给出答案的人,所以我们可以看到所有不同的方法。