Docker-compose没有在/etc/docker/daemon.json中读取日志配置

时间:2018-03-05 13:29:13

标签: docker docker-compose

我有一个daemon.json文件,存储在/etc/docker/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容器配置为以--log-drivercmd中的entrypoint开头。

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

然而,当运行docker-compose堆栈时,所有容器在使用命令json-file检查它们时仍然显示docker inspect --format='{{.HostConfig.LogConfig.Type}}',在我看来好像docker-compose不尊重<{1}}配置文件,仅用于日志配置,因为/etc/docker/daemon.json设置正确。

我用来运行此版本的docker版本为storage-driver,docker-compose位于17.12.0

1 个答案:

答案 0 :(得分:0)

/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

的日志

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

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

逐个添加,您将能够检查是否因为存储选项失败,因为/ dev / mapper / vg00-docker - 未安装池或其他任何内容。