Docker主机磁盘垃圾清理

  对于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/

                                --- END ---

原文地址:https://www.cnblogs.com/LangXian/p/10645898.html

时间: 2024-10-05 20:10:34

Docker主机磁盘垃圾清理的相关文章

(转)Docker磁盘垃圾清理

文章转自https://mp.weixin.qq.com/s/S8ZjGZF8oLC8c1JRnkE5yw?tdsourcetag=s_pctim_aiomsg 1.整体分析 对于Docker来说,存在镜像.容器.存储卷和网络这些对象.因此,也就会生产相对应的这些对象,这些对象会占据磁盘空间.当这些对象不在被使用时,为了不占据额外的磁盘空间,就需要对这些对象进行清理,即进行垃圾清理.在docker 1.13版本之后,提供了对各种对象的prune命令,也提供了清理所有对象类型的docker sys

Docker磁盘垃圾清理

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

其实Mac垃圾清理软件并没有那么可怕

首先也是最重要的一条,不要使用盗版.据我所知市面上见到的盗版cmm是破解以后安装好就可以直接使用的,不需要序列号激活. 作为对盗版软件有高度洁癖而成为厌恶盗版的最大原因的我来说,我很清楚这类被网上非开发者改来改去的程序有多复杂.不可预测.它的扫描和清理方式可能和正版不一样,甚至存在后门,不仅不能正确清理你的电脑,反而会把系统搞乱甚至破坏系统. 所以希望大家去cleanmymac官网下载使用. 另外建议大家使用最新版本的cmm3,不要使用旧版本. 接下来就是怎样正确地清理了.cmm3提供了一个"自

WIN 7 系统垃圾清理.bat

1.新建txt文件 2.复制下面的内容到txt文件中 3.修改文件名为 WIN 7 系统垃圾清理.bat,然后执行该文件即可. @echo off color 0becho ==================================================================echo 您已启动 WIN 7 系统垃圾清理 ,这里运行的命令都很安全!echo ========================================================

系统垃圾清理利器CCleaner v5.30.6063绿色单文件版(增强版)

系统垃圾清理利器CCleaner现已更新至v5.30.6063,此次更新为Edge.IE浏览器提供了更好的清理功能,更新了Windows Explorer MRU清理功能,同时改善了应用程序中的SSD检测.5.0版全新Modren UI界面设计,简洁大气!内部框架大优化,性能大提升!支持主动防御及监控! CCleaner是梨子公司Piriform最为著名广受好评的软件,系统垃圾清理工具,免费的系统清理优化和隐私保护工具,也是该公司主打和首发产品!它体积小巧.运行速度极快,具有强大的自定义清理规则

Ubuntu 垃圾清理与内核清理

Ubuntu 垃圾清理可以依次采用如下命令 sudo apt-get clean sudo apt-get autoremove sudo apt-get autoclean Ubuntu 内核清理流程 1. 查看所有内核 dpkg --get-selections | grep linux 2. 查看当前内核 uname -a 3. 清理老内核 sudo apt-get remove linux-headers--*** linux-image--*** 4. 更新内核列表grub sudo

垃圾清理

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Diagnostics;using System.IO; //使用C#调用BAT文件实现垃圾清理并显示清理结果//作者:秦

【R笔记】R的内存管理和垃圾清理

R输入命令时速度不要太快,终究是个统计软件,不是编程! 写R程序的人,相信都会遇到过“cannot allocate vector of size”或者“无法分配大小为...的矢量”这样的错误.原因很简单,基本都是产生一个大矩阵等对象时发生的,最干脆的解决办法有两种,第一种是加大内存换64位系统,第二种是改变算法避免如此大的对象.第一种办法,是最好的办法,不过大对象的需求是没有止尽的,终究不是长久之道.第二种办法是最好的思路,无论多么大的对象都是可以弄小的,无非就是分而治之.时间换空间等,对算法

金山毒霸垃圾清理

金山毒霸-垃圾清理-单文件封装,清洁洁癖的爱好! 实话,金山的软件确实不错.展望金山可以在软件行业,做出让世界都使用的.为国人扛起一片天 下载地址: http://pan.baidu.com/s/1dFa7GdV