删除Docker没用的镜像,容器,网络,卷,为你的主机“瘦身”

Docker采用保守的方法来清理未使用的对象(通常称为“垃圾收集”),例如图像,容器,卷和网络:除非你明确地要求Docker这样做,否则通常不会删除这些对象。这可能导致Docker占用较多额外的磁盘空间。对于每种类型的对象,Docker都提供了一个prune命令修剪一次清理多种类型的对象。本文主要说明如何使用这些prune命令。

prune 镜像

该Docker 镜像 prune命令允许你清理未使用的镜像。默认情况下,docker image prune仅清除dangling 镜像。dangling images是未标记的镜像,并且未被任何容器引用。要删除dangling images:

要删除现有容器未使用的所有镜像,请使用-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 参考。

prune 容器

停止容器时,除非使用--rm标志启动容器,否则不会自动删除容器。要查看Docker主机上的所有容器(包括已停止的容器),请使用docker ps -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 参考。

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

默认情况下,将删除所有未使用的卷。您可以使用--filter标志限制范围。例如,以下命令仅删除未使用保留标签标记的卷(下面的命令只删除未标记为保留标签的卷):

$ docker volume prune --filter"label!= keep"

其他过滤表达式可用。有关更多示例,请参阅docker volume prune 参考。

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小时的网络:

prune 一切

docker system prune命令是修剪镜像,容器,和网络的快捷方式。在Docker 17.06.0及更早版本中,卷也被修剪。在Docker 17.06.1及更高版本中,必须为docker system prune指定修剪卷的--volumes标志。

$ 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

你可能感兴趣的:(删除Docker没用的镜像,容器,网络,卷,为你的主机“瘦身”)