首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除容器时码头容积发生了什么变化?

问删除容器时码头容积发生了什么变化?
EN

Stack Overflow用户
提问于 2015-01-16 03:45:38
回答 2查看 14.6K关注 0票数 15

假设我在Mysql容器中有这些卷

VOLUME ["/etc/mysql", "/var/lib/mysql"]

现在,这在生产中运行良好。

然后,我对mysql映像做了一些更改,并希望将其部署到生产中。

如果我错了,请纠正我

  1. 我必须从更新的mysql映像构建新容器。
  2. 我需要删除旧的圣殿,所以我会停止和删除它。
  3. 然后,我需要创建同名的新mysql容器,以便其他使用数据库的new服务器可以使用它。

现在我的问题是,一旦删除了管理员,不会删除所有mysql数据。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-16 06:41:48

在我们继续之前,我认为有两个概念需要解释。码头图片和码头集装箱。容器是一个正在运行的进程,由码头管理,是基于一个码头形象。有两种方法可以创建图像:

  1. 您可以指定一个具有所有依赖项的Dockerfile,并使用docker build构建它。然后将其保存在本地注册表中(也可以将其推送到中心位置)。
  2. 您可以根据图像启动容器,在该容器中进行修改,然后对更改进行commit。

容器只是运行的进程,它们总是基于图像。请注意,容器永远不能更改图像(除非提交)。海事组织的Dockerfile方法要好得多。

回到原来的问题。VOLUME指令在Dockerfile中只是为容器创建一个挂载点,它实际上并不将任何东西从主机文件系统挂载到容器文件系统。为了从主机上实际挂载文件夹,在运行容器时必须提供-v标志。

代码语言:javascript
复制
docker run -v /host/path:/container/path ...

这将在主机和容器之间创建一个共享文件夹,即使在容器被停止、删除或崩溃之后,数据也仍然存在。

  1. 我必须从更新的mysql映像构建新容器。

是的,如果您在Dockerfile中更新了一些内容,那么您必须构建一个新的映像(而不是容器),并将映像部署到您的生产环境中。然后,您可以根据新构建的映像使用docker run启动容器。

  1. 我需要删除旧的圣殿,所以我会停止和删除它。

是的,你必须停止旧容器,然后删除它。在此之后,您可以使用相同的名称启动新容器,但这一次它是基于新图像的。需要删除容器,因为它是一个命名容器,如果您使用相同的名称启动一个新容器(即容器是使用--name选项docker run启动的),那么您将得到一个名称冲突。如果未命名容器,则可以跳过删除旧容器。

  1. 然后,我需要创建同名的新mysql容器,以便其他使用数据库的new服务器可以使用它。

是的,因为您可能使用容器链接来实现这一点。

资源:

票数 14
EN

Stack Overflow用户

发布于 2015-01-16 10:34:31

除非用docker rm -v container_id删除父容器,而且没有其他容器使用卷,否则卷永远不会被删除。如果没有给出-v标志,卷将不会被删除。这意味着,在没有-v标志的情况下,您经常会删除容器中的“孤儿”卷。

映射到选定主机目录的卷(使用-v host_dir:container_dir)永远不会被删除。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27977001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档