为什么 docker prune 不删除我的悬挂图像?

sim*_*mon 22 docker

文档说 docker prune “删除所有悬空图像”。它甚至发出警告“这将删除所有悬挂的图像”。那么为什么它不删除我的呢?

 ubuntu@ip-172-31-26-48:~$ docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0 B
ubuntu@ip-172-31-26-48:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
simonm3/registrm    latest              bd3ef6d73785        7 minutes ago       468 MB
simonm3/registr     latest              7dd15943671b        2 hours ago         2.51 GB
simonm3/registrm    <none>              f8f22986e85a        45 hours ago        2.93 GB
simonm3/registrm    <none>              c1b9d8606371        45 hours ago        2.93 GB
simonm3/registrm    <none>              f1ca97467106        45 hours ago        2.93 GB
simonm3/registr     <none>              6a5af88f93a7        45 hours ago        4.42 GB
simonm3/registrm    <none>              93dc81b0fa7a        45 hours ago        2.93 GB
simonm3/registrm    <none>              dbc50510d499        45 hours ago        2.93 GB
simonm3/registr     <none>              0101ca5d4a25        45 hours ago        4.42 GB
simonm3/registrm    <none>              d8f85df39f0a        46 hours ago        2.93 GB
simonm3/registrm    <none>              053892e9798b        46 hours ago        2.93 GB
simonm3/registrm    <none>              3845056cf241        46 hours ago        2.92 GB
simonm3/registr     <none>              349ef3c589bd        46 hours ago        4.42 GB
simonm3/registrm    <none>              5dcbb0db4710        2 days ago          2.92 GB
simonm3/registr     <none>              e403f74861f6        2 days ago          4.32 GB
simonm3/registr     <none>              c12ca8819c24        5 days ago          4.32 GB
simonm3/registrm    <none>              4bb8ed8154b7        6 days ago          2.92 GB
ubuntu@ip-172-31-26-48:~$ docker images -q -f dangling=true
f8f22986e85a
c1b9d8606371
f1ca97467106
6a5af88f93a7
93dc81b0fa7a
dbc50510d499
0101ca5d4a25
d8f85df39f0a
053892e9798b
3845056cf241
349ef3c589bd
5dcbb0db4710
e403f74861f6
c12ca8819c24
4bb8ed8154b7
Run Code Online (Sandbox Code Playgroud)

dam*_*amd 29

我的问题是我误解了“悬挂图像”的实际含义。我想删除所有未使用的图像,而不仅仅是悬空的图像。

  • 未使用的映像是当前未分配给任何容器的映像。
  • 悬空图像是尚未标记的图像。请记住,Docker 镜像是通过它们的 sha256 摘要来识别的,而不是它们的标签。

我实际上想删除所有未使用的 Docker 映像,您需要使用-a/--all来实现这些映像。

$ docker help image prune

Usage:  docker image prune [OPTIONS]

Remove unused images

Options:
  -a, --all             Remove all unused images, not just dangling ones
      --filter filter   Provide filter values (e.g. 'until=<timestamp>')
  -f, --force           Do not prompt for confirmation
Run Code Online (Sandbox Code Playgroud)

换句话说,我的解决方案是:

$ docker image prune -a
Run Code Online (Sandbox Code Playgroud)


小智 18

Docker 不会删除仍然包含容器的悬挂镜像,即使它们不再运行。首先用于docker container prune删除已停止的容器,然后docker image prune将删除已修剪的容器所依赖的悬空图像。


vmo*_*eco 0

我认为这是因为这些可能是某些图像构建的中间图像。

因此并不是真正悬挂的图像。

  • 它们在上面发出的最后一个命令中被列为悬空。它们是两个“最新”图像的旧版本。肯定是悬着的。 (2认同)