Docker: Enviando arquivos de log como usuário não root para / dev / stdout

0

Estou tentando iniciar um contêiner docker, que possui dois serviços. Um desses serviços precisa ser executado como um usuário não-root, caso contrário ele não será iniciado. O outro deve ser executado como root.

Agora, desejo vincular o arquivo non_root_service.log a /dev/tty ou /dev/stdout , para que os registros possam ser capturados pela janela de encaixe (verifique com docker logs $CONTAINER ):

ln -s /dev/stdout non_root_service.log

O problema é fazer com que o usuário não-root não tenha direitos de gravação para /dev/tty ou /dev/stdout resultando no seguinte erro na inicialização do serviço não-root:

cannot open "non_root_service.log": Permission denied

Mas se eu não criar o link, não consegui capturar os registros com docker logs $CONTAINER . Alguém tem uma idéia de como isso poderia ser corrigido, para que eu pudesse executar o usuário como não raiz e vincular os arquivos de log a /dev/{tty,stdout} ?

P.S .: Não importa se eu uso como script de shell CMD ["starter.sh"] ou supervisor CMD ["supervisord", "-n", "-c", "/app/supervisord.conf"] para iniciar os 2 serviços, recebo ambos com o mesmo erro.

    
por chevallier 10.12.2017 / 19:17

1 resposta

0

Talvez não seja a solução mais limpa, mas você poderia tentar isso:

tail -f non_root_service.log &

Para simplesmente seguir o arquivo para stdout e fundo o processo final? Você também pode tentar seguir direto para a stdout p:

ln -s ln -fs / proc / self / fd / 1 non_root_service.log

No entanto, você tem certeza de que tem direitos sobre o arquivo non_root_service.log? O que você vê se executar stat non_root_service.log e whoami ?

    
por 11.12.2017 / 06:04