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.



