假设我已经提取了官方的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不起作用)
我要感谢所有给出答案的人,这样我们可以看到所有不同的方法