Gerenciando o Ciclo de Vida do Container
Entender como gerenciar o ciclo de vida de um container é crucial para o uso eficaz do Docker. Nesta etapa, exploraremos vários comandos para controlar os estados do container e entender o ciclo de vida do container.
Estados do Ciclo de Vida do Container
Um container Docker pode existir em vários estados:
- Created (Criado): Container criado, mas não iniciado
- Running (Em execução): Container está atualmente em execução
- Paused (Pausado): A execução do container está pausada
- Stopped (Parado): Container está parado, mas ainda existe
- Removed (Removido): Container é excluído
Vamos explorar como fazer a transição entre esses estados.
Criando um Container sem Iniciá-lo
Você pode criar um container sem iniciá-lo usando o comando create:
docker create --name test-container nginx
Isso cria um container, mas não o inicia. Verifique seu status:
docker ps -a
Você deve ver o novo container com o status "Created" (Criado):
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f4ab92d1234 nginx "/docker-entrypoint.…" 5 seconds ago Created test-container
a72369167c21 nginx "/docker-entrypoint.…" 40 minutes ago Up 30 minutes 0.0.0.0:8080->80/tcp my-nginx
bc123def456a redis "docker-entrypoint.s…" 10 minutes ago Up 10 minutes 6379/tcp redis-server
Iniciando um Container Criado
Para iniciar o container criado:
docker start test-container
Verifique se ele está em execução:
docker ps
Pausando e Despausando Containers
O Docker permite que você pause um container, o que congela todos os processos dentro dele:
docker pause test-container
Verifique seu status:
docker ps
Saída:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f4ab92d1234 nginx "/docker-entrypoint.…" 2 minutes ago Up 1 minute (Paused) test-container
a72369167c21 nginx "/docker-entrypoint.…" 42 minutes ago Up 32 minutes 0.0.0.0:8080->80/tcp my-nginx
bc123def456a redis "docker-entrypoint.s…" 12 minutes ago Up 12 minutes 6379/tcp redis-server
Para retomar o container:
docker unpause test-container
Verifique se ele está em execução novamente:
docker ps
Parando e Reiniciando Containers
Para parar um container graciosamente (enviando SIGTERM, depois SIGKILL após um período de carência):
docker stop test-container
Para matar um container à força (enviando SIGKILL):
docker start test-container ## Start it again first
docker kill test-container ## Then kill it
Para reiniciar um container (para e inicia novamente):
docker start test-container ## Start it again first
docker restart test-container
Removendo Containers
Para remover um container parado:
docker stop test-container ## Make sure it's stopped first
docker rm test-container
Verifique se ele foi removido:
docker ps -a | grep test-container
Você não deve obter nenhuma saída, indicando que o container foi removido.
Removendo um Container em Execução
Você pode remover à força um container em execução:
docker run --name temp-container -d nginx
docker rm -f temp-container
Políticas de Reinício do Container
O Docker permite que você defina políticas de reinício para containers:
docker run --name always-restart --restart always -d nginx
Este container reiniciará automaticamente se sair ou se o Docker reiniciar.
Verifique a política de reinício:
docker inspect --format='{{.HostConfig.RestartPolicy.Name}}' always-restart
Saída:
always
Vamos parar e remover este container:
docker rm -f always-restart
Entender esses comandos do ciclo de vida oferece controle total sobre seus containers Docker, permitindo que você gerencie eficientemente seus estados com base nas necessidades de sua aplicação.