如何在镜像更改后升级 docker 容器

新手上路,请多包涵

假设我已经拉取了官方的 mysql:5.6.21 镜像

我通过创建几个 docker 容器部署了这个镜像。

这些容器已经运行了一段时间,直到 MySQL 5.6.22 发布。 mysql:5.6 的官方镜像随着新版本的更新而更新,但我的容器仍然运行 5.6.21。

如何将映像中的更改(即升级 MySQL 发行版)传播到所有现有容器?这样做的正确Docker方式是什么?

原文由 Yaroslav Stavnichiy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 277
1 个回答

在评估了答案并研究了我想总结的主题之后。

Docker升级容器的方式似乎如下:

应用程序容器不应存储应用程序数据。这样,您可以随时通过执行以下操作将应用容器替换为其较新版本:

 docker pull mysql
docker stop my-mysql-container
docker rm my-mysql-container
docker run --name=my-mysql-container --restart=always \
  -e MYSQL_ROOT_PASSWORD=mypwd -v /my/data/dir:/var/lib/mysql -d mysql

您可以将数据存储在主机上(在作为卷安装的目录中)或特殊 _的仅数据容器中_。阅读更多关于它的信息

在容器中升级应用程序(例如使用 yum/apt-get upgrade)被认为是一种反模式。应用程序容器应该是 不可变 的,这应保证可重现的行为。一些官方应用程序映像(尤其是 mysql:5.6)甚至没有设计为自我更新(apt-get upgrade 不起作用)。

我要感谢所有给出答案的人,所以我们可以看到所有不同的方法。

原文由 Yaroslav Stavnichiy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Stack Overflow 翻译
子站问答
访问
宣传栏