
Acabei de descobrir que service docker stop
no Ubuntu 18.04 não desliga todos os contêineres em execução. Não consigo mais controlá-los, mas os containerd-ship
processos e tudo o que está dentro dos contêineres ainda estão em execução (mas não acessíveis, talvez porque a rede foi removida).
Além disso, parar o containerd não muda nada porque, por design, isso não para os contêineres.
E mesmo depois killall containerd-shim
disso já é bastante difícil, alguns processos ainda estão em execução, como gunicorn
do gitlab, backuppc e uma instância Linux UML
Como faço um encerramento limpo de todos os contêineres em execução? O comportamento atual é responsável por meu sistema travar ao desligar.
Atualizar: Acabei de ver que estou usando o repo (https://download.docker.com/linux/ubuntu) que vem de um tutorial do Kubernetes (que ainda não uso). Esta fonte traz versões proprietárias de containerd.io, docker-ce e docker-ce-cli
Responder1
Problema resolvido.
O ponto principal era que eu tinha um repositório adicional, diretamente do docker (https://download.docker.com/linux/ubuntu) que trouxe versões proprietárias de containerd.io, docker-ce e docker-ce-cli. O universo Ubuntu, por outro lado, nem estava no meu /etc/apt/source.list
.
Agora atualizei para 20.04 e uso os pacotes docker originais (docker.io) do universo Ubuntu. Isso funciona bem e desliga conforme o esperado. Tenho certeza de que isso também teria funcionado no 18.04, mas queria evitar o downgrade do docker trocando o repositório.
Responder2
Na minha instalação do Ubuntu 18.04, systemctl stop docker
desliga todos os contêineres em execução. systemctl start docker
inicia todos os contêineres novamente. Concordo com o BMitch, seriam necessárias mais informações sobre sua instalação para diagnosticar o problema.
Outra forma de encerrar todos os contêineres em execução seria:
docker ps -q | xargs docker stop