Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 什么是悬挂图像,什么是未使用的图像?_Docker - Fatal编程技术网

Docker 什么是悬挂图像,什么是未使用的图像?

Docker 什么是悬挂图像,什么是未使用的图像?,docker,Docker,在docker中,可以使用-a标志 删除所有未使用的图像,而不仅仅是悬挂的图像 后来 删除所有悬空图像。如果指定了-a,则还将删除未被任何容器引用的所有图像 有人能给我解释一下什么是悬空图像以及悬空图像和未使用图像之间的区别吗?未使用的图像意味着它没有在容器中分配或使用。例如,当运行docker ps-a-时,它将列出所有已退出和当前正在运行的容器。显示在任何容器内使用的任何图像都是“已用图像” 另一方面,一个悬空的图像仅仅意味着你已经创建了图像的新构建,但是没有给它一个新的名称。所以你的旧形象

在docker中,可以使用-a标志

删除所有未使用的图像,而不仅仅是悬挂的图像

后来

删除所有悬空图像。如果指定了-a,则还将删除未被任何容器引用的所有图像


有人能给我解释一下什么是悬空图像以及悬空图像和未使用图像之间的区别吗?

未使用的图像意味着它没有在容器中分配或使用。例如,当运行
docker ps-a
-时,它将列出所有已退出和当前正在运行的容器。显示在任何容器内使用的任何图像都是“已用图像”

另一方面,一个悬空的图像仅仅意味着你已经创建了图像的新构建,但是没有给它一个新的名称。所以你的旧形象就变成了“悬垂的形象”。这些旧图像是未标记的图像,当您运行
docker images
时,它们在名称上显示“


当运行
docker system prune-a
时,它将删除未使用和悬空的图像。因此,容器中使用的任何图像,无论它们是否已退出或当前正在运行,都不会受到影响。

docker中的图像由sha256摘要引用,通常称为图像id。该摘要是图像存在于docker主机上所需的全部内容。通常,您将拥有指向这些摘要的标记,例如标记busybox:latest current points to image id c30178c523。。。在我的系统上。多个标记可以指向同一个映像,任何标记都可以更改为指向不同的id,例如,当您获取busybox:latest的新副本或构建应用程序映像的新版本时

悬挂图像是指没有标签且没有子图像的图像(例如,使用busybox:latest的不同版本的
),指向它们的旧图像。他们之前可能有一个指向他们的标签,后来这个标签发生了变化。或者他们可能从未有过标记(例如,
docker build
的输出不包括标记选项)。只要没有引用旧映像id的容器仍在运行,就可以安全地删除这些文件。保留这些文件的主要原因是为了构建缓存

此外,您可能下载了容器(包括停止的容器)当前未使用的图像。这些与悬挂图像完全不同,只要您不打算在将来使用它们,或者不介意在需要时下载另一个副本,就可以安全地删除它们。

清理悬挂图像的最安全、最简单的方法 Docker图像由多个层组成。悬挂图像是与任何标记图像没有关系的层。它们不再发挥作用,并消耗磁盘空间

注意:我建议不要在生产中使用
prune
,因为
docker system prune-a
将删除容器未引用的所有图像,因此我们无法回滚到以前的版本。

要通过向
docker images
添加值为
dangling=true的过滤器标志来列出悬挂图像,请使用
-f

列出悬挂的图像 删除悬挂的图像 或

当我们运行任何cron作业来删除挂起的东西时,请使用上面的命令来确保作业成功运行。就像在詹金斯,如果我们用below运行一个自由风格的作业,即使机器中没有悬空的东西,commad作业也不会失败


这是清理悬空图像并收回磁盘空间以供使用的最安全、最简单的方法

悬挂图像是未标记的图像。下面的命令给出了悬空图像的列表

docker images --filter "dangling=true"
docker image prune
删除所有悬空图像

docker images --filter "dangling=true"
未使用的图像是具有标记但当前未用作容器的图像。你将来可能需要,也可能不需要

docker图像修剪-a
删除所有悬空图像以及未使用的图像

您通常不希望删除所有未使用的图像,直到有一段时间。因此,最好用过滤器去除

docker image prune-f--filter“until=6h”

我看到了一些有用的命令(别名)来删除悬垂的图像,这是由andyneff提供的:

第一个 清除所有悬空图像。这对于移除中间层非常有用 多个构建留下的图像。第二个是用于删除 停止集装箱运输。这些是我用于日常维护的别名

如果要删除所有缓存,首先必须确保 所有容器都将停止并移除,因为您无法移除容器 容器正在使用的图像。类似的事情

这将杀死并删除缓存中的所有图像


悬挂图像是与任何标记图像没有关系的层。它们不再发挥作用,并消耗磁盘空间

未使用的映像是尚未在容器中分配或使用的映像

列出悬空图像

docker images -f dangling=true

在图像截图中,“无”名称是悬空的图像。 悬空图像只是意味着您已经创建了图像的新构建,但没有给它起新的名称。所以你的旧形象就变成了“悬垂的形象”。这些旧图像是未标记的图像,并且在运行docker图像时在其名称上显示“”


docker system prune-a
,它将删除未使用和悬空的图像。因此,容器中使用的任何图像,无论它们是否已退出或当前正在运行,都不会受到影响。

根据文档,在运行docker prune with-a时,只会删除悬空图像-a将确保未使用的图像也被删除,对吗?这是正确的,-a将非常有趣。因此,容器可以使用悬空图像<代码>docker系统修剪--全部--过滤“直到=24小时”
保留最近的
docker images --quiet --filter=dangling=true | xargs --no-run-if-empty docker rmi
docker images --filter "dangling=true"
alias docker_clean_images='docker rmi $(docker images -a --filter=dangling=true -q)' 
alias docker_clean_ps='docker rm $(docker ps --filter=status=exited --filter=status=created -q)' 
docker kill $(docker ps -q) docker_clean_ps docker rmi $(docker images
-a -q)
docker images -f dangling=true