摘要

在Apollo的使用过程中,会出现磁盘空间不足的情况,Apollo的官方提供的方法是删除apollo/data/log或者删除apollo/data/bag文件。但是即使删除了这些,磁盘空间并没有完全恢复。这是由于docker的一些文件占用了非常多的磁盘空间。在这里我提供了一些docker文件的清理办法。对于不再使用的对象如镜像、容器、volumes以及网络 Docker采取的是被动清理(类比垃圾回收)机制:除非使用docker提供的命令手动进行清理,否则它们一般是不会被清除掉。这些没有使用的对象当然会占用额外宝贵的空间资源。Docker为不同的对象提供了各自的对象清理命令prune;另外还提供了docker system prune命令可一次性清理多个未使用对象。今天要讨论的就是这些关于对象清理的命令:prune。(这些内容来源于网络,但是我忘记了来源,所以没有贴出网址,如果哪位作者发现是自己的原创,可以通知我,我会把引用的出处贴出来。)

Prune Images

命令 docker image prune 用以清理不再使用的docker镜像。执行docker image prune默认会清除"悬空"镜像。什么是“悬空”镜像?就是既没有标签名也没有容器引用的镜像就叫"悬空"镜像。具体操作如下:

  1. $ docker image prune
  2. WARNING! This will remove all dangling images.
  3. Are you sure you want to continue? [y/N] y

有时侯我们想要清除所有没有容器引用的镜像,增加一个 -a 标志就可以搞定:

  1. $ docker image prune -a
  2. WARNING! This will remove all images without at least one container associated to them.
  3. Are you sure you want to continue? [y/N] y

清除操作会提醒你是否真心想要清除对象,默认是选项会是yes;但是如果你嫌提示麻烦,可以通过-f 或者--force标志来进行强制清除。
    更加人性化的是,Docker提供了--filter标志筛选出想要保留的镜像。例如:只清除超过创建时间超过24小时的镜像可以这样来操作:

  1. $ docker image prune -a --filter "until=24h"

当然还能够通过其他的表达式来定制我的镜像清理计划。更多的示例参考docker image prune

Prune containers

如果容器启动时没有指定--rm选项,容器停止时是不能够自动清除的。有时候我们无所事事的敲下docker ps -a命令会惊奇的发现,天哪,居然有这么多容器,有运行着的也有停止了的。它们是哪里来的?它们到底还有没有人在关注?这种情况在一个开发环境上尤其常见。要知道,即使容器已经停掉了也会占用空间资源。好吧,让我们用 docker container prune命令来结束这些一团糟的东西吧:

  1. $ docker container prune
  2. WARNING! This will remove all stopped containers.
  3. Are you sure you want to continue? [y/N]

和镜像清理的情况一样,也会有提示信息告诉你是否继续,默认是yes;如果提示信息烦到了你的话就加上 -f 或者 --force标志强制清除就可以了。
    默认情况下docker container prune命令会清理掉所有处于stopped状态的容器;如果不想那么残忍统统都删掉,也可以使用--filter标志来筛选出不希望被清理掉的容器。下面是一个筛选的例子,清除掉所有停掉的容器,但24内创建的除外:

  1. $ docker container prune --filter "until=24h"

其他的筛选条件的实现可以参考:docker container prune reference, 这里有更多的详细的例子。

prune volumes

Volumes可被一个或多个容器使用会消耗host端的空间,但它不会自动清理,因为那样就有可能破坏掉有用的数据。

  1. $ docker volume prune
  2. WARNING! This will remove all volumes not used by at least one container.
  3. Are you sure you want to continue? [y/N] y

和conatiner一样,手动清理Volume时会有提示信息,增加-f 或--force标志可以跳过提示信息直接清理。使用过滤参数--filter来筛选出不希望清理的无用Volume,否则默认会将所有没有使用的volumes都清理掉。下面的例子演示了除lable=keep外的volume外都清理掉(没有引用的volume):

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

其他的筛选条件的实现可以参考:docker volume prune reference,这里给出了更多参考示例。

prune networks

虽然Docker networks占用的空间不多,但是它会创建iptable 规则、虚拟网桥设备以及路由表项,有洁癖的你看到这么多"僵尸"对象会不会抓狂?当然,我们还是要用清理神器:docker network prune 来清理没有再被任何容器引用的networks:

  1. $ docker network prune
  2. WARNING! This will remove all networks not used by at least one container.
  3. Are you sure you want to continue? [y/N] y

可以通过 -f 或者 --force标志跳过提示信息来强制执行该命令。默认情况会清除所有没有再被引用的networks,如果想要过滤一些特定的networks,可以使用--filter来实现。下面这个例子就是通过--filter来清理没有被引用的、创建超过24小时的networks:

  1. $ docker network prune --filter "until=24h"

更多关于docker network的--filter的筛选条件可参考示例:docker network prune reference 。

prune everything

如题,这里要讲的就是清理everything:images ,containers,networks一次性清理操作可以通过docker system prune来搞定。在Docker 17.06.0 以及更早的版本中,这个docker system prune也会将volume一起清理掉;在Docker 17.06.1以及后期的版本中则必须要手动指定--volumes标志才能够清理掉volumes:

  1. $ docker system prune
  2. WARNING! This will remove:
  3. - all stopped containers
  4. - all networks not used by at least one container
  5. - all dangling images
  6. - all build cache
  7. Are you sure you want to continue? [y/N] y

在Docker 17.06.1或更高版本中添加--volumes标志的情况:

  1. $ docker system prune --volumes
  2. WARNING! This will remove:
  3. - all stopped containers
  4. - all networks not used by at least one container
  5. - all volumes not used by at least one container
  6. - all dangling images
  7. - all build cache
  8. Are you sure you want to continue? [y/N] y

Apollo深度磁盘清理的更多相关文章

  1. 如何在Windows Server 2008 R2没有磁盘清理工具的情况下使用系统提供的磁盘清理工具

    今天,刚好碰到服务器C盘空间满的情况,首先处理了临时文件和有关的日志文件后空间还是不够用,我知道清理C盘的方法有很多,但今天只分享一下如何在Windows Server 2008 R2没有磁盘清理工具 ...

  2. Windows Server 2012 为什么没有“磁盘清理”选项了?

    用习惯了客户端版的Windows,对于磁盘清理想必大家都不会陌生,他具有安全.快捷.准确.集中化的删除系统中的临时文件.管理系统还原卷影副本.添加删除程序的快捷入口等便捷功能,而在Server版的Wi ...

  3. 如何给Windows Server 2012 R2 添加“磁盘清理”选项

    最近想做一个试验,把我的Windows Server 2008 R2 升级为Server 2012 R2,因为手头没有Raid卡和网卡的驱动,所以做了升级安装,于是那个讨厌的Windows.old出现 ...

  4. etcd磁盘清理步骤

    etcd默认的空间配额限制为2G,超出空间配额限制就会影响服务,所以需要定期清理 以下是etcd磁盘清理的步骤: 1. 显示空间配额: ETCDCTL_API=3 etcdctl --endpoint ...

  5. 释放你的硬盘空间!——Windows 磁盘清理技巧

    引言 用了Windows系统的各位都知道,作为系统盘的C盘的空间总是一天比一天少.就拿本人的例子来说,自从安装了Win10,就发现,C盘从一开始的10几G占用,到现在慢慢变成了20G.30G….占用只 ...

  6. Mac磁盘清理工具——CleanMyMac

    许多刚从Windows系统转向Mac系统怀抱的用户,一开始难免不习惯,因为Mac系统没有像Windows一样的C盘.D盘,分盘分区明显.因此这也带来了一些问题,关于Mac的磁盘的清理问题,怎么进行清理 ...

  7. linux centos 磁盘清理

    执行df -h 与 du -sh / 所查询到的已用容量不对应 执行xfs_fsr来清理磁盘 参考 https://www.jianshu.com/p/0ded68808123

  8. centos 磁盘清理 /dev/vda1系统盘满了

    df   -h   检查一台服务器磁盘使用空间,发现磁盘已经使用了100% 思路是: 1.cd /usr   当然这里不一定是/usr目录,最好是cd到 根目录再执行下一步 2.du -sh * 看哪 ...

  9. linux磁盘清理记录

    执行df -h查看自己的数据磁盘到达97% 使用du -h --max-depth=1  查看数据占用较大的文件 清理记录 1.mysql慢查询日志 # mv slow.log slow.log.ba ...

随机推荐

  1. 分布式微服务技术之 Spring Cloud Netflix

    1 背景 Netflix 是全球十大视频网站中唯一收费站点,是美国互联网流媒体播放商,由于访问量巨大,转型为云计算公司. 由Netflix公司主持开发了一套代码框架和库Netflix OSS即open ...

  2. Springboot @ResponseBody返回中文乱码

    最近我在把Spring 项目改造Springboot,遇到一个问题@ResponseBody返回中文乱码,因为response返回的content-type一直是application/json;ch ...

  3. uwsgi/uWSGI/WSGI简介

    参考文章 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换.z WSGI是一种Web服务器网 ...

  4. Linux VPS主机利用Crontab实现定时重启任务

    第一.安装Crontab可执行环境 一般的VPS/服务器是支持的,但是有些可能没有支持就需要我们来给予安装. A - centos系统 #安装Crontab yum install vixie-cro ...

  5. LeetCode赛题391----Perfect Rectangle

    #391. Perfect Rectangle Given N axis-aligned rectangles where N > 0, determine if they all togeth ...

  6. Android深入四大组件(五)Android8.0 根Activity启动过程(后篇)

    前言 在几个月前我写了Android深入四大组件(一)应用程序启动过程(前篇)和Android深入四大组件(一)应用程序启动过程(后篇)这两篇文章,它们都是基于Android 7.0,当我开始阅读An ...

  7. SpringBoot访问html访问不了的问题

    springboot默认是不支持jsp的 注意pom.xml是否添加了thymeleaf的依赖 <dependency> <groupId>org.springframewor ...

  8. maven-windows使用

    目录 前言 安装 配置镜像 idea配置Maven 私服 安装到centos 访问 客户端配置私服 idea修改指定pom 项目发布到私服 jar包会自动从私服下载 从客户端导入第三方jar包 前言 ...

  9. mssql修改id

    alter   table   image   alter   column   id     int   IDENTITY   (1,   1)   NOT   NULL 我只能上查询分析器,所以只 ...

  10. CALayer动画的暂停,恢复,以及结束时候的回调

    CALayer动画的暂停,恢复,以及结束时候的回调 源码如下: // // ViewController.m // AnimationLineView // // Created by YouXian ...