我目前配置了以下日志驱动程序/etc/docker/daemon.json
:
{
"log-driver": "journald",
"log-opts": {
"tag": "{{.Name}}"
},
"userland-proxy": false
}
它有效,日志发送到systemd-journald
.
我测试了通过 GELF 从一些容器发送日志,效果也很好:
logging:
driver: "gelf"
options:
gelf-address: "udp://192.168.10.2:12201"
tag: "caddy"
到目前为止,一切都很好。
然后我想进行全局更改,并将所有容器中的所有日志发送到日志容器(通过 GELF),所以我将我的替换/etc/docker/daemon.json
为
{
"log-driver": "gelf",
"log-opts": {
"gelf-address": "udp://192.168.10.2:12201",
"tag": "{{.Name}}"
},
"userland-proxy": false
}
重新启动后dockerd
没有任何变化:日志将转到systemd-journald
并且我在该级别配置的日志docker-compose.yml
通过 GELF 发送。
换句话说,更改/etc/docker/daemon.json
和重新启动dockerd
没有任何影响。我错过了什么吗?
dockerd
开始为
root@srv /e/docker# systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled)
Active: active (running) since Thu 2024-04-18 14:13:13 CEST; 21h ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 869846 (dockerd)
Tasks: 51
Memory: 212.3M (peak: 269.1M)
CPU: 6min 819ms
CGroup: /system.slice/docker.service
└─869846 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
在关于配置日志驱动程序的 Docker 引擎文档中,有一条注释:
日志记录驱动程序似乎是一个不可变的容器属性,只能通过创建新容器来更改。里面的内容
daemon.json
只是新容器的默认设置。在页面的更下方,还有一个命令可用于快速识别容器当前的日志记录驱动程序:
如果您有任何现有容器(如 所列
docker ps -a
),则必须停止、删除然后重新创建它们才能使更改生效。