Executar e Gerenciar Containers

DockerBeginner
Pratique Agora

Introdução

Os containers empacotam um processo junto com sua visão do sistema de arquivos e configurações de tempo de execução. Um motor de container, como o Docker, pode criar imagens, executar containers a partir dessas imagens, anexar armazenamento, exibir logs, executar comandos dentro de um container em execução e remover containers quando não forem mais necessários.

Neste laboratório, você utilizará o motor Docker já disponível na instância do LabEx. Para evitar o download de imagens públicas, o laboratório cria uma pequena imagem de prática a partir de uma imagem base local em cache. Você inspecionará o motor, criará uma imagem, executará um container nomeado com um bind mount, inspecionará logs e arquivos gerados, executará um comando dentro do container e limpará o container em execução.

Inspecionar o Motor de Container

Nesta etapa, você confirmará que o Docker está disponível e inspecionará as imagens locais. O fluxo de trabalho de um container começa por saber qual motor você está usando e quais imagens já estão presentes. Este laboratório evita downloads públicos utilizando uma imagem base em cache.

Entre no diretório do projeto.

cd /home/labex/project

Verifique a versão do Docker.

docker --version

Liste as imagens locais.

docker image ls

Você deverá ver gcr.io/k8s-minikube/kicbase:v0.0.37, que o laboratório utiliza como base para a criação local.

Revisar e Criar uma Imagem Local

Nesta etapa, você inspecionará o Dockerfile preparado e criará uma imagem local. Uma imagem é um modelo reutilizável de sistema de arquivos e metadados. Um container é uma instância em execução criada a partir de uma imagem.

Visualize o Dockerfile. A linha ENTRYPOINT é importante porque a imagem base em cache possui seu próprio ponto de entrada padrão. Este laboratório define um novo ponto de entrada para que o container inicie o script de prática diretamente.

cat Dockerfile

Crie a imagem e marque-a (tag) como lfcs-container-demo:1.0. A opção -t atribui um nome e uma tag, e o ponto final . indica ao Docker para usar o diretório atual como contexto de construção.

docker build -t lfcs-container-demo:1.0 .

Verifique a imagem após o sucesso da criação.

docker image ls lfcs-container-demo:1.0

Executar um Container Nomeado

Nesta etapa, você executará a imagem como um container em modo detached (desanexado). Detached significa que o container roda em segundo plano. O container será nomeado como lfcs-demo, e um bind mount conectará o diretório /home/labex/project/container-data no host ao diretório /data dentro do container.

Execute o container.

docker run -d --name lfcs-demo -v /home/labex/project/container-data:/data lfcs-container-demo:1.0

Exiba o ID do container.

docker ps -q --filter name=lfcs-demo

Liste os containers em execução e localize o lfcs-demo.

docker ps --filter name=lfcs-demo

Inspecionar Logs e Executar um Comando

Nesta etapa, você inspecionará o container em execução. Os logs mostram o que o processo conteinerizado imprime. Um bind mount permite verificar se o container gravou dados de volta no host. O comando docker exec executa um comando dentro do container em execução.

Dê um momento para o container gravar os logs.

sleep 3

Leia os logs recentes do container.

docker logs --tail 5 lfcs-demo

Verifique o arquivo gravado através do bind mount.

tail -n 5 container-data/container-output.log

Execute um comando dentro do container para confirmar que os dados montados estão visíveis a partir de dentro.

docker exec lfcs-demo sh -c 'test -f /data/container-output.log && echo container-data-visible'

Parar e Remover o Container

Nesta etapa, você fará a limpeza do container em execução. Parar um container encerra seu processo. Remover um container parado exclui o objeto do container, mas não remove a imagem que você criou.

Pare o container.

docker stop lfcs-demo

Remova o container parado.

docker rm lfcs-demo

Verifique a limpeza. O comando docker ps -a lista todos os containers, incluindo os parados. Após a remoção, o lfcs-demo não deve mais aparecer.

docker ps -a --filter name=lfcs-demo

Resumo

Você praticou um fluxo de trabalho básico completo do Docker: inspecionar o motor, usar uma imagem base local em cache, criar uma imagem com tag, executar um container nomeado em modo detached com bind mount, inspecionar logs, executar um comando dentro do container, e parar e remover o container. Estas são as operações fundamentais de containers que devem ser compreendidas antes de avançar para tópicos mais profundos de configuração do motor ou orquestração.