一般情况下,/var 目录是在根分区之下,而根分区之下的磁盘空间一般不会较大,测试环境我们平时不怎么使用,空间容量一般会够用。但是在生产环境中,经常会因为这个原因导致磁盘空间不足,然后服务或者消息中间件之类的崩掉(我的jumpserver就因此down了)。
我曾经在生产环境遇到这个问题,我记得当时总结了三种方法:
- 清理/var/lib/docker目录下各个容器的日志和垃圾,进入var/lib/docker,是用rm -rf * or 选择性删除就看个人喜好了,但是有一点——治标不治本;
- 扩充空间,挂载硬盘,把docker存储路径从 /var/lib/docker修改到挂载盘的路径下,治标不治本;
- 在第一种和第二种的基础上,先清出部分可用的磁盘空间,然后修改docker的存储目录。执行
-
find / -name ‘docker.service’,找出docker的配置文件。注意,docker在centos和ubuntu的配置文件路径是不同的,centos在/var下,ubuntu应该在/etc下。
-
在 /data 目录下创建 docker 目录,/data 为新添加的磁盘分区的挂载点
mkdir /data/docker -
systemctl stop docker 停止docker
vim /…/…/docker.service 上文查找的
找到ExecStart=/usr/bin/dockerd这一行,在后面加上–graph=/data/dcoker这一句后保存退出,如下:
ExecStart=/usr/bin/dockerd --graph=/data/dcoker -
重启 docker 服务
systemctl daemon-reload
systemctl disable docker
systemctl enable docker
systemctl start docker -
查看docker info信息
~]# docker info
如图所示,已经修改成功,存储目录变更为/data/docker。欧克了!
-
以上就是遇到docker存储问题的处理方法,但是还是有优化的空间,嘻嘻~可参考这个链接Docker 容器日志占用空间过大解决办法
上述方法,日志文件迟早又会涨回来。要从根本上解决问题,需要限制容器服务的日志大小上限。这个通过配置容器docker-compose的max-size选项来实现。
全局设置
编辑/etc/docker/daemon.json。不在这个目录下就差找下find / -name ‘daemon.json’ ,添加 log-dirver和log-opts参数,样例如下
vim /etc/docker/daemon.json
{
“log-driver”:“json-file”,
“log-opts”: {“max-size”:“500m”, “max-file”:“3”}
}
max-size=500m,意味着一个容器日志大小上限是500M,
max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json。
// 重启docker守护进程:
systemctl daemon-reload
systemctl restart docker
注意:设置的日志大小,只对新建的容器有效。
当时遇到这个问题,解决后觉得有点意思,就记录下来,文章参考: