©
本文档使用 PHP中文网手册 发布
Docker对未使用的对象%28(通常称为“垃圾收集”%29)采取保守的清理方法,例如图像、容器、卷和网络:除非明确要求Docker这样做,否则通常不会删除这些对象。这可能导致Docker使用额外的磁盘空间。对于每种类型的对象,Docker提供了一个prune
命令。此外,您还可以使用docker system prune
一次清除多种类型的对象。本主题演示如何使用这些prune
命令。
大docker image prune
命令允许您清理未使用的图像。默认情况下,docker image prune
只清理悬吊图像。悬空图像是没有标记的,也没有被任何容器引用的图像。若要删除悬挂的图像,请执行以下操作:
$ docker image prune WARNING! This will remove all dangling images.Are you sure you want to continue? [y/N] y
若要删除现有容器未使用的所有图像,请使用-a
国旗:
$ 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
默认情况下,将提示您继续。若要绕过提示符,请使用-f
或--force
旗子。
使用过滤表达式,可以限制哪些图像被剪除。--filter
旗子。例如,仅考虑24小时前创建的图像:
$ docker image prune -a --filter "until=24h"
还有其他过滤表达式可用。见docker image prune
参照系想要更多的例子。
停止容器时,除非使用--rm
旗子。若要查看Docker主机上的所有容器,包括已停止的容器,请使用docker ps -a
您可能会惊讶于有多少容器存在,特别是在开发系统%21 A中,停止容器的可写层仍然占用磁盘空间。若要清除此问题,可以使用docker container prune
命令。
$ docker container prune WARNING! This will remove all stopped containers.Are you sure you want to continue? [y/N] y
默认情况下,将提示您继续。若要绕过提示符,请使用-f
或--force
旗子。
默认情况下,所有已停止的容器都将被移除。可以使用--filter
旗子。例如,下面的命令只删除已停止的容器,这些容器的时间超过24小时:
$ docker container prune --filter "until=24h"
还有其他过滤表达式可用。见docker container prune
参照系想要更多的例子。
卷可以由一个或多个容器使用,并占用Docker主机上的空间。卷永远不会自动删除,因为这样做会破坏数据。
$ docker volume prune WARNING! This will remove all volumes not used by at least one container.Are you sure you want to continue? [y/N] y
默认情况下,将提示您继续。若要绕过提示符,请使用-f
或--force
旗子。
默认情况下,将删除所有未使用的卷。可以使用--filter
旗子。例如,下面的命令只删除未使用keep
标签:
$ docker volume prune --filter "label!=keep"
还有其他过滤表达式可用。见docker volume prune
参照系想要更多的例子。
Docker网络占用的磁盘空间不多,但它们确实创建了iptables
规则、桥接网络设备和路由表条目。要清理这些东西,你可以用docker network prune
清理没有被任何容器使用的网络。
$ docker network prune WARNING! This will remove all networks not used by at least one container.Are you sure you want to continue? [y/N] y
默认情况下,将提示您继续。若要绕过提示符,请使用-f
或--force
旗子。
默认情况下,所有未使用的网络都将被删除。可以使用--filter
旗子。例如,以下命令只删除24小时以上的网络:
$ docker network prune --filter "until=24h"
还有其他过滤表达式可用。见docker network prune
参照系想要更多的例子。
大docker system prune
命令是修剪图像、容器和网络的快捷方式。在Docker 17.06.0和更早版本中,卷也会被修剪。在Docker 17.06.1及更高版本中,必须指定--volumes
旗docker system prune
修剪卷。
$ docker system prune WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all dangling images - all build cache Are you sure you want to continue? [y/N] y
如果您使用的是Docker 17.06.1或更高版本,并且希望也修剪卷,请添加--volumes
国旗:
$ docker system prune --volumes WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all volumes not used by at least one container - all dangling images - all build cache Are you sure you want to continue? [y/N] y
默认情况下,将提示您继续。若要绕过提示符,请使用-f
或--force
旗子。