Docker(二十七)-Docker 清理占用的磁盘空间

https://www.cnblogs.com/zhuochong/p/10076599.html

docker system
docker network一系列的docker 命令 感觉挺有裨益的 去年的时候还用过 一段时间不用 忘记的干干净净了. 

1. docker system命令

docker system df命令,类似于Linux上的df命令,用于查看Docker的磁盘使用情况:

docker system dfTYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLEImages              147                 36                  7.204GB             3.887GB (53%)Containers          37                  10                  104.8MB             102.6MB (97%)Local Volumes       3                   3                   1.421GB             0B (0%)Build Cache 0B 0B

可知,Docker镜像占用了7.2GB磁盘,Docker容器占用了104.8MB磁盘,Docker数据卷占用了1.4GB磁盘。

docker system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。docker system prune -a命令清理得更加彻底,可以将没有容器使用Docker镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了…所以使用之前一定要想清楚吶。

执行docker system prune -a命令之后,Docker占用的磁盘空间减少了很多:

docker system dfTYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLEImages              10                  10                  2.271GB             630.7MB (27%)Containers          10                  10                  2.211MB             0B (0%)Local Volumes       3                   3                   1.421GB             0B (0%)Build Cache 0B 0B

2. 手动清理Docker镜像/容器/数据卷

对于旧版的Docker(版本1.13之前),是没有docker system命令的,因此需要进行手动清理。这里给出几个常用的命
删除所有关闭的容器

docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm

删除所有dangling镜像(即无tag的镜像):

docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
docker rmi $(docker images | grep "^" | awk "{print $3}")
docker rmi $(docker images | grep "none" | awk '{print $3}')

sudo docker rmi -f $(sudo docker images -a | awk {'print $3'})

删除所有dangling数据卷(即无用的volume):

docker volume rm $(docker volume ls -qf dangling=true)

3. 限制容器的日志大小

有一次,当我使用1与2提到的方法清理磁盘之后,发现并没有什么作用,于是,我进行了一系列分析。

在Ubuntu上,Docker的所有相关文件,包括镜像、容器等都保存在/var/lib/docker/目录中:

du -hs /var/lib/docker/97G   /var/lib/docker/

Docker竟然使用了将近100GB磁盘,这也是够了。使用du命令继续查看,可以定位到真正占用这么多磁盘的目录:

92G   /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f105ff5ad6c7ddae7a53

docker ps可知,nginx容器的ID恰好为a376aa694b22,与上面的目录/var/lib/docker/containers/a376aa694b22的前缀一致:

docker psCONTAINER ID        IMAGE                                       COMMAND                  CREATED             STATUS              PORTS               NAMESa376aa694b22        192.168.59.224:5000/nginx:1.12.1            "nginx -g 'daemon off"   9 weeks ago         Up 10 minutes                           nginx

因此,nginx容器竟然占用了92GB的磁盘。进一步分析可知,真正占用磁盘空间的是nginx的日志文件。那么这就不难理解了。

使用truncate命令,可以将nginx容器的日志文件“清零”:

truncate -s 0 /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f105ff5ad6c7ddae7a53/*-json.log

当然,这个命令只是临时有作用,日志文件迟早又会涨回来。要从根本上解决问题,需要限制nginx容器的日志文件大小。这个可以通过配置日志的max-size来实现,下面是nginx容器的docker-compose配置文件:

nginx:  image: nginx:1.12.1 restart: always logging: driver: "json-file" options: max-size: "5g"

重启nginx容器之后,其日志文件的大小就被限制在5GB,再也不用担心了~

4. 重启Docker

还有当我清理了镜像、容器以及数据卷之后,发现磁盘空间并没有减少。根据Docker disk usage提到过的建议,我重启了Docker,发现磁盘使用率从83%降到了19%。根据高手指点,这应该是与内核3.13相关的BUG。

转载于:https://www.cnblogs.com/jinanxiaolaohu/p/10640304.html

[转帖]Docker 清理占用的磁盘空间相关推荐

  1. 【已解决】docker overlay2占用大量磁盘空间处理方法

    在使用docker容器的时候遇到了容量上的问题,做一个记录 处理方式1: 在使用docker时,往往会出现磁盘空间不足,导致该问题的通常原因是因为docker中部署的系统输出了大量的日志内容. 此时, ...

  2. docker overlay2占用大量磁盘空间处理方法

    在使用docker时,往往会出现磁盘空间不足,导致该问题的通常原因是因为docker中部署的系统输出了大量的日志内容. 此时,可通过手动或定时任务进行清除. 针对/var/lib/docker/ove ...

  3. docker查找占用主机磁盘空间最大的容器

    docker查找占用主机磁盘空间最大的容器 1.背景 有时候我们一台主机上部署了多个容器,而且对部分数据做了持久化,时间长了,数据会越来越多,相应的可能会造成磁盘空间不足?那么我们如何,找出占用磁盘空 ...

  4. linux系统overlay文件夹爆,docker overlay2占用大量磁盘空间处理方法

    在使用docker时,往往会出现磁盘空间不足,导致该问题的通常原因是因为docker中部署的系统输出了大量的日志内容. 此时,可通过手动或定时任务进行清除. 针对/var/lib/docker/ove ...

  5. DOCKER OVERLAY2占用大量磁盘空间解决办法

    1.首先找到OVERLAY2目录 cd /var/lib/docker/overlay2 2.查看文件的大小 du -h --max-depth=1 3.查看占用空间的PID,以及对应的容器名称 do ...

  6. centos一键清理磁盘空间_如何清理 Docker 占用的磁盘空间

    Docker 很占用空间,每当我们运行容器.拉取镜像.部署应用.构建自己的镜像时,我们的磁盘空间会被大量占用. 如果你也被这个问题所困扰,咱们就一起看一下 Docker 是如何使用磁盘空间的,以及如何 ...

  7. 如何清理Docker占用的磁盘空间?

    摘要:用了Docker,好处挺多的,但是有一个不大不小的问题,它会一不小心占用太多磁盘,这就意味着我们必须及时清理. 作为一个有信仰的技术公司,我们Fundebug的后台采用了酷炫的全Docker化架 ...

  8. Docker - 清理Docker占用的磁盘空间

    通过docker重新发布一个线上jar包时,报错如下: failed to copy files: failed to copy file: Error processing tar file(exi ...

  9. 如何清理Docker占用的磁盘空间? 1

    摘要:用了 Docker,好处挺多的,但是有一个不大不小的问题,它会一不小心占用太多磁盘,这就意味着我们必须及时清理. 作为一个有信仰的技术公司,我们Fundebug的后台采用了酷炫的全 Docker ...

最新文章

  1. c语言命令行选项处理函数getopt和getopt_long() 函数使用
  2. java实现留言版并回复_Java-留言板-回复页面(JSP)
  3. 【深度学习】一文搞定面试中的优化算法
  4. 科研狗的国庆与普通人的国庆有什么不同?
  5. bzoj4543. [POI2014]Hotel加强版
  6. Unity3D面试ABC
  7. Qt绘制形状不规则窗口(二)
  8. jquery 查找祖先元素_如何获得jQuery中元素的第一个祖先
  9. PHP命令行脚本接收传入参数的三种方式
  10. MapReduce框架Hadoop应用(一)
  11. 地脚螺钉直径系列_地脚螺栓规格
  12. STM32学习笔记——HC05
  13. 2020 最新版《神经网络和深度学习》中文版.pdf
  14. autoit3转换php,autoit入门基础教程——字符串与变量转换.pdf
  15. 五猴分桃python_猴子分桃问题 | 学步园
  16. JGG | 河北大学杜会龙组综述植物泛基因组学研究
  17. STM32MP157A驱动开发 | 03-usb host接口的使用(U盘 )
  18. vue开发的音乐小播放器
  19. 洛谷P2698 [USACO12MAR]Flowerpot S
  20. 微信分享自定义多次分享设置

热门文章

  1. iOS新版微信底部返回横条问题
  2. centos7删除文件命令_干货 | 玩转云文件存储——利用CFS实现web应用的共享访问...
  3. 安卓手机阅读器_乐应用|安卓手机本地阅读的不二之选
  4. cacti安装配置详解_MySQL实战001:8.0免安装版服务配置详解
  5. 博客主题正在修改....
  6. IO_ADDRESS()的实现【转】
  7. javaScript高程笔记--最佳实践
  8. asp.net记录错误日志的方法
  9. 指针选择排序法,10个整数从小到大排序
  10. Spring学习9-MyEclipse中Spring工程使用@Resource注释的问题