假设我在Mysql容器中有这些卷
VOLUME ["/etc/mysql", "/var/lib/mysql"]
现在,这在生产中运行良好。
然后,我对mysql映像做了一些更改,并希望将其部署到生产中。
如果我错了,请纠正我
现在我的问题是,一旦删除了管理员,不会删除所有mysql数据。
发布于 2015-01-16 06:41:48
在我们继续之前,我认为有两个概念需要解释。码头图片和码头集装箱。容器是一个正在运行的进程,由码头管理,是基于一个码头形象。有两种方法可以创建图像:
Dockerfile,并使用docker build构建它。然后将其保存在本地注册表中(也可以将其推送到中心位置)。commit。容器只是运行的进程,它们总是基于图像。请注意,容器永远不能更改图像(除非提交)。海事组织的Dockerfile方法要好得多。
回到原来的问题。VOLUME指令在Dockerfile中只是为容器创建一个挂载点,它实际上并不将任何东西从主机文件系统挂载到容器文件系统。为了从主机上实际挂载文件夹,在运行容器时必须提供-v标志。
docker run -v /host/path:/container/path ...这将在主机和容器之间创建一个共享文件夹,即使在容器被停止、删除或崩溃之后,数据也仍然存在。
是的,如果您在Dockerfile中更新了一些内容,那么您必须构建一个新的映像(而不是容器),并将映像部署到您的生产环境中。然后,您可以根据新构建的映像使用docker run启动容器。
是的,你必须停止旧容器,然后删除它。在此之后,您可以使用相同的名称启动新容器,但这一次它是基于新图像的。需要删除容器,因为它是一个命名容器,如果您使用相同的名称启动一个新容器(即容器是使用--name选项docker run启动的),那么您将得到一个名称冲突。如果未命名容器,则可以跳过删除旧容器。
是的,因为您可能使用容器链接来实现这一点。
资源:
发布于 2015-01-16 10:34:31
除非用docker rm -v container_id删除父容器,而且没有其他容器使用卷,否则卷永远不会被删除。如果没有给出-v标志,卷将不会被删除。这意味着,在没有-v标志的情况下,您经常会删除容器中的“孤儿”卷。
映射到选定主机目录的卷(使用-v host_dir:container_dir)永远不会被删除。
https://stackoverflow.com/questions/27977001
复制相似问题