一键清理垃圾自动清理_Docker垃圾清理

一键清理垃圾自动清理_Docker垃圾清理



日常在宿主机上使用Docker对象时,如拉取镜像、长期运行或启停容器,就会产生大量的无容器依赖的 镜像、停止不用的容器,以及无容器使用的数据卷、网络等(这些Docker不会主动清理),这些Docker对 象垃圾的日积月累堆积,将会影响宿主机的运行性能,造成主机卡顿或空间资源的浪费等。因此,需要 对宿主机的垃圾进行清理。 对于每种类型的对象,Docker都提供了一个prune命令。也可以使用docker system prune一次清理多种 类型的对象。本文将说明如何使用prune命令来清理这些垃圾。 镜像清理 使用docker image prune命令清理不再使用的镜像,默认情况下,docker image prune仅清除挂起的镜 像。所谓挂起的镜像是指没有被标记且没有被任何容器引用镜像。命令如下: docker image prune 要删除现有容器未使用的所有镜像,请使用以下-a 标志: docker image prune -a 默认情况下,系统会提示y/n。要绕过提示,要使用-f或 –force标记。 还可以使用带有–filter标志的过滤表达式限制清理哪些镜像。 例如,要仅清理超过24小时前创建的镜像,命令如下: docker image prune -a –filter"until=24h" 容器清理 停止容器时一般不会自动删除容器,除非启动容器时使用了–rm标志。 要查看Docker主机上的所有容器,包括已停止的容器,可以使用如下命令: docker ps -a

STATUS为UP的容器为正在运行的容器。其他停止的容器的可写层仍占用磁盘空间。要清除这些垃圾, 可以使用如下命令: docker container prune 和清理镜像一样,可以使用 f或 –force 和 –filter参数,含义同上。 数据卷清理 同一数据卷可以被一个或多个容器使用,占用Docker主机上的空间。为防止数据被删除,Docker不会自 动删除卷。详细可参见《简述Docker数据管理》、《详解Docker数据卷》。 要删除数据卷,可以执行如下命令: docker volume prune 和清理镜像一样,可以使用 f或 –force 和 –filter参数,含义同上。 网络清理 Docker网络不会占用太多磁盘空间,但是创建了iptables 规则,桥接网络设备和路由表条目。要清理这 些内容,可以使用docker network prune清理任何容器未使用的网络。 docker network prune

和清理镜像一样,可以使用 f或 –force 和 –filter参数,含义同上。 一次性清理 docker system prune命令是清理镜像,容器、卷和网络的快捷方式。 注意:在Docker 17.06.0及更早版本中,卷也同时被清理。在Docker 17.06.1及更高版本中,docker system prune命令中必须要指定–volumes标志。这也是为保护数据的一种措施之一。 docker system prune 和清理镜像一样,可以使用 f或 –force 和 –filter参数,含义同上。

page1

page1

page1

page1

page2

page2

page2

page3

page3

page3