Guias/Como parar contêineres do Docker
Como parar contêineres do Docker no Mac, um ou todos
Resposta rápida
Para parar um contêiner do Docker, execute docker stop seguido do nome ou do ID dele; docker ps lista todos. Para parar todos os contêineres em execução, execute docker stop $(docker ps -q). Em um projeto Compose, docker compose stop para os contêineres dele e docker compose down também os remove. O docker stop pede para o contêiner desligar e o força depois de 10 segundos. Um contêiner que volta tem uma política de reinício; desative-a com docker update --restart=no. O Vitals, um monitor de sistema para Mac, pode parar contêineres pela barra de menus: a lista Contêineres mostra a memória de cada um, e um clique o para depois de perguntar.
Como parar contêineres do Docker pelo Terminal
- 01 Execute
docker pspara listar os contêineres em execução, com nomes e IDs. - 02 Pare um com
docker stope o nome dele, por exemplodocker stop web-1. Você pode citar vários em um só comando. - 03 Pare todos os contêineres em execução com
docker stop $(docker ps -q).docker ps -qmostra só os IDs, e o docker stop recebe todos eles. - 04 Para um projeto Compose, execute
docker compose stopna pasta dele para parar os serviços, oudocker compose downpara pará-los e remover os contêineres e a rede do projeto. Os volumes ficam, a menos que você adicione-v. - 05 Execute
docker psde novo. Um contêiner que ainda aparece ainda está desligando, e um que volta logo depois tem uma política de reinício.
Os mesmos comandos funcionam com OrbStack, Colima e Rancher Desktop quando o comando docker aponta para eles. O Podman tem podman stop, e podman stop -a para todos.
Parar um contêiner encerra os processos dele e mantém todo o resto, os arquivos, os ajustes e os volumes, pronto para o docker start. Por isso é o jeito seguro de recuperar a memória e a CPU de um contêiner que você não está usando. A tabela abaixo o compara com os comandos que as pessoas costumam usar no lugar dele.
docker stop, kill, pause, rm e compose down
| Comando | O que faz | Quando usar |
|---|---|---|
| docker stop | Envia SIGTERM e depois SIGKILL após 10 segundos | Quase sempre: o app consegue terminar de gravar e fechar as conexões |
| docker kill | Envia SIGKILL na hora | Um contêiner ignora o docker stop |
| docker pause | Congela os processos, que mantêm a memória | Você quer a CPU de volta por um tempo, não a memória |
| docker rm | Remove um contêiner parado, ou um em execução com -f | Você terminou de usá-lo; os volumes nomeados ficam |
| docker compose stop | Para os contêineres de um projeto e os mantém | Você vai iniciar o mesmo projeto de novo em breve |
| docker compose down | Para e remove os contêineres e a rede | Você quer começar do zero da próxima vez; adicione -v para remover os volumes também |
Por que um contêiner parado volta a iniciar
Um contêiner com política de reinício é iniciado de novo pelo Docker. Com always, um contêiner que você parou volta na próxima vez que o Docker Desktop inicia, então contêineres que você parou ontem estão rodando de novo depois de um reinício. Com unless-stopped, um contêiner que você parou continua parado. Arquivos Compose muitas vezes definem restart: always em bancos de dados e caches.
Para ver a política de um contêiner, execute docker inspect --format '{{.HostConfig.RestartPolicy.Name}}' seguido do nome dele. Para desativá-la, execute docker update --restart=no e o nome, ou altere a linha restart: do arquivo Compose.
Quando o docker stop leva 10 segundos
O docker stop espera o processo principal do contêiner sair depois do SIGTERM. Um processo que ignora o sinal, muitas vezes um script de shell que não o repassa, segura a parada pelos 10 segundos inteiros até o Docker matá-lo. docker stop -t 2 encurta a espera. Corrigir a imagem faz o contêiner parar na hora: inicie o app com exec no script de entrypoint, ou defina init: true no serviço no Compose.
Parar contêineres e recuperar a memória
No Mac, os contêineres rodam dentro de uma única máquina virtual Linux. Pará-los libera a memória deles lá dentro, mas a máquina virtual pode continuar segurando essa memória, então o Monitor de Atividade ainda pode mostrar um Virtual Machine Service for Docker grande. O Resource Saver, ou encerrar o Docker Desktop, devolve a memória ao macOS; veja Docker usando memória demais para os ajustes.
Parar contêineres sem o Terminal
A visualização Containers do Docker Desktop tem um botão Stop em cada contêiner e em cada projeto Compose. Ela fica na janela do Docker Desktop, então você precisa abrir o app para usá-la. Apps de barra de menus como o Captain listam os contêineres sob um ícone na barra de menus, com iniciar e parar para cada um. O Vitals faz o mesmo pela barra de menus dele e acrescenta o que nenhum deles mostra: quanta memória e CPU cada contêiner está usando, para você saber qual parar.
O que o Vitals acrescenta
O Vitals pode parar contêineres pela barra de menus do Mac, com a memória deles à vista.
- A lista Contêineres no menu suspenso: cada contêiner em execução com o projeto Compose, a imagem e uma barra para a memória
- Aponte para um e clique no × que aparece. A linha pergunta e depois o para do mesmo jeito que o
docker stop, com 10 segundos para desligar - Na aba Contêineres da janela, selecione vários e clique com a tecla Control pressionada para pará-los juntos, ou clique com a tecla Control pressionada em um projeto Compose e escolha Parar Todos
- Memória, CPU, rede, disco e portas publicadas de cada contêiner, com Docker Desktop, OrbStack, Colima, Rancher Desktop e Podman
Bom saber
- O Vitals pergunta antes de parar qualquer coisa e nunca inicia, remove ou altera um contêiner.
- Um contêiner com política de reinício pode ser iniciado de novo pelo motor. A janela avisa isso quando pergunta.
- Se o motor recusar ou não responder, a linha avisa que o contêiner continua em execução.
- A lista Contêineres aparece enquanto um motor estiver em execução.
Perguntas frequentes
Como parar todos os contêineres do Docker de uma vez?
Execute docker stop $(docker ps -q). Ele lista os IDs de todos os contêineres em execução e para cada um. No Vitals, selecione-os na aba Contêineres e clique com a tecla Control pressionada para pará-los juntos.
Qual a diferença entre docker stop e docker kill?
O docker stop envia SIGTERM e espera até 10 segundos antes de forçar o contêiner com SIGKILL. O docker kill envia SIGKILL na hora, então o app não tem chance de terminar de gravar nem de fechar as conexões.
Qual a diferença entre docker compose stop e down?
O docker compose stop para os contêineres e os mantém, prontos para o docker compose start. O docker compose down os para e remove os contêineres e a rede do projeto; os volumes ficam, a menos que você adicione -v.
Por que meu contêiner do Docker volta a iniciar depois que o paro?
Ele tem a política de reinício always, então o Docker o inicia de novo quando o Docker Desktop inicia. Execute docker update --restart=no com o nome dele, ou altere a linha restart: do arquivo Compose.
Parar um contêiner apaga os dados dele?
Não. Um contêiner parado mantém os arquivos e os volumes, e docker start o executa de novo. docker rm remove o contêiner; os volumes nomeados ficam até você removê-los.
Dá para parar contêineres do Docker pela barra de menus do Mac?
Sim, com o Vitals. O menu suspenso da barra de menus lista os contêineres em execução com a memória de cada um, e basta um clique para parar um contêiner, depois de perguntar. Funciona com Docker Desktop, OrbStack, Colima, Rancher Desktop e Podman.
No glossário
Mais guias
- Por que meu Mac está tão lento
- O que está gastando a bateria do meu Mac
- Qual app está usando minha CPU ou memória
- Por que meu Mac não entra em repouso
- Chrome usando memória demais
- Por que as ventoinhas do meu Mac fazem tanto barulho
- Como controlar a velocidade da ventoinha no Mac
- Como liberar memória RAM no Mac
- Docker usando memória demais
- Mixer de volume para Mac
- Alternativas ao Monitor de Atividade
- Alternativas ao iStat Menus
- Alternativas ao Stats
- Gerenciador de Tarefas para Mac
- Melhores monitores de sistema para Mac
- Melhores monitores para a barra de menus do Mac
- Melhores mixers de volume para Mac