问题描述

今天准备限制一下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.


仰望星空,还需脚踏实地。