问题描述
今天准备限制一下docker容器日志的大小,发现在/etc/docker/daemon.json
文件中添加以下内容后重启报错。
"log-opts":{"max-size" :"5g","max-file":"3" }
报错信息:
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
问题分析
运行指令docker info
发现原来是我的docker版本太老了,日志驱动默认为:Journald,因此我不能使用限制日志驱动类型为json-file的方式限制容器日志大小,因此我准备在daemon.json手动指定docker的容器日志驱动为:json-file,因此我添加的信息变为:
"log-driver":"json-file",
"log-opts":{"max-size" :"5g","max-file":"3" }
但是准备重启时,发下还是发现重启失败。
因此,应该是docker启动的时候传入了命令行参数,同时也指定了配置文件,两个配置发生了冲突。
为了查看下docker启动时的配置文件位置,我先查看下docker服务信息:
vim /usr/lib/systemd/system/docker.service
找到了这个配置文件的位置,查看下:
vim /etc/sysconfig/docker
可以看到这里有参数指定了日志驱动为Journald,因此删掉--log-driver=Journald
即可。
注意:这里也可在这里修改为:--log-driver=json-file
,但是在daemon.json中的 "log-driver":"json-file"
这条,就要去掉,即不可重复存在,会产生冲突的,依旧会启动失败。
参考
https://www.cnblogs.com/cocowool/p/docker_daemon_log_driver.html
https://blog.csdn.net/weixin_43670802/article/details/119567759
Docker 驱动日志详解
https://www.cnblogs.com/operationhome/p/10907591.html
Q.E.D.