docker容器映像更改后如何升级

假设我已经提取了官方的mysql:5.6.21图像

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

在MySQL 5.6.22发布之前,这些容器已经运行了一段时间。mysql:5.6的官方图像在新版本中得到更新,但我的容器仍然运行5.6.21

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

在评估了答案并研究了主题之后,我想总结一下

Docker升级容器的方法似乎如下所示:

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

docker pull mysql
docker停止我的mysql容器
docker rm my mysql容器
docker run--name=my mysql容器--restart=always\
-e MYSQL\u ROOT\u PASSWORD=mypwd-v/my/data/dir:/var/lib/MYSQL-d MYSQL

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

  • 关于卷(Docker文档)
  • 松散连接的小Docker部件(由Tom Offerman提供)
  • 如何处理Docker中的持久存储(如数据库)(堆栈溢出问题)

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

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

发表评论