当前位置: 首页 > 知识库问答 >
问题:

如果Docker中的图像没有标记,它们是被使用还是只是孤儿?

慎星纬
2023-03-14

运行命令docker图像docker图像-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

图像是否已标记


共有2个答案

漆雕欣德
2023-03-14

要删除所有未标记的图像,需要其他选项:

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

选项'-a':显示所有图像,包括未标记的图像

胥和悌
2023-03-14

图像文件是独立的,并通过unionfs magic组合成一个运行的容器。你所关心的图像通常都标有令人难忘的名字。您可以删除未使用的图像,即那些对您关心的任何图像没有贡献的图像。我在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)。它们共同构成了最终运行的容器的文件系统。

 类似资料:
  • 问题内容: 第一次阅读时我听说标记: http://slf4j.org/faq.html 我检查 Logger 对象的可用方法: http://www.slf4j.org/api/org/slf4j/Logger.html http://logging.apache.org/log4j/2.x/log4j-api/apidocs/org/apache/logging/log4j/Logger.ht

  • 我第一次听说记号是在看书的时候: http://slf4j.org/faq.html 我检查了Logger对象的可用方法: null null 我从以下方面获得了更深入的信息: http://logback.qos.ch/manual/filters.html 但我还是一头雾水...请注意,我问的是为什么,而不是如何使用它们,所以这不是: null

  • 我想通过docker compose构建图像,并为其设置特定标记。文件说: Comment将构建并用生成的名称标记它,然后使用该映像。 但是我找不到指定标签的方法,对于构建的图像,我总是看到“最新”标签。

  • 我正试图确切地理解什么是记忆障碍。根据我目前所知,使用内存屏障(例如:mfence)来防止指令从之前到之后和从之后到之前的重新排序。 这是正在使用的内存屏障的一个示例: 现在我的问题是:mfence指令是否只是一个指示CPU以何种顺序执行指令的标记?或者,它是CPU实际执行的指令,就像它执行其他指令一样(例如:)。

  • 问题内容: 我们正处于一个新项目的开始,我们真的想知道是否应该在MySQL中使用存储过程。 我们将仅使用存储过程来插入和更新业务模型实体。有几个表代表一个模型实体,我们将在那些存储过程的插入/更新中对其进行抽象。 另一方面,我们可以从Model层调用插入和更新,但是不能在MySQL中,而是在PHP中。 根据您的经验, 哪个是最佳选择? 两种方法的优点和缺点。就高性能而言,哪个是最快的? PS:这是

  • 我很好奇AngularJS中的装饰师到底是什么。除了AngularJS文档中的一个简介和youtube视频中的一个简短(尽管很有趣)提及之外,对于装饰师来说,网上没有太多信息。 正如棱角分明的人所说,装饰师是: 服务的装饰,允许装饰者拦截服务实例的创建。返回的实例可以是原始实例,也可以是委托给原始实例的新实例。 我真的不知道这意味着什么,我也不知道你为什么要把这个逻辑从服务本身中分离出来。例如,如