gpt4 book ai didi

docker - 如果 Docker 中的图像未标记,它们是完全使用还是只是孤儿?

转载 作者:IT老高 更新时间:2023-10-28 21:24:46 26 4
gpt4 key购买 nike

运行命令 docker imagesdocker images -a产生以下输出:

$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 9cbaf023786c 2 days ago 192.8 MB
$ docker images -a
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 9cbaf023786c 2 days ago 192.8 MB
<none> <none> 03db2b23cf03 2 days ago 192.8 MB
<none> <none> 8f321fc43180 2 days ago 192.8 MB
<none> <none> 6a459d727ebb 2 days ago 192.8 MB
<none> <none> 2dcbbf65536c 2 days ago 192.8 MB
<none> <none> 97fd97495e49 2 days ago 192.6 MB

图像是否标记为 <none>有什么重要的吗?如果不是:为什么它们带有我提取的标记图像?尺寸加起来还是只是重复?如果是这样,我可以删除它们而不影响我的工作吗?

最佳答案

图像文件是独立的,并通过 unionfs 魔法组合形成一个运行容器。您关心的图像通常带有令人难忘的名称。您可以删除未使用的图像,即那些对您关心的任何图像没有贡献的图像。我在 bash 中这样做:

function docker_rm_unnamed_images {
sudo docker rmi $(sudo docker images | grep '^<none>' | awk '{print $3}')
}

您可以将 docker 镜像视为“层”堆栈。每个 Dockerfile 命令都会向镜像添加一个附加层。重要的是要意识到这些命令中的每一个都会创建一个单独的图像文件。所以Dockerfile

FROM foo
RUN a
RUN b
RUN c

会是一堆

image=1 (possibly pulled from the foo registry)
image=2 (after applying a to image 1)
image=3 (after applying b to image 2)
image=4 (after applying c to image 3)

foo 图像很可能由多个其他层组成,因此您的最终图像是由 4 个或更多图像组成的堆栈。这些图像文件中的每一个都存在于您的 docker 图像注册表中。它们中的大多数都没有命名,因为它们对应于例如 RUN 命令。每个图像文件 1-4 可能都相当小(除非它们对应于 yum install p1 .. p100 例如)。它们共同构成了您最终运行的容器的文件系统。

关于docker - 如果 Docker 中的图像未标记,它们是完全使用还是只是孤儿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26405897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com