互联网技术 / 互联网资讯 · 2024年1月6日

云计算核心技术教程:清理未使用的 Docker 对象

Docker 采用一种保守的清理策略:除非明确请求,否则不会删除未使用的对象,如镜像、容器、卷和网络。这意味着系统会继续占用磁盘空间。针对每种对象类型,Docker 提供相应的 prune(清理)命令。你也可以通过 docker system prune 一次性清理多种类型的对象。本教程将演示如何使用这些 prune 命令。

清理镜像

docker image prune 命令用于清除未使用的镜像。默认情况下,该命令只会移除悬空镜像,即未打标签且不被任何容器引用的镜像。要删除悬空镜像,请执行:

$ docker image prune

警告!此操作将移除所有悬空镜像。

你真的要继续吗?[y/N] y

要删除现有容器未使用的所有镜像,请使用 -a 标志:

$ docker image prune -a

警告!此操作将移除没有至少一个容器关联的所有镜像。

你确定要继续吗?[y/N] y

默认情况下,系统会提示你继续。若要跳过提示,请使用 -f 或 –force 标志。

还可以使用 –filter 标志配合筛选表达式来限定要修剪的镜像。例如,仅修剪创建时间超过 24 小时的镜像:

$ docker image prune -a –filter “until=24h”

清理容器

停止的容器在未被显式删除前不会自动消失,除非你在停止时使用 –rm 选项。要查看主机上所有容器(包括已停止的容器),请运行 docker ps -a。你可能会惊讶地发现开发环境中有大量容器,已停止的容器的写入层仍然占用磁盘空间。为了解决这个问题,可以使用 docker container prune 命令。

$ docker container prune

警告!此操作将删除所有已停止的容器。

你确定要继续吗?[y/N] y

默认情况下,系统会提示你继续。若要跳过提示,请使用 -f 或 –force 标志。

默认情况下,所有已停止的容器将被删除。你也可以使用 –filter 标志来限制作用范围。例如,以下命令仅删除停止时间超过 24 小时的容器:

$ docker container prune –filter “until=24h”