docker 导致磁盘空间不够的处理
1.排查
du -h --max-depth=1 /var/lib/docker/lib/containers
通过查询文件大小。确定大文件所在位置/var/lib/docker/containers
2.为什么出现这情况
经过查阅资料,这个里面存放了容器运行的日志,推测是之前进行压测,导致容器有大量日志。最终造成磁盘爆满。(运行时间长也会导致此问题)
3.开始处理
1.修改docker容器的默认存放地址,可以从系统盘移到数据盘
systemctl stop docker systemctl status docker //创建要新存放的地址 mkdir /data/docker/lib mv /var/lib/docker/* /data/docker/lib //修改docker配置。将路径指向新地址 vi /usr/lib/systemd/system/docker.service 在ExecStart=/usr/bin/dockerd后 追加 --graph /data/docker/lib //重启docker systemctl disable docker systemctl enable docker systemctl daemon-reload systemctl start docker //查看新地址,是否生效 docker info|grep Dir //查看容器状态,看到目录都已经改过来了 docker inspect 容器id
2.修改docker容器的日志大小
//方案一:
//创建一个docker全局文件。用来防止容量过大,针对新容器有效---ps:这个没测试过,不知道会不会生效
vi /etc/docker/daemon.json
// reload配置文件
{
"log-driver":"json-file",
"log-opts":{
"max-size" :"100m","max-file":"3"
}
}
//查看新地址,是否生效
docker info|grep Dir
//查看容器状态,看到目录都已经改过来了
docker inspect 容器id
方案二(适合单个容器进行处理):
应用启动命令加上以下参数: --log-opt max-size=100m --log-opt max-file=3 去限制docker内日志大小
docker run -d --log-opt max-size=100m --log-opt max-file=3 --net=host --privileged=true --name lhwtest -it -v /home/docker/app/lhw:/home/docker/app/lhw lhwtest
//下面对日志进行清理。不清理也是可以的。看情况
docker inspect --format '{{.LogPath}}' 34dbe42d30ae
docker inspect --format '{{.LogPath}}' 4e51b0d2fcf2
sudo sh -c "cat /dev/null > /data/docker/lib/containers/34dbe42d30ae92f2a2f4798409fc8792ebb1d2275b87e19879f204f2bf4706c2/34dbe42d30ae92f2a2f4798409fc8792ebb1d2275b87e19879f204f2bf4706c2-json.log"
sudo sh -c "cat /dev/null > /data/docker/lib/containers/4e51b0d2fcf24a249aed7d0f5f03c8bb9b5419ce11a16635b1fffd8dc95eb7ea/4e51b0d2fcf24a249aed7d0f5f03c8bb9b5419ce11a16635b1fffd8dc95eb7ea-json.log"
docker inspect --format '{{.LogPath}}' 1804f2271770
docker inspect --format '{{.LogPath}}' 0acab853a70f
sudo sh -c "cat /dev/null > /data/docker/lib/containers/1804f22717701db640292159e692b5d4ed646687b7eeb6dc59b48135fefff41a/1804f22717701db640292159e692b5d4ed646687b7eeb6dc59b48135fefff41a-json.log"
sudo sh -c "cat /dev/null > /data/docker/lib/containers/0acab853a70fe5d6cfd1ccee198155d33752fe9b05b260587be325f16d06ca1b/0acab853a70fe5d6cfd1ccee198155d33752fe9b05b260587be325f16d06ca1b-json.log"