如何清理Docker占用的磁盘空间? - DockOne.io
补充:
-
查看docker日志文件,单独列出每个容器的日志文件大小。
ls -lh $(find /var/lib/docker/containers/ -name *-json.log)
-
docker容器所在目录 /var/lib/docker
-
设置Docker容器日志大小(治本)
4.1 设置一个容器服务的日志大小上限
在启动容器的时候增加一个参数设置该容器的日志大小,及日志驱动
--log-driver json-file #日志驱动 --log-opt max-size=[0-9+][k|m|g] #文件的大小 --log-opt max-file=[0-9+] #文件数量
4.2 编辑文件/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。
4.3 然后重启docker守护进程
systemctl daemon-reload systemctl restart docker
注意:设置的日志大小,只对新建的容器有效。
-
删除docker容器(正在运行的,避免影响线上)日志的时候,尽量不用rm
如果docker容器正在运行,那么使用rm -rf 方式删除日志后,通过df -h会发现磁盘空间并没有释放
原因:在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。
方案:采用 truncate -s 0 日志名 来处理,这样清理出了空间,同时不影响线上环境。若执意要用rm删除,就必须重启docker,这样影响线上环境。