Desligue todos os contêineres do Docker

Desligue todos os contêineres do Docker

Acabei de descobrir que service docker stopno Ubuntu 18.04 não desliga todos os contêineres em execução. Não consigo mais controlá-los, mas os containerd-shipprocessos 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-shimdisso já é bastante difícil, alguns processos ainda estão em execução, como gunicorndo 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 dockerdesliga todos os contêineres em execução. systemctl start dockerinicia 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

informação relacionada