Docker容器占用服务器大量硬盘空间优化一例

Docker容器占用服务器大量硬盘空间优化一例

目录

先上干货

当你的Docker容器空间不足时,不用急着更改Docker服务或者Docker容器的默认设置,尝试去扩大或缩小默认给docker容器分配的硬盘空间

当你的Docker容器空间不足时,不用急着更改Docker服务或者Docker容器的默认设置,尝试去扩大或缩小默认给docker容器分配的硬盘空间

当你的Docker容器空间不足时,不用急着更改Docker服务或者Docker容器的默认设置,尝试去扩大或缩小默认给docker容器分配的硬盘空间

背景

公司的开发环境多用Docker容器部署,包括前端的Node环境、后端的JAVA镜像、使用NEXUS搭建的MAVEN私服、GIT服务器和打包用的Jenkins。

之前几日,在用Jenkins打包的时候,报了错,提示可用空间不足,登录到服务器上使用df -h命令查看,挂载在/home的磁盘空间总共有250G左右,但是可用的只有两个G,删除一些无用的镜像文件,或者是各个用户上传的临时文件之后,打包就恢复了,基本确定确实是磁盘空间不足引起的。

初始解决方案

打包使用的是Jenkins容器,一开始考虑的是,服务器上启动了太多的容器,大大小小的有十多个,而且通过之前的df -h命令,看到类似如下的信息:
df -h
图片中下部,有很多9.4G大小的文件夹,这些文件夹是容器及镜像存储文件所用,docker默认给每个启动的容器,分配了10G的空间。

看到这些文件,最开始考虑是docekr的这些镜像空间将磁盘空间占去,遂考虑将分配的空间设小一些,使用docker info,信息如下:
在这里插入图片描述更改红框中的配置。

如果docker第一次启动,在启动docker前,可以使用参数–storage-opt分别指定dm.basesize、dm.loopdatasize、dm.loopmetadatasize等项,指定单个容器可用数据空间、docker可用数据空间、元数据可用数据空间。

参看:[https://www.cnblogs.com/itcomputer/p/5667917.html]

但是!但是!但是!以上设置对我们的磁盘占用问题解决并没有帮助。

问题所在

第一张图片已经显示了,docker容器在运行的时候,服务会给每个容器分配10G左右的的存储空间,所有容器的空间加起来不超过100G(这个设置在docker info命令中也能看到)。但是其实只要容器运行时候,不产生大量的数据文件,那么同时运行成千上万个容器也是可能的,这时运行起来的容器并不会真正地占用磁盘空间。

/var/lib/docker/devicemapper/devicemapper/data下,可以看到一个100G大小的文件,在容器无本地路径挂载的情况下,所有容器的数据都是存放在这个文件之中,也就是docker运行一开始,就已经预先划走了。

同时使用df -h命令可以看到,那些大小为9.4G 的文件夹,使用率也只有7%,包括报错的Jenkins容器,也并未完全占据所分配的10G的空间。单个容器的可用大小 有限制,能用掉的磁盘空间也就很有限了。

但是容器若是挂载的有本地路径,那这个路径下存放的东西,就不会受到约束,能放多大就放多大。Nexus是就是这样,它会把jar包存放在一个本地目录,Jenkins也会这样,会把之前的构建结果存放在本地。有时会比较疑惑,自己在启动容器的时候,并没有使用-V参数,但其实大部分有内容产生的镜像,都会选择一个本地路径进行挂载,以保证容器出现问题时候,数据不会丢失。使用docker inspect 容器名或ID能看到容器的Mount。

总结

当你的容器报错,没有剩余空间,df -h检查下容器中的使用比会不会太高,如果不是,检查下容器的挂载路径下的历史文件是不是太多了吧。

链接: [https://jpetazzo.github.io/2014/01/29/docker-device-mapper-resize/]

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值