新构建后docker中的图像和容器
我刚从Docker开始,我有一个问题,给出了以下场景:新构建后docker中的图像和容器,docker,Docker,我刚从Docker开始,我有一个问题,给出了以下场景: 我建立了一个形象 我在容器中运行这样的图像 我注意到我在Dockerfile中遗漏了一些东西,我构建了一个新版本的图像 我的问题是:容器是否知道更新的图像?如果没有,正确的工作流程是什么?到目前为止,我是这样做的:停止容器->删除它->从最新的图像中创建一个同名的新容器。。。。但我认为这不是正确的方法。停止运行的容器并重新启动它就足够了。它应该拾取映像的最新构建版本。停止运行的容器并重新启动它就足够了。它应该获取图像的最新构建版本 容器是否
我的问题是:容器是否知道更新的图像?如果没有,正确的工作流程是什么?到目前为止,我是这样做的:停止容器->删除它->从最新的图像中创建一个同名的新容器。。。。但我认为这不是正确的方法。停止运行的容器并重新启动它就足够了。它应该拾取映像的最新构建版本。停止运行的容器并重新启动它就足够了。它应该获取图像的最新构建版本 容器是否知道更新的图像 不,您的容器仍在使用图像中启动它所基于的所有内容 什么是正确的工作流程
docker rm
使用以前的容器,也可以不使用以前的容器,但如果要使用相同的容器名称运行新容器,则必须删除以前的容器
容器是否知道更新的图像
不,您的容器仍在使用图像中启动它所基于的所有内容
什么是正确的工作流程
注意:您可以
docker rm
使用以前的容器,也可以不使用以前的容器,但如果要使用相同的容器名称运行新容器,则必须删除以前的容器 容器只是一个运行进程的隔离环境,当您构建新映像时,docker将使用overlay FS并为新映像添加新层。所以对于一个运行的容器来说,它的图像是一种“静态”的东西。如果您想将图像信息传递给该进程,可以使用-e
运行容器来定义新的环境变量。非常感谢@shuzhz。你能给我指一个关于如何使用这些环境变量的教程吗?@user3727540,很乐意帮助:-)你可以参考更多细节。一个简单的例子是docker运行--rm-e“FOO=BAR”alpine:3.3 env
,它将启动一个容器,然后在其中运行命令env
,列出容器的所有环境变量并退出。您将在输出中看到FOO=BAR
。容器只是一个运行进程的隔离环境,当您构建新映像时,docker将使用overlay FS并在“写时复制”方式上为新映像添加新层。所以对于一个运行的容器来说,它的图像是一种“静态”的东西。如果您想将图像信息传递给该进程,可以使用-e
运行容器来定义新的环境变量。非常感谢@shuzhz。你能给我指一个关于如何使用这些环境变量的教程吗?@user3727540,很乐意帮助:-)你可以参考更多细节。一个简单的例子是docker运行--rm-e“FOO=BAR”alpine:3.3 env
,它将启动一个容器,然后在其中运行命令env
,列出容器的所有环境变量并退出。您将在输出中看到FOO=BAR
。