Docker主机磁盘垃圾清理
思韵闪耀
2020-12-30
0

  对于Docker来说,存在镜像、容器、存储卷和网络这些对象。因此,也就会生产相对应的这些对象,这些对象会占据磁盘空间。当这些对象不在被使用时,为了不占据额外的磁盘空间,就需要对这些对象进行清理,即进行垃圾清理。在docker 1.13版本之后,提供了对各种对象的prune命令,也提供了清理所有对象类型的docker system prune命令。但在docker 1.13之前的版本,则需要提供其他方式进行垃圾清理。

一、docker v1.13之后版本的垃圾清理

1.1 容器

  在停止容器时,系统并不会知道删除这个容器,除非在运行此容器时设置了–rm字段。停止后的容器仍然会占据磁盘的存储空间,通过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"

1.2 镜像

  通过执行docker images prune命令可以清除所有不再使用的镜像,默认情况下此命令仅仅清除状态为dangling的镜像。状态为dangling的镜像为未被打标签和没有被任何容器引用的镜像。

$ 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"

1.3 存储卷

  存储卷可以被一个或者多个容器使用,也会占据磁盘空间。为保持数据,存储卷永远都不会自动被删除。

$ 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字段,来过滤所要删除的存储卷。例如,下面的命令仅仅删除label值为keep的存储卷。

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

1.4 网络

  docker网络并不会占据磁盘空间,但是会创建iptables规则,桥网络设备和路由表。因此,但如何不再使用这些资源时,应该对其进行清理。

$ 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"

1.5 删除所有的对象

  通过docker system prune命令能够快速的删除所有的未被使用的对象,包括镜像、容器、网络和存储卷。在docker 17.06.0之前,存储卷会同时被清理。在docker 17.06.1之后,需要通过设置–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 v1.13之前版本的垃圾清理

2.1 容器

  在停止容器时,系统并不会知道删除这个容器,除非在运行此容器时设置了–rm字段。停止后的容器仍然会占据磁盘的存储空间,通过docker rm能够删除这些被停止后的容器。通过下面的命令能够清除所有已停止的容器。

$ docker rm $(docker ps -a -q)

2.2 镜像

  通过执行docker rmi命令可以清除所有不再使用的镜像,一般情况下仅仅清除状态为dangling的镜像。状态为dangling的镜像为未被打标签和没有被任何容器引用的镜像。

$ docker rmi $(docker images -q -f "dangling=true")

2.3 存储卷

  存储卷可以被一个或者多个容器使用,也会占据磁盘空间。为了保持数据,存储卷永远都不会自动被删除。

$ docker volume rm $(docker volume ls -q -f dangling=true)

 

参考文献:

  1.《docker container prune》地址:https://docs.docker.com/engine/reference/commandline/container_prune/

  2.《Prune unused Docker objects》地址:https://docs.docker.com/config/pruning/

  3.《docker image prune》地址:https://docs.docker.com/engine/reference/commandline/image_prune/

  4.《docker volume prune》地址:https://docs.docker.com/engine/reference/commandline/volume_prune/

  5.《docker network prune》地址:https://docs.docker.com/engine/reference/commandline/network_prune/

【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

WAN

相关内容

续订Exchange Se...
每个证书都有内置的到期日期。 在Exchange Server中,...
2022-09-16
SkidMap病毒利用Re...
摘要 利用redis未授权访问漏洞入侵云主机; 下载门罗币、莱特币...
2022-04-09
如果在crontab -e...
今天登录服务器,发现之前所有的计划任务都不见了 然后尝试添加 [r...
2022-04-09
了解SQL Server中...
Terabytes of data, millions ofrow...
2022-02-24
sql数据库分离附加_使用...
sql数据库分离附加_使用分离和附加方法移动SQL数据库 sql数...
2022-01-11
免费下载 Windows ...
免费下载 Windows 8.1 Update 1 (KB2919...
2022-01-09

热门资讯

docker的daemon.j... docker的daemon.json文件以及key,json文件的作用 1.静态的镜像文件转为动态容...
使用docker部署社区版on... 操作系统: centos7 3.10.0-514.26.2.el7.x86_64 docker版本:...
修改Docker config... 修改Docker config文件的坑 有一个容器之前只开了一个端口,现在要多开一个端口。 首先关闭...
Windows Server ... 一、 打开windows PowerShell,输入以下命令进行安装Docker 1)安装onege...
windows10 彻底卸载 ... 删除docker程序 记事本新建脚本文件 a.ps1,内容如下: $ErrorActionPrefe...
使用Docker部署ONLYO... 推荐服务器配置 RAM : 4 GB+ CPU : 双核 2 GHz + Swap : 至少2 GB...
Winserver 2019 ... 引言 :对于 在winserver 2019上安装docker ,官方有说明,网上也有教程,但是大部...
如何查看一个docker镜像有... 如何查看一个docker镜像有哪些版本 如何查看一个docker镜像有哪些版本 要想查看镜像的版本和...
查看已下载的Docker镜像l... 命令格式:docker image inspect (docker image名称):latest|...
seafile6.1.1部署o... seafile6.1.1部署onlyoffice后中文乱码解决办法 首先感谢cool_ccr,按这个...