O contêiner do Docker com o Samba sai sem nenhuma mensagem


8

Temos um servidor executando o CentOS, no qual existem vários serviços nos contêineres do Docker para separá-los das alterações no host.

Na semana passada, sexta-feira, fizemos uma atualização no CentOS e, desde então, um de nossos serviços inicia e sai imediatamente. Os outros 15 ou mais serviços são bons.

Clonei a configuração do contêiner, alterei o nome do contêiner e reconstruí-lo com o mesmo problema: o contêiner inicia e sai sem nenhuma mensagem.

O contêiner é derivado do contêiner de samba de David Personette . O comando real que sai agora, mas não foi usado para, é:

exec ionice -c 3 smbd -FS

Devo fazer o downgrade do docker isso terá efeitos colaterais? Há mais alguma coisa que eu possa fazer para que isso funcione novamente? Escolhemos contêineres para abstrair do sistema operacional, essa abstração não é tão boa quanto o esperado?


O que acontece se você executar um shell no contêiner e executar esse comando manualmente?
Jordanm 17/04

Tive dificuldade em tentar isso, o contêiner tem um ponto de entrada e requer que os parâmetros da linha de comando sejam iniciados. E se desse certo, eu não teria ideia de como usar isso na produção, isso é possível?
John

Respostas:


8

O contêiner será fechado sem nenhum comentário, a menos que você aumente o nível de depuração. Você pode usar algo como --debuglevel=4.

Depois de fazer isso, reconstruído e reiniciado o contêiner, você receberá algo no final, como:

Server exit (EOF on stdin)

E isso aponta para a solução, altere a smbdchamada para:

exec ionice -c 3 smbd -FS < /dev/null

e seu contêiner não deve mais sair diretamente.

Não sei ao certo o que causa essa alteração incompatível com versões anteriores, nem por que isso não foi testado em relação às entradas existentes do dockerhub.

Também tive dois dos meus contêineres quebrados ao atualizar para a 1.11. e ao fazer o downgrade para a 1.10.3, ocorreu o temido Cannot stop container .... Container does not exist: container destroyedbug. Eu tive que parar o docker, limpar toda a história, então não posso recomendá-lo.


Isso me ajudou a resolver o problema ontem, sem precisar fazer o downgrade!
John

1
Li em algum lugar que parar o Samba é realmente um recurso. Ele tenta detectar se seu processo pai morreu (EOF em stdin). Sua solução funciona perfeitamente.
Martin
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.