Docker-compose无法读取位于/etc/docker/daemon.json的日志配置文件

3
我有一个存储在/etc/docker/daemon.json中的daemon.json文件,用以下内容来配置docker守护进程:
{
  "log-driver" : "syslog",
  "log-opts": {
     "syslog-facility": "local1",
     "tag": "{{.Name}}"
  },
  "storage-driver": "devicemapper",
  "storage-opts": [
     "dm.fs=xfs",
     "dm.thinpooldev=/dev/mapper/vg00-docker--pool",
     "dm.use_deferred_removal=true"
  ]
}

docker-compose服务中没有配置日志选项,也没有任何docker容器在其cmdentrypoint中配置了--log-driver

检查docker info命令的输出,我可以验证日志驱动程序设置为syslog

然而,在运行docker-compose stack时,所有容器仍然显示json-file,使用命令docker inspect --format='{{.HostConfig.LogConfig.Type}}'检查它们,这似乎是因为docker-compose没有遵守/etc/docker/daemon.json配置文件,仅针对日志配置,因为storage-driver已正确设置。

我使用的docker版本是17.12.0,docker-compose是1.19.0

1个回答

3

/etc/docker/daemon.json 是默认的配置文件,当Docker守护进程启动时应该访问它。根据语法,你的文件看起来没问题,但可能存在配置方面的错误。

让我们尝试强制启用调试并读取配置文件,看看会显示哪些错误信息。

/usr/bin/dockerd stop
/usr/bin/dockerd start -D -l debug --config-file /etc/docker/daemon.json

之后,您可以使用 journalctl -u docker 查看日志。

或者,您知道可以通过命令行轻松测试每个配置参数,而不是通过json配置文件一次传递它们,以便找出哪些参数导致配置未加载。

/usr/bin/dockerd stop
/usr/bin/dockerd start -D -l debug --log-driver syslog --storage-driver devicemapper ...

逐个添加,您就能检查是否会因为未挂载 /dev/mapper/vg00-docker--pool 等原因而导致存储选项(storage-opts)失效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接