Pular para o conteúdo principal

Docker Pare todos os contêineres: Um guia passo a passo

Saiba como parar todos os contêineres do Docker em execução usando comandos simples. Isso ajudará você a gerenciar os recursos do sistema e a otimizar o ambiente do Docker.
Atualizado 16 de jun. de 2025  · 5 min lido

Interromper os contêineres um a um pode tornar o fluxo de trabalho de desenvolvimento mais lento e levar a erros ao fazer malabarismos com microsserviços ou aplicativos com vários contêineres. 

Neste guia, abordarei vários métodos para ajudar você a encerrar todos os contêineres em execução.

Ao final deste tutorial, você será capaz de:  

  • Entenda como o Docker lida com sinais e períodos de carência
  • Pare todos os contêineres usando técnicas e filtros simples da CLI
  • Aproveite o Docker Compose e os aliases personalizados para simplificar os fluxos de trabalho 

Entendendo o encerramento de contêineres do Docker

Antes de interromper os contêineres em massa, é útil entendercomo o Docker orquestra os desligamentos nos bastidores.

Gerenciamento de processos baseado em sinais

O Docker usa os sinais do Unix para solicitar desligamentos graciosos antes de forçar o encerramento. O comportamento padrão do comando docker stop é: 

  1. Envie SIGTERM para o processo principal do contêiner.  
  2. Aguarde até 10 segundos (configurável com -t/--time).  
  3. Envie SIGKILL se o processo não tiver sido encerrado.
  • SIGTERM: Solicite educadamente que o processo seja limpo e saia.  
  • Período de carência: Dá aos aplicativos tempo para limpar os registros, fechar conexões ou salvar o estado.  
  • SIGKILL: Força o encerramento imediato de qualquer processo que não esteja respondendo.

Linha do tempo ilustrando a sequência de sinais de parada do Docker: SIGTERM, aguardando, depois SIGKILL.

Mecânica da interface de linha de comando (CLI)

Por padrão, o site docker stop lida com um contêiner de cada vez. Você pode estendê-lo para interromper vários contêineres usando os recursos do shell.

# Stop a single container named my_container
docker stop my_container

Isso envia SIGTERM para my_container e aguarda os 10 segundos padrão antes de emitir SIGKILL, se necessário.

# Stop all running containers at once
docker stop $(docker ps -q)

Aqui, docker ps -q lista os IDs de todos os contêineres em execução; esses IDs são passados para docker stop, que encerra os contêineres sequencialmente.

Sessão de terminal que canaliza docker ps -q para docker stop para encerrar todos os contêineres.

Captura de tela de um terminal mostrando a saída docker ps -q canalizada para docker stop

Para obter uma compreensão mais detalhada desses conceitos, considere explorar os conceitos de contêineres e virtualização.

Comparando o docker stop e o docker kill

Escolher entre uma rescisão graciosa e forçada ajuda você a evitar consequências indesejadas.

Rescisão graciosa vs. imediata

Comando

Sinal(is)

Comportamento

Caso de uso

parada da doca

SIGTERM → SIGKILL após o tempo limite

Encerramento gracioso com tempo de limpeza

Manutenção ou atualizações de rotina

docker kill

SIGKILL

Rescisão imediata  

Remediação de emergência de contêineres suspensos

Personalização do sinal

Ambos os comandos suportam um sinalizador --signal para substituir os padrões:

# Send SIGINT instead of SIGTERM
docker stop --signal=SIGINT my_container

O acima exposto permite que os processos façam o rastreamento de SIGINT para limpeza personalizada.

# Kill all containers with SIGUSR1
docker kill --signal=SIGUSR1 $(docker ps -q)

Como visto acima, você pode usar sinais personalizados quando seu aplicativo implementar ganchos de desligamento específicos.

Estratégias avançadas de parada de contêineres

A filtragem e a automação da parada de contêineres permitem fluxos de trabalho de DevOps mais precisos, especialmente em ambientes de grande escala.  

Depois de entender os conceitos básicos, você pode ajustar quais contêineres você interrompe e como automatiza o processo.

Terminação do contêiner filtrado

Os filtros permitem que você direcione os contêineres por atributos como nome da imagem, status ou rótulos:

# Stop containers running the my_image:latest image
docker stop $(docker ps --filter "ancestor=my_image:latest" -q)

O comando acima interrompe apenas os contêineres com base em my_image:latest, fornecendo controle direcionado em projetos de vários serviços.

Casos de uso:  

  • Interromper os contêineres de teste por tag de imagem (--filter "ancestor=test:latest")  
  • Pare os contêineres por rótulo (--filter "label=env=dev")

Filtrar a saída do docker ps pelo nome da imagem ancestral antes de interromper os contêineres.

Captura de tela do terminal do uso do docker ps --filter

Limpeza automatizada com o Docker Compose

Se os seus serviços forem definidos em um arquivo docker-compose.yml, um único comando interromperá todos os contêineres relacionados:

docker-compose stop

Isso respeita suas dependências de serviço e os tempos limite configurados para um desligamento limpo.

Para obter técnicas mais avançadas, você pode considerar o curso Intermediate Docker.

Otimização do fluxo de trabalho orientada por alias

Para tarefas repetitivas, os aliases de shell reduzem a digitação e a troca de contexto:

# Add this to ~/.bashrc or ~/.zshrc
alias ds='docker stop $(docker ps -q)'

Quando você recarregar o shell, a execução do ds interrompe todos os contêineres com um único toque de tecla - ideal para uma limpeza rápida.

Terminal mostrando o uso bem-sucedido de um alias 'ds' personalizado para interromper todos os contêineres do Docker em execução no Ubuntu WSL.

Usando o alias 'ds' para interromper todos os contêineres em execução no Ubuntu WSL

Práticas recomendadas operacionais

Implemente rotinas de desligamento seguro e limpeza regular para manter seu ambiente estável e com bom desempenho.

  • Implemente manipuladores de sinal no código do aplicativo para fechar conexões e liberar registros.  
  • Reserve o site docker kill para intervenções emergenciais; evite inconsistências de dados.  
  • Ajuste os períodos de carência (-t/--time) com base nas necessidades de limpeza do seu aplicativo.  
  • Automatize a limpeza pós-desligamento com comandos como docker system prune, conforme detalhado em Docker Prune: Um guia completo com exemplos práticos.
  • Registre eventos de desligamento (carimbos de data e hora e códigos de saída) para diagnosticar problemas de encerramento.

Solução de problemas comuns

Até mesmo os comandos simples podem apresentar problemas - veja aqui como resolvê-los.

Processos zumbis e volumes órfãos

O encerramento forçado pode deixar para trás processos obsoletos ou volumes órfãos, consumindo recursos do host e espaço em disco. Para limpar:

# Remove dangling volumes
docker volume prune

Isso exclui todos os volumes não referenciados por nenhum contêiner.

Verifique se há processos persistentes do daemon do Docker:

ps aux | grep dockerd

Elimine manualmente todos os processos filhos perdidos do dockerd se eles persistirem.

Caso do mundo real: Em um projeto, usei o docker kill em um contêiner de banco de dados quando uma migração foi interrompida. A eliminação abrupta impediu que o banco de dados liberasse os logs de transação, corrompendo as tabelas do InnoDB. Tivemos que restaurar a partir de backups e reproduzir binlogs, o que custou mais de 30 minutos de tempo de inatividade. Para evitar isso, prefira o site docker stop com um tempo limite estendido ou adicione manipuladores SIGTERM adequados em seu aplicativo.

Erros de permissão negada

A execução de comandos do Docker sem os privilégios adequados geralmente gera erros:

  • Prefixe os comandos com sudo ou execute-os como um usuário do grupo docker.  
  • Adicione seu usuário ao grupo docker e faça o login novamente:
sudo usermod -aG docker $USER

Depois de fazer logout e login novamente, você pode executar comandos do Docker sem sudo. Em um ambiente de CI, certifique-se de que o usuário executor seja membro do grupo Docker para evitar falhas no pipeline.

Considerações específicas do Windows

No Windows PowerShell, coloque os subcomandos entre parênteses e execute como Administrador:

docker stop (docker ps -q)

Iniciar o PowerShell com direitos elevados evita problemas de firewall ou de controle de acesso. Se você vir erros de handshake TLS, verifique se a configuração do daemon do Docker Desktop corresponde ao seu ambiente do PowerShell.

Conclusão

Ao interromper todos os contêineres do Docker de forma eficiente, você economiza tempo, conserva recursos e minimiza o erro humano no fluxo de trabalho de desenvolvimento. Você pode manter um ambiente limpo e previsível compreendendo o tratamento de sinais do Docker, aproveitando os filtros da CLI, usando o Docker Compose e criando aliases simples. 

Explore o programa Containerization and Virtualization with Docker and Kubernetes ou o curso Intermediate Docker para aprofundar sua experiência em conteinerização.

Feliz conteinerização - e um brinde aos fluxos de trabalho limpos e eficientes do Docker!

Domine o Docker e o Kubernetes

Aprenda o poder do Docker e do Kubernetes com uma trilha interativa para criar e implantar aplicativos em ambientes modernos.
Inicie a trilha gratuitamente

Perguntas frequentes

Qual é o código de saída que o docker stop retorna?

Em caso de sucesso, docker stop retorna 0. Um código de saída diferente de zero indica que um ou mais contêineres não conseguiram parar.

Posso visualizar quais contêineres serão interrompidos antes de executar o comando?

Yes-run docker ps ou docker ps -q para listar os contêineres em execução e verificar IDs ou nomes antes de executá-los docker stop.

Como as políticas de reinicialização afetam os contêineres parados?

Os contêineres com uma política de reinicialização, como always, serão reiniciados automaticamente após a parada. Remova ou modifique a política com docker update --restart=no se você quiser que eles permaneçam parados.

Existe uma maneira de interromper os contêineres por rede ou volume?

Embora o Docker não filtre diretamente por rede ou volume em docker stopvocê pode combinar docker ps --filter "network=" ou docker ps --filter "volume=" com a substituição de comandos.

Como posso integrar o docker stop em um pipeline de CI/CD?

Incorpore o comando stop em seus scripts de compilação ou trabalhos de CI - use sinalizadores como --signal e filtros para desligamentos direcionados e, em seguida, faça o acompanhamento com comandos de limpeza (docker system prune) no mesmo pipeline.

Posso reiniciar todos os contêineres parados depois disso?

Sim, use docker start $(docker ps -a -q) para reiniciar todos os contêineres, inclusive os que estavam parados anteriormente.

Você conseguirá remover todos os contêineres?

Não, interromper os contêineres não os exclui. Eles permanecem em seu sistema até que você os remova com docker rm.

Como posso automatizar a parada diária dos contêineres?

Use um trabalho cron com o comando docker stop $(docker ps -q) para agendar a interrupção automática.

A parada da plataforma afeta volumes ou redes?

Não, a interrupção de um contêiner não afeta os volumes ou redes anexados - eles permanecem intactos.

Posso impedir que alguns contêineres sejam interrompidos?

Você pode parar os contêineres seletivamente usando docker ps com filtros ou excluindo IDs de contêineres específicos do comando.


Khalid Abdelaty's photo
Author
Khalid Abdelaty
LinkedIn

Engenheiro de dados com experiência em tecnologias de nuvem Python e Azure, especializado na criação de pipelines de dados escaláveis e processos de ETL. Atualmente está cursando Bacharelado em Ciência da Computação na Universidade de Tanta. Engenheiro de dados certificado pela DataCamp com experiência comprovada em gerenciamento e programação de dados. Ex-estagiário de engenharia de dados da Microsoft na Digital Egypt Pioneers Initiative e Microsoft Beta Student Ambassador, liderando workshops técnicos e organizando hackathons.

Tópicos

Saiba mais sobre o Docker com estes cursos!

Programa

Containerization and Virtualization with Docker and Kubernetes

0 min
Learn the power of Docker and Kubernetes, this interactive track will allow you to build and deploy applications in modern environments.
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

O guia completo da certificação Docker (DCA) para 2024

Libere seu potencial no Docker e na ciência de dados com nosso guia abrangente. Explore as certificações do Docker, os caminhos de aprendizado e as dicas práticas.
Matt Crabtree's photo

Matt Crabtree

8 min

blog

As 9 principais alternativas ao Anaconda para o gerenciamento do ambiente Python

Este guia conciso e fácil de seguir ajudará você a descobrir as melhores alternativas ao Anaconda e a encontrar a ferramenta certa para seus projetos Python.
Kurtis Pykes 's photo

Kurtis Pykes

13 min

Tutorial

Como instalar e configurar o MySQL no Docker

Saiba como instalar e configurar o banco de dados MySQL dentro de contêineres do Docker. O tutorial inclui conceitos como conexão com servidores MySQL, execução de clientes MySQL para conexão com contêineres e assim por diante.
Bex Tuychiev's photo

Bex Tuychiev

12 min

Tutorial

Como escrever um script Bash: um tutorial simples de scripts Bash

Descubra os fundamentos da criação de scripts Bash e aprenda a escrever um script Bash.
Kurtis Pykes 's photo

Kurtis Pykes

5 min

Tutorial

Tutorial do Python pandas: O guia definitivo para iniciantes

Você está pronto para começar sua jornada com os pandas? Aqui está um guia passo a passo sobre como você pode começar.
Vidhi Chugh's photo

Vidhi Chugh

15 min

Tutorial

Tutorial de push e pull do GIT

Saiba como realizar solicitações Git PUSH e PULL por meio do GitHub Desktop e da linha de comando.

Olivia Smith

13 min

Ver maisVer mais