Docker设置日志滚动的解决方案
作者:WonderThink
Docker容器默认将日志写入同一文件,可能导致磁盘满,解决方案包括修改全局docker.service配置或针对特定容器修改hostconfig.json,下面给大家介绍Docker设置日志滚动的解决方案,感兴趣的朋友跟随小编一起看看吧
问题描述
Docker 容器中的进程会将打印到控制台(console)的日志保存到容器的目录下,默认的 Docker 配置不带有日志的回滚。会在自己的容器目录下往同一个日志文件中不停写入,最后会导致磁盘空间占满的问题。
解决方案
方案一:全局范围内修改(仅对新容器生效)
修改 docker.service 的配置,改完后 docker run 的新容器都可以应用该配置,但旧的 container 不生效。
1.修改Docker 配置
如果该命令不生效请参考 注意事项 2
vim /etc/docker/daemon.json
添加日志配置:
"log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" }
log-opts的参数说明:
参数 | 说明 |
---|---|
max-size | 容器日志文件上限大小 |
max-file | 容器日志文件上限个数 |
2.重启Docker守护进程使配置生效
systemctl restart docker
3. 查看日志文件是否生效
查看日志所在路径
docker inspect [容器名]
其中的 LogPath 字典项就是该容器的日志文件。
注意事项
- 上述操作执行完后只能影响新 docker run 的容器,旧的容器不生效,若要修改现有容器配置,请查看解决方案2.
- 上述步骤 1 中的 daemon.json 可能不存在,存在另一个 daemon.conf 可以将 daemon.conf 改为 daemon.json ,但是非常不建议!!!,这样更改后旧的容器会不认新配置导致旧容器消失,需要通过 docker run 镜像重新启动新的容器。 如果不小心误操作更改了,可以将原文件恢复,重启 docker 守护进程(步骤三),旧的容器会重新出现。
- Docker 默认安装后没有
daemon.json
这个文件,需要手动创建,需要Docker 的版本大于 1.12。 建议在安装完 Docker 后优先创建 daemon.json 文件,避免以后更改配置的不便。 - 修改后如果配置没有生效,请检查
/lib/systemd/system/docker.service
文件,确认ExecStart
字段其后有--config-file=/etc/docker/daemon.json
配置,如果没有添加上后执行systemctl daemon-reload
,然后重启 docker 服务systemctl restart docker.service
,重启后检查 ps aux | grep dockerd 查看配置有没有正常配置。
方案二:修改已存在的容器配置
- 查看该容器日志配置文件路径:
docker inspect [容器名]
- 进入容器的日志配置文件目录:如
cd /var/lib/docker/containers/<容器名>
- 关闭容器服务:
service docker stop
- 修改
hostconfig.json
配置文件,其LogConfig
中的默认为"Config":{}
, 改为为"Config":{"max-file":"3", "max-size": "100m"}
cp hostconfig.json hostconfig.json_bak # 备份配置文件 vim hostconfig.json # 修改 LogConfig 中的 Config
- 重启docker,
service docker start
.
按以上方法操作后 Docker 容器将会按照配置的的日志回滚规则管理日志文件,确保日志文件不会无限增长,也能够方便地查看日志文件。
到此这篇关于Docker设置日志滚动的文章就介绍到这了,更多相关Docker日志滚动内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!