当前位置: 首页 > 知识库问答 >
问题:

docker容器映像变化后如何升级

秦阳旭
2023-03-14

假设我已经拉出了官方的mysql:5.6.21图像。

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

这些容器已经运行了一段时间,直到MySQL5.6.22发布。MySQL:5.6的官方映像得到了新版本的更新,但我的容器仍然运行5.6.21。

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

共有1个答案

燕禄
2023-03-14

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

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

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

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

您可以将数据存储在主机上(以卷形式挂载的目录中),也可以存储在专用的数据容器中。阅读有关它的更多信息

  • 关于卷(Docker文档)
  • 松散连接的码头工人小碎片(汤姆·奥弗曼著)
  • 如何处理Docker中的持久存储(如数据库)(堆栈溢出问题)

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

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

 类似资料:
  • 问题内容: 我做了一个码头工人拉,可以列出下载的图像。我想看这张图片的内容。在网上进行了搜索,但没有直接答案。 问题答案: 您可以使用该图像运行一个交互式外壳容器,并浏览该图像包含的内容。 例如: 或关注带有 或者,如果您想查看图像的构建方式,即图像中的步骤,则可以: 步骤将被登录到文件中。

  • 我想删除这两个图像 如何走出圈子?

  • 问题内容: 我通过Fedora的Dockerfile创建了一个简单的映像(最初为320 MB)。 添加了Nano(这个1MB大小的微型编辑器),图像的大小已增加到530 MB。我在此基础上添加了Git(30-ish MB),然后将图像大小的火箭提高到830 MB。 那不是疯了吗? 我试图导出和导入容器以删除历史记录/中间图像。这项工作最多可节省25 MB,现在我的图像大小为804 MB。我也尝试过

  • 问题内容: 我从dockerfile构建了Docker映像。我看到映像已成功构建,但是该如何处理?它不应该能够作为容器运行吗? 问题答案: 运行它的具体方法取决于您是否为图像指定了标签/名称。 使用名称(让我们使用 Ubuntu ): 没有名称,只需使用ID: 请参阅 Docker运行参考 以获取更多信息。