Tenho um serviço definido via docker compose (veja a definição abaixo). Quando tentei iniciar esse serviço via docker-compose -f up --wait -d my_service, obtive o erro
Error response from daemon: failed to create task for container: failed to initialize logging driver: dial unix /dev/log: connect: protocol wrong type for socket
No meu servidor host, onde estou executando o comando docker compose, vejo que o soquete existe e meu usuário tem permissões de gravação:
srw-rw-rw-. 1 root root 0 Aug 29 2023 /dev/log
definição de serviço:
my_service:
command: <omitted>
image: <omitted>
volumes:
- "/dev/log:/dev/log"
logging:
driver: "syslog"
options:
syslog-address: "unix:///dev/log"
tag: "my_service"
Alguém sabe o que pode estar causando esse erro?
O Syslog pela rede usa soquetes UDP; UDP é um protocolo baseado em datagrama, diferentemente do estilo de streaming das conexões TCP.
Similarmente, syslog sobre sockets Unix usa um protocolo datagram. Isso significa que você precisa usar
unixgram:///dev/log
em vez deunix:///dev/log
:As opções de protocolo estão documentadas na documentação do driver de registro syslog .
Veja também a discussão sobre o problema #18903 .