[如何清理Docker占用的磁盘空间? - DockOne.io](http://dockone.io/article/3056)
补充:
1. 查看docker日志文件,单独列出每个容器的日志文件大小。
ls -lh $(find /var/lib/docker/containers/ -name *-json.log)
2. docker容器所在目录 /var/lib/docker
3. [docker的/var/lib/docker目录迁移 - 熊小熊的个人页面 - OSCHINA](https://my.oschina.net/qbj/blog/2998164)
4. 设置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
#### 注意:设置的日志大小,只对新建的容器有效。
5. 删除docker容器(正在运行的,避免影响线上)日志的时候,尽量不用rm
<br /> 如果docker容器正在运行,那么使用rm -rf 方式删除日志后,通过df -h会发现磁盘空间并没有释放
<br /> 原因:在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。
<br /> 方案:采用 truncate -s 0 日志名 来处理,这样清理出了空间,同时不影响线上环境。若执意要用rm删除,就必须重启docker,这样影响线上环境。