当我试图通过具有现有容器的docker rmi删除图像时,我会收到一条错误消息。(正常)
当我添加强制标志docker rmi -f时,图像被删除,当我使用docker ps -a检查容器状态时,容器仍然存在,但是图像名变成了ID。
我的问题是,这个身份证是从哪里来的?它是保存在缓存中并用于现有容器中的映像的副本吗?因为当我检查docker images时,我会发现一个在回购和名称中的映像,它的ID是新受旧的现有容器影响的映像。
下面的另一个问题是:一旦创建了容器,对现有(本地)映像上的任何更改是否会以任何方式影响现有容器?
谢谢。
发布于 2016-11-22 14:57:00
一个对接者图像有一个名称和一个图像ID。这个博客描述图像ID从预停靠库-v1.10开始到它之后的位置。
如果您对一个正在运行的容器使用的图像执行坞rmi -f映像,则实际上不是删除真实的映像,而是删除图像上的名称和标记。
因此,实际上,docker ps将展示:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
578e28246977 96931e4c66bd "/bin/tini -- /usr/lo" 3 minutes ago Up 3 minutes 8080/tcp, 50000/tcp drunk_shannon但是docker images仍然在展示你的形象:
<none> <none> 96931e4c66bd 6 weeks ago 711.9 MB只是没贴上标签。删除此容器后,图像也不会被删除。图像保留在列表中。您可以使用docker run -d 96931e4c66bd (通过使用ID)从它启动新容器。
你甚至可以说:
docker tag 96931e4c66bd my-jenkins:1.0比docker images显示的要好:
my-jenkins 1.0 96931e4c66bd 6 weeks ago 711.9 MB下面的另一个问题是:一旦创建了容器,对现有(本地)映像上的任何更改是否会以任何方式影响现有容器?
不,当您对映像(同名)进行“更新”时,正在运行的容器可能会丢失它的映像名(只有一个ID,就像在容器运行期间删除图像时一样)。您需要使用新映像(更新后将有另一个图像ID)重新执行run命令,以便从最新的映像中运行容器。
https://stackoverflow.com/questions/40448210
复制相似问题