Docker(二十七)-Docker 清理占用的磁盘空间
1. docker system命令
docker system df命令,类似于Linux上的df命令,用于查看Docker的磁盘使用情况:
| docker system df | 
可知,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 df | 
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}") | 
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/ | 
Docker竟然使用了将近100GB磁盘,这也是够了。使用du命令继续查看,可以定位到真正占用这么多磁盘的目录:
| 92G /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f105ff5ad6c7ddae7a53 | 
由docker ps可知,nginx容器的ID恰好为a376aa694b22,与上面的目录/var/lib/docker/containers/a376aa694b22的前缀一致:
| docker ps | 
因此,nginx容器竟然占用了92GB的磁盘。进一步分析可知,真正占用磁盘空间的是nginx的日志文件。那么这就不难理解了。
使用truncate命令,可以将nginx容器的日志文件“清零”:
| truncate -s 0 /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f105ff5ad6c7ddae7a53/*-json.log | 
当然,这个命令只是临时有作用,日志文件迟早又会涨回来。要从根本上解决问题,需要限制nginx容器的日志文件大小。这个可以通过配置日志的max-size来实现,下面是nginx容器的docker-compose配置文件:
| nginx: | 
重启nginx容器之后,其日志文件的大小就被限制在5GB,再也不用担心了~
4. 重启Docker
还有当我清理了镜像、容器以及数据卷之后,发现磁盘空间并没有减少。根据Docker disk usage提到过的建议,我重启了Docker,发现磁盘使用率从83%降到了19%。根据高手指点,这应该是与内核3.13相关的BUG。
Docker(二十七)-Docker 清理占用的磁盘空间的更多相关文章
- [转帖]Docker 清理占用的磁盘空间
		Docker(二十七)-Docker 清理占用的磁盘空间 https://www.cnblogs.com/zhuochong/p/10076599.html docker system docker ... 
- 如何清理Docker占用的磁盘空间?
		摘要:用了 Docker,好处挺多的,但是有一个不大不小的问题,它会一不小心占用太多磁盘,这就意味着我们必须及时清理. 作为一个有信仰的技术公司,我们Fundebug的后台采用了酷炫的全 Docker ... 
- 如何清理Docker占用的磁盘空间?(转载)
		本文转载自https://blog.fundebug.com/2018/01/10/how-to-clean-docker-disk/ , 感谢原作者. 摘要:用了Docker,好处挺多的,但是有一个 ... 
- Harbor删除镜像后且GC清理后,磁盘空间没有释放的问题
		1.原因 Harbor删除镜像后且GC清理后,磁盘空间没有释放.因为我们push大量相同标签的镜像,Docker 镜像由标签引用,并由唯一的摘要标识.这意味着如果myImage使用标记推送两个图像,在 ... 
- 如何统计TFS代码库中的团队项目所占用的磁盘空间
		在一个开发团队较多的研发中心,当开发人员的代码数据积累到一定程度,TFS系统的磁盘空间的使用率会逐渐成为系统管理员关注的问题.你可能会关注代码库中每个团队项目,甚至每个目录占用的的磁盘空间.不幸的,即 ... 
- 华为集群后killsql命令和查看mr占用的磁盘空间
		(1) linux后台:yarn application -list 找到相应的命令 粘贴job (2)去FI manager 的 yarn上粘贴job 看详细过程 (3)确定后 在linux后台 y ... 
- 如何清理 Docker 占用的磁盘空间
		Docker 很占用空间,每当我们运行容器.拉取镜像.部署应用.构建自己的镜像时,我们的磁盘空间会被大量占用. 如果你也被这个问题所困扰,咱们就一起看一下 Docker 是如何使用磁盘空间的,以及如何 ... 
- 清理 Docker 占用的磁盘空间
		Docker 很占用空间,每当我们运行容器.拉取镜像.部署应用.构建自己的镜像时,我们的磁盘空间会被大量占用. 如果你也被这个问题所困扰,咱们就一起看一下 Docker 是如何使用磁盘空间的,以及如何 ... 
- Docker(二十)-Docker容器CPU、memory资源限制
		背景 在使用 docker 运行容器时,默认的情况下,docker没有对容器进行硬件资源的限制,当一台主机上运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU.内存和磁盘资源.如果不 ... 
随机推荐
- go标准库的学习-hash
			参考:https://studygolang.com/pkgdoc 导入方式: import "hash" hash包提供hash函数的接口. type Hash type Has ... 
- solidity数据位置-memory,storage和calldata
			有三种类型,memory,storage和calldata,一般只有外部函数的参数(不包括返回参数)被强制指定为calldata.这种数据位置是只读的,不会持久化到区块链 storage存储或memo ... 
- springboot读取配置文件的顺序(转)
			也就是说:springboot会默认先加载项目外部的配置文件,覆盖内部的配置文件!所以导致项目一直使用的错误的配置! 强烈建议:不要把项目和application.properties配置文件放在一起 
- define和const的一点点小知识
			define篇 1.#define 的作用 在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”. 被定义为“宏”的标识符称为“宏名”. 在编译预处理时,对程序中所有出现的“宏名”,都 ... 
- JavaScript模块化思想
			1. 首先,我们需要明白为什么要用模块化? 功能都是为了解决需求的.模块化可以带来的优点有以下几点: (1)可维护性.举个例子,如果我们把未使用模块化的代码比作油和水混合在了一起,模块化之后的代码就好 ... 
- AI 循环神经网络
			循环神经网络(Recurrent Neural Network,简称RNN),通常用于处理序列数据,正如卷积神经网络用于处理网格数据那样. 
- linux下service+命令和直接去执行命令的区别,怎么自己建立一个service启动
			启动一些程序服务的时候,有时候直接去程序的bin目录下去执行命令,有时候利用service启动. 比如启动mysql服务时,大部分喜欢执行service mysqld start.当然也可以去mysq ... 
- vba  弹框
			'第三个按钮,上传数据到数据库 Private Sub CommandButton1_Click() str1 = "abcde" str2 = InputBox("请输 ... 
- 图解IIS8上解决网站第一次访问慢的处理(转载)
			本篇经验以IIS8,Windows Server 2012R2做为案例.IIS8 运行在 Windows Server 2012 and Windows 8 版本以上的平台上.IIS中应用程序池和网站 ... 
- WPF CheckBox 滑块 样式 开关
			原文:WPF CheckBox 滑块 样式 开关 效果图 样式代码 <Style x:Key="CheckRadioFocusVisual"> <Setter P ... 
