cd ..
DOCKER

Gerenciando containers no dia a dia com Docker

Gerenciando containers no dia a dia com Docker

Depois de entender o que é um container e como o Docker organiza imagem, container e configurações, o próximo passo natural é aprender a manter esses containers vivos: criar, sair sem derrubar, pausar, monitorar e, quando não servem mais, remover.

Estas anotações nasceram justamente desse momento de estudo, testando comando por comando em containers Ubuntu.

Criando e gerenciando os primeiros containers

Ao rodar um container interativo, três flags aparecem o tempo todo:

FlagFunção
-iinteratividade — mantém o STDIN aberto
-taloca um terminal (TTY)
-itas duas coisas juntas — terminal interativo de verdade

Na prática, o comando mais comum para começar é:

docker container run -it ubuntu

Saindo do container sem finalizar ele

Aqui mora uma pegadinha comum: existem duas formas bem diferentes de “sair” de um container.

Para voltar a um container que ainda está rodando (saiu com Ctrl+P+Q), basta anexar o terminal de novo:

docker container attach <id_do_container>

Dando nome aos containers

Trabalhar com IDs gerados aleatoriamente cansa rápido. Dá para nomear o container na criação:

docker container run --name tostao -it ubuntu

E usar esse nome no lugar do ID para reconectar:

docker container attach tostao

Se o container foi finalizado com Ctrl+D, o attach sozinho não resolve — primeiro é preciso religá-lo e só depois anexar o terminal:

docker container start tostao
docker container attach tostao

Pausando e despausando

Pausar congela os processos do container sem finalizá-los:

docker container pause tostao
docker container unpause tostao

Parando e removendo

Quando o container não é mais necessário:

docker container stop tostao
docker container rm tostao

E para limpar de uma vez todos os containers já parados, sem precisar removê-los um a um:

docker container prune

Visualizando métricas e uso de recursos

O stats dá um panorama geral do consumo dos containers em execução:

docker container stats

Algumas variações úteis:

docker container stats -a

Lista todos os containers (inclusive parados) e mostra as estatísticas de cada um.

docker container stats --no-stream

Imprime as estatísticas uma única vez, sem ficar atualizando continuamente na tela.

Já o top mostra todos os processos em execução dentro de um container específico — não estatísticas de consumo, mas o que de fato está rodando lá dentro:

docker container top tostao

Resumindo a diferença: stats mostra quanto de recurso está sendo usado; top mostra o quê está sendo executado.

Consultando logs

O docker container logs é o primeiro lugar para investigar o que um container está fazendo:

docker container logs tostao

Algumas flags que aparecem com frequência:

FlagFunção
--detailsmostra detalhes extras fornecidos aos logs
-f, --followacompanha a saída dos logs em tempo real
-n, --tailnúmero de linhas a exibir a partir do fim (padrão: todas)
-t, --timestampexibe o timestamp de cada linha
--sincemostra logs a partir de um timestamp (ex: 2013-01-02T13:23:37Z) ou de forma relativa (ex: 42m para 42 minutos atrás)
--untilmostra logs até um timestamp, absoluto ou relativo, no mesmo formato do --since

Imagem e container: o save e o personagem

Um jeito que ajudou a fixar a diferença entre imagem e container: pense em um jogo.

docker run --name tostao -it ubuntu

E, seguindo o mesmo padrão de comandos do Docker, remover uma imagem usa a mesma lógica de container rm:

docker image rm <nome_da_imagem>

Conclusão

Nenhum desses comandos é complicado isoladamente, mas juntos formam o ciclo de vida completo de um container: criar, entrar e sair sem derrubar, pausar quando necessário, investigar pelos logs, medir consumo e, por fim, limpar o que não serve mais. É esse ciclo que se repete o tempo todo no dia a dia com Docker.

Referências

O que achou?