Conteúdo

Tutorial de comandos Docker stop, start, restart e kill: pare e reinicie contêineres

docker stop, start, restart, kill, pause e unpause controlam o estado de execução dos contêineres; veja o fluxo completo do ciclo de vida em Ciclo de vida do contêiner.

Sintaxe

docker stop [opções] contêiner [contêiner...]
docker start [opções] contêiner [contêiner...]
docker restart [opções] contêiner [contêiner...]
docker kill [opções] contêiner [contêiner...]
docker pause contêiner [contêiner...]
docker unpause contêiner [contêiner...]

Opções

ComandoOpçãoDescrição
docker stop-s, --signal stringSinal enviado ao contêiner
docker stop-t, --timeout intQuantos segundos esperar antes de encerrar o contêiner à força
docker start-a, --attachAnexa ao STDOUT/STDERR do contêiner e encaminha sinais
docker start--checkpoint stringRestaura a partir do checkpoint especificado
docker start--checkpoint-dir stringUsa um diretório personalizado para armazenar checkpoints
docker start--detach-keys stringSubstitui a combinação de teclas usada para sair do modo de anexação
docker start-i, --interactiveAnexa ao STDIN do contêiner
docker restart-s, --signal stringSinal enviado ao contêiner
docker restart-t, --timeout intQuantos segundos esperar antes de encerrar o contêiner à força
docker kill-s, --signal stringSinal enviado ao contêiner

A descrição de pause e unpause não lista outras opções. Também é possível chamar stop, start, restart, kill e pause como subcomandos de docker container.

Exemplos

Tempo de espera e estado de saída de stop

$ time docker stop web
web
real	0m 0.50s
user	0m 0.00s
sys	0m 0.01s

$ time docker stop sleeper
sleeper
real	0m 10.44s
user	0m 0.01s
sys	0m 0.01s

$ docker ps -a --format 'table {{.Names}}\t{{.Status}}'
NAMES        STATUS
sleeper      Exited (137) 1 second ago
web          Exited (0) 12 seconds ago
uses-redis   Up 51 seconds
registry     Up About a minute
  • web parou após 0.50 segundo, com o estado Exited (0): o nginx encerrou normalmente ao receber SIGTERM.
  • sleeper esperou 10.44 segundos e ficou com o estado Exited (137): sleep é o PID 1 dentro do contêiner e não tratou SIGTERM. O Docker esperou os 10 segundos padrão e então enviou SIGKILL (137 = 128 + 9). Consulte a explicação sobre PID 1 em Ciclo de vida do contêiner.
  • A opção -t, --timeout de docker stop --help define quantos segundos esperar antes de encerrar o contêiner à força; este exemplo mostra a diferença entre o tempo padrão e o encerramento forçado.
  • docker ps -a lista os contêineres parados; uses-redis e registry continuam em execução.

start, restart e kill

$ docker start web
web

$ docker restart -t 2 web
web

$ docker kill sleeper
Error response from daemon: cannot kill container: sleeper: container ebcd31ea947204593383614f0fa2b0b9baba719e4858042e8120b3d544468f20 is not running

$ docker start sleeper && docker kill sleeper
sleeper
sleeper

$ docker ps -a --format 'table {{.Names}}\t{{.Status}}'
NAMES        STATUS
sleeper      Exited (137) Less than a second ago
web          Up 2 seconds
uses-redis   Up 54 seconds
registry     Up About a minute
  • docker start inicia o web parado; docker restart -t 2 reinicia o contêiner com tempo limite de 2 segundos.
  • docker kill sleeper falha porque o contêiner está parado; a mensagem de erro informa que ele não está em execução. Primeiro, execute start e depois kill para que os dois comandos funcionem.
  • Depois de kill, sleeper aparece como Exited (137) e web aparece como Up.

pause e unpause

$ docker pause web
web

$ docker ps --format 'table {{.Names}}\t{{.Status}}'
NAMES        STATUS
web          Up 2 seconds (Paused)
uses-redis   Up 55 seconds
registry     Up About a minute

$ docker exec web nginx -v
Error response from daemon: Container web is paused, unpause the container before exec

$ docker unpause web
web
  • docker pause pausa todos os processos dentro do contêiner; a coluna de estado mostra (Paused).
  • Durante a pausa, docker exec falha e a mensagem de erro pede que você tire o contêiner da pausa primeiro; docker unpause retoma a execução.

Enviar um sinal para recarregar o nginx

$ docker kill -s HUP web
web

$ docker logs --tail 3 web
2026/10/25 15:30:32 [notice] 1#1: signal 17 (SIGCHLD) received from 22
2026/10/25 15:30:32 [notice] 1#1: worker process 22 exited with code 0
2026/10/25 15:30:32 [notice] 1#1: signal 29 (SIGIO) received

$ docker kill -s HUP web2
web2

$ docker logs web2 2>&1 | grep -E 'SIGHUP|reconfiguring'
2026/10/25 15:31:00 [notice] 1#1: signal 1 (SIGHUP) received, reconfiguring
2026/10/25 15:31:00 [notice] 1#1: reconfiguring
  • docker kill -s HUP envia o sinal especificado ao contêiner; aqui, o log de web2 mostra claramente que ele recebeu SIGHUP e está recarregando.
  • docker logs --tail 3 limita a exibição às três linhas mais recentes; no outro exemplo, o stderr é combinado com o stdout e grep filtra as linhas do log.

Nome de contêiner inexistente

$ docker stop nosuch
Error response from daemon: No such container: nosuch

Se o nome do contêiner especificado não existir, o Docker retornará No such container.

Capítulos relacionados

Exercícios

Exercício: o contêiner sleeper está parado. Inicie-o e encerre-o à força imediatamente; por fim, liste o nome e o estado de todos os contêineres.

Resposta
docker start sleeper && docker kill sleeper
docker ps -a --format 'table {{.Names}}\t{{.Status}}'

Perguntas frequentes

Por que docker stop sleeper demora cerca de 10 segundos?

Desta vez, docker stop sleeper levou 10.44 segundos e o estado depois foi Exited (137); docker stop --help explica que -t, --timeout define quantos segundos esperar antes de encerrar o contêiner à força.

docker kill pode ser usado em um contêiner parado?

Não. Ao executar docker kill no sleeper parado, o Docker informa que o contêiner não está em execução; primeiro, inicie-o com docker start sleeper para então usar kill.

Ainda é possível usar docker exec depois de pausar um contêiner?

Não. No exemplo, docker exec web nginx -v informa que o contêiner está pausado; primeiro, é preciso executar docker unpause web.

Como recarregar a configuração do nginx sem parar o contêiner?

Envie HUP ao contêiner: docker kill -s HUP web2. O log mostra SIGHUP received, reconfiguring.

Atualizado 26 de outubro de 2026