解决docker占用系统根目录磁盘100%的问题

解决docker占用系统根目录磁盘100%的问题

前序

在使用docker的过程中总会遇到某些头疼的问题。这不在最近一段时间内由于docker内的服务和服务访问频率越来越多,系统根目录磁盘直接达到100%,导致容器服务强制停止或不能正常访问,按照之前的解决方案,定时清除docker容器内所产生的日志,但时间不久根目录磁盘紧紧逼近99%,下面就给大家分享解决方案。

系统版本和docker版本

名称版本号
CentOS7.6.1810
Docker18.09.6

解决方案

方案一

  1. df -hl查看分区空间的占用,发现/dev/mapper/centos-root已经满载
  2. 停止所有的容器服务
    docker stop $(docker ps -q)
  3. 停止docker服务
    systemctl stop docker
  4. 在/usr/lib/systemd/system/docker.service服务文件ExecStart中的添加–data-root=/home/.docker-data,如下图,–data-root在官网中解释为docker数据目录,当没有配置此参数时默认路径为/var/lib/docker,可通过dockerd --help查看命令详情
    注意:(当使用低版本的docker是并没有–data-root参数,请在文章最后查看解决方案)
    docker.service
  5. 拷贝原docker数据/var/lib/docker到所配置–data-root的目录下
    cp -r /var/lib/docker /home/.docker-data
  6. 重新启动docker服务,并查看docker服务状态,查看添加的配置是否生效
    systemctl daemon-reload
    systemctl start docker
    systemctl status docker

    docker服务状态
  7. 启动所有docker容器服务
    docker start $(docker ps -a -q)
  8. 当所有服务正常后,删除原/var/lib/docker释放/dev/mapper/centos-root分区空间
    rm -rf /var/lib/docker
  9. 再次查看分区磁盘占用df -hl,已成功释放空间
    分区空间使用情况

方案二 (同样可以适用高版本docker)

当使用低版本的docker时,并没有–data-root指定,所以方案二提供软连接形式来解决该问题

  1. 依旧先停止容器服务和docker服务
  2. 直接移动/var/lib/docker至/home/.docker-data
    cp -r /var/lib/docker /home/.docker-data
  3. 删除/var/lib/docker
    rm -rf /var/lib/docker
  4. 创建软连接
    ln -s /home/.docker-data /var/lib/docker
  5. 启动docker服务和容器服务
  6. 查看分区占用

后记

以上就是全部的解决步骤,欢迎借鉴,如有不足请多多指教

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值