如何删除所有未使用的 Docker 镜像

Docker 是一个开源容器化平台,可让我们快速构建、测试和部署应用程序作为可在任何地方运行的便携式容器。
在这个快速教程中,我们将展示如何删除 Docker 中所有悬空、未标记和未使用的图像。
此外,如何通过 ID 或者使用过滤器删除一个或者多个图像。

删除 Docker 镜像

删除一个或者多个镜像

要删除一个或者多个 Docker 镜像,请使用 docker images ls命令来查找要删除的镜像的 ID。

$docker image ls
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
centos                  latest              15835a67d134        7 days ago          200MB
ubuntu                  latest              3a4cca5ac898        2 months ago        111MB
java                    8-jre               e44d62cf8862        2 months ago        311MB

找到要删除的图像后,请使用 rm命令后跟 IMAGE ID 。
例如,要删除上面输出中列出的前两个图像,请运行:

$docker image rm 15835a67d134 3a4cca5ac898

如果我们收到类似于下图所示的错误,则表示现有容器正在使用该镜像。
要删除图像,我们必须先删除容器。

Error response from daemon: conflict: unable to remove repository reference "ubuntu" (must force) - container bd20b396a061 is using its referenced image 3a4cca5ac898

删除悬空图像

悬空图像是未标记且未被任何容器使用的图像。
要删除悬空图像和未使用的图像,请运行以下命令:

$docker image prune

系统会提示我们继续,使用 -f或者 --force标志绕过提示。

WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y

删除悬空图像时,如果我们构建的图像没有标记,它们也会被删除。

删除所有未使用的图像

要删除任何现有容器未引用的所有图像,而不仅仅是悬空的图像,请使用带有 -a标志的 prune命令:

% docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y

使用过滤器删除图像

使用 docker image prune命令,我们还可以使用过滤标志 --filter根据特定条件删除图像。

当前支持的过滤器是 untillabel
我们可以通过使用多个 --filter标志来使用多个过滤器。

例如,要删除超过 24 小时前创建的所有图像,请运行以下命令:

$docker image prune -a --filter "until=24h"
日期:2020-06-02 22:18:45 来源:oir作者:oir