Docker在不重建容器的情况下,日志文件默认会一直追加,时间一长会逐渐占满服务器的硬盘的空间,内存消耗也会一直增加。
1. 本机环境:
Docker version: 1.7.1
Linux version: Red Hat Enterprise Linux Server release 6.8 (Santiago)
由于linux和Docker版本原因,导致文中使用的命令可能与其它博客有些出入。
2. 查出占用磁盘较大的文件
Docker 的日志文件存在 /var/lib/docker/containers
目录中
[root@localhost containers]# du -D -h /var/lib/docker/containers | sort -h
24K /var/lib/docker/containers/b164df2a545886cdff1f68d7f5a529ade3f281ab855df6c3c475f77b22a2013c
156K /var/lib/docker/containers/d1c8566541d1a5379cdfd649fe00790bae764b6c9ce984939a291ac833df1ef7
376K /var/lib/docker/containers/358a409d43aacb16935d373f4c55bbce0aec031cd3e04095c2bddb17d3c6d237
380K /var/lib/docker/containers/78275e005f1e6cb9340bbed7d817b72adf955f7d2605c60273cf0e14a80f8303
1.2M /var/lib/docker/containers/f570afe92a6b06ec295324e21ac7be57ec2819d20409f70fd26e7090230f2c02
6.6G /var/lib/docker/containers/26bbd933b951615be7f163c4a8724014f2fb5b2aff429921b8c6f9bf57345f06
9.6G /var/lib/docker/containers/e31c62d52e166f0912ccfd4e0bad266dff29bfbf2f1153269bd5b2e995823e62
17G /var/lib/docker/containers
3. 运行时控制container日志(在我的环境下失效)
启动容器时,可以通过参数来控制日志的文件个数和单个文件的大小
-max-size 最大数值
-max-file 最大日志数
docker run -d --log-opt max-size=50m --log-opt max-file=3 --name schedule schedule
查看配置是否生效
docker inspect -f '{{.HostConfig.LogConfig}}' + 容器名 查看配置是否生效
例:docker inspect -f ‘{{.HostConfig.LogConfig}}’ redisTestLog,若生效,则如下图所示:
我的环境未生效,结果如下图所示:
[root@localhost ~]# docker inspect -f '{{.HostConfig.LogConfig}}' schedule
{json-file map[]}
一两个容器还好,但是如果有很多容器需要管理,这样就很不方便了,最好还是可以统一管理。
4. 全局配置控制container日志(在我的环境下失效)
创建或修改文件 /etc/docker/daemon.json,并增加以下配置
{
"log-driver":"json-file",
"log-opts":{
"max-size" :"50m",
"max-file":"3"
}
}
然后重启 Docker 服务(由于环境不同,重启命令可能不同:systemctl restart docker
)
service docker restart # 我的环境
注意:不过已存在的容器不会生效,需要重建才可以
5. 直接关闭container日志(这个在我的环境倒是可以。。。)
docker run -d --log-driver=none --name schedule schedule
使用如下命令查看配置是否生效:
[root@localhost ~]# docker inspect -f '{{.HostConfig.LogConfig}}' schedule
{none map[]}