Atualmente tenho o seguinte driver de log configurado em /etc/docker/daemon.json
:
{
"log-driver": "journald",
"log-opts": {
"tag": "{{.Name}}"
},
"userland-proxy": false
}
Funciona, os logs são enviados para systemd-journald
.
Testei o envio de logs de alguns contêineres via GELF e também funciona muito bem:
logging:
driver: "gelf"
options:
gelf-address: "udp://192.168.10.2:12201"
tag: "caddy"
Até agora tudo bem.
Eu queria então fazer uma mudança global e fazer com que todos os logs de todos os contêineres fossem para o receptáculo de log (via GELF), então substituí meu /etc/docker/daemon.json
por
{
"log-driver": "gelf",
"log-opts": {
"gelf-address": "udp://192.168.10.2:12201",
"tag": "{{.Name}}"
},
"userland-proxy": false
}
Após reiniciar dockerd
não há alterações: os logs vão para systemd-journald
e os que configurei no docker-compose.yml
nível são enviados via GELF.
Em outras palavras, alterar /etc/docker/daemon.json
e reiniciar dockerd
não teve efeitos. Eu perdi alguma coisa?
dockerd
é iniciado como
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
Na documentação do mecanismo Docker sobre como configurar drivers de log , há uma observação:
Parece que o driver de log é uma propriedade imutável do contêiner que só pode ser alterada com a criação de um novo contêiner. O que está incluído
daemon.json
é apenas o padrão para novos contêineres.Mais abaixo na página, há também um comando que pode ser usado para identificar rapidamente o driver de registro atual de um contêiner:
Se você tiver algum contêiner existente (conforme listado por
docker ps -a
), deverá interrompê-lo, removê-lo e recriá-lo para que a alteração entre em vigor.