Como Usar Contêineres Docker

Uma fotografia de uma pessoa programando em um laptop.

Os contêineres são a essência de toda instalação do Docker. Eles servem como a base da plataforma Docker e permitem que você execute serviços em seu computador sem se preocupar com dependências e conflitos de versão. Aqui, mostramos o básico sobre como criar, gerenciar e personalizar contêineres Docker usando a ferramenta CLI do Docker.

Índice

  • Como Encontrar e Baixar uma Imagem Docker
  • Como Executar e Parar um Contêiner Docker
  • Como Inspecionar um Contêiner Docker
  • Como Personalizar um Contêiner Docker
  • Como Deletar Contêineres e Imagens Docker

Nota: Comece instalando o Docker em seu sistema Linux.

Como Encontrar e Baixar uma Imagem Docker

Os contêineres Docker são um tipo especial de ambiente de software que permite que você execute programas separados do restante do seu sistema original. Para alcançar isso, o Docker usa “imagens de software.” Estas são cópias estáticas de programas que servem como a base a partir da qual um contêiner começa.

Essa distinção entre imagem e contêiner permite que você recrie e adapte seu software da maneira que for necessária. Por exemplo, você pode ter uma imagem como “httpd” mas criar dois contêineres distintos a partir dela: “website1” e “website2.”

A maneira mais fácil de procurar uma nova imagem Docker é usar o subcomando search:

docker search httpd

Um terminal destacando a imagem Docker httpd da ferramenta CLI.

Você também pode procurar pacotes no site Docker Hub se preferir usar seu navegador da web.

Uma captura de tela mostrando a imagem Docker httpd do site Docker Hub.

Para baixar a imagem para seu sistema, execute o seguinte comando:

docker image pull httpd

Confirme que você adicionou corretamente sua nova imagem ao seu sistema usando o subcomando images:

docker images

Um terminal destacando a imagem Docker httpd instalada no sistema.

Criando uma Nova Imagem Usando Dockerfiles

Além de baixar imagens pré-construídas do Docker Hub, você pode construir imagens diretamente da CLI do Docker. Isso é útil se você quiser criar versões personalizadas de pacotes de software existentes ou se estiver portando novos aplicativos para o Docker.

Para fazer isso, primeiro crie uma pasta em seu diretório inicial para seus arquivos de construção:

mkdir ~/my-docker-image && cd ~/my-docker-image

Crie um novo Dockerfile usando seu editor de texto favorito:

nano ./Dockerfile

Cole as seguintes linhas de código dentro do seu novo Dockerfile:

FROM nginx  
COPY sample-site /usr/share/nginx/html

Crie uma pasta “sample-site” e copie ou crie um site HTML básico:

mkdir ./sample-site  
cp ~/index.html ./sample-site/

Salve seu novo Dockerfile e, em seguida, execute o seguinte comando para construí-lo em seu sistema:

docker build -t custom-nginx .

Verifique se sua nova imagem Docker está presente em sua lista de imagens Docker:

docker images

Um terminal destacando a imagem personalizada gerada a partir do subcomando de construção.

Criando uma Nova Imagem Usando Contêineres Existentes

A ferramenta CLI do Docker também pode construir novas imagens a partir dos contêineres que atualmente existem em seu sistema. Isso é útil se você já estiver trabalhando em um ambiente existente e quiser criar uma nova imagem a partir de sua configuração atual.

Para fazer isso, certifique-se de que seu contêiner não esteja em execução:

docker stop my-http-server

Execute o subcomando commit seguido pelo nome do seu contêiner e, em seguida, forneça o nome da sua nova imagem Docker:

docker commit my-http-server my-new-server-image

Confirme que sua nova imagem Docker está em seu sistema executando docker images.

Um terminal destacando a nova imagem personalizada de um contêiner Docker instalada no sistema.

Como Executar e Parar um Contêiner Docker

Com sua imagem Docker pronta, você pode agora começar a usá-la para criar seu primeiro contêiner. Para fazer isso, use o subcomando run seguido pelo nome da imagem que você deseja executar:

docker run httpd

Embora isso funcione para executar seu primeiro contêiner Docker, fazê-lo dessa maneira tomará sua sessão de shell atual. Para executar seu contêiner em segundo plano, acrescente a flag -d após o subcomando run:

docker run -d httpd

O subcomando run também pode aceitar várias flags adicionais que podem alterar o comportamento do seu novo contêiner Docker. Por exemplo, a flag --name permite que você adicione um nome personalizável ao seu contêiner:

docker run -d --name=my-http-server httpd

Por outro lado, você pode usar a flag --publish para redirecionar a porta de rede pela qual você pode acessar seu contêiner Docker. Isso é principalmente útil se você não quiser que seu contêiner assuma uma porta privilegiada:

docker run -d --name=my-http-server --publish 8080:80 httpd

Uma captura de tela mostrando um navegador da web abrindo o site hospedado pelo contêiner Docker personalizado.

Você pode verificar todos os contêineres Docker atualmente em execução em seu sistema executando o seguinte comando:

docker ps

Semelhante ao subcomando run, ps também pode aceitar uma série de flags que modificarão seu comportamento. Por exemplo, para visualizar os contêineres que estão atualmente parados, use a flag -a:

docker ps -a

Para desligar um contêiner em execução, use o subcomando stop seguido pelo ID do contêiner ou pelo nome do seu contêiner Docker:

docker stop my-http-server

Você pode reiniciar qualquer contêiner que você tenha parado executando novamente o subcomando start:

docker start my-http-server

Por um lado: aprenda o básico sobre hospedagem na web com Docker executando um site simples usando darkhttpd.

Pausando e Matando um Contêiner Docker

A ferramenta CLI do Docker também permite que você pause temporariamente e mate um processo de contêiner em execução. Isso pode ser útil se você estiver solucionando um problema com sua configuração do Docker e quiser isolar ou parar um contêiner que está se comportando mal.

Comece executando docker ps para listar todos os contêineres em execução no sistema.

Encontre o ID ou o nome do contêiner que você deseja gerenciar.

Um terminal destacando o contêiner Docker personalizado atualmente em execução no sistema.

Execute o subcomando pause seguido pelo nome do contêiner que você deseja suspender temporariamente:

docker pause my-http-server

Você pode retomar um processo suspenso executando o subcomando unpause:

docker unpause my-http-server

Para parar um processo que está se comportando mal, execute o subcomando kill seguido pelo nome do seu contêiner:

docker kill my-http-server

Como Inspecionar um Contêiner Docker

Conhecer os detalhes intrincados do seu contêiner é uma parte vital da manutenção da saúde do seu stack Docker. Isso permite que você olhe rapidamente para quaisquer problemas potenciais e pode ser a diferença entre corrigir e refazer toda a sua implantação.

Para ver uma visão geral do seu contêiner Docker, execute o subcomando inspect:

docker inspect my-http-server

Fazer isso imprimirá uma longa string JSON que descreve o estado atual de todo o seu contêiner. Você pode restringir isso usando o comando pipe para jq ou usando a flag embutida -f seguida pelo objeto JSON que você deseja imprimir:

docker inspect -f {{.Name}} my-http-server

Imprimindo Logs do Contêiner no Terminal

Além disso, você também pode rastrear e imprimir os logs de qualquer contêiner Docker atualmente em execução. Isso pode ser útil se você quiser verificar como seu serviço se comporta atualmente e olhar a saída que ele está retornando para STDOUT.

Para fazer isso, execute o subcomando logs seguido pelo nome do seu contêiner:

docker logs my-http-server

Você também pode executar o subcomando logs com a flag --follow para criar um log contínuo do seu serviço Docker. Isso é semelhante a executar tail -f no final de um pipe UNIX:

docker logs --follow my-http-server

Um terminal mostrando os logs contínuos para um contêiner Docker.

Semelhante a outros subcomandos, você também pode adicionar várias flags para personalizar a saída do log do seu contêiner Docker. Por exemplo, a flag --timestamps adiciona um timestamp detalhado para cada mensagem que seu contêiner envia para seu STDOUT:

docker logs --timestamps my-http-server

A flag --details imprimirá até mesmo as variáveis de ambiente que você definiu para seu contêiner Docker atual. Enquanto isso, a flag --since permite que você mostre apenas logs que ocorreram após um determinado ponto no tempo:

docker logs --details --since 8m my-http-server

Um terminal mostrando uma saída de log mais detalhada de um contêiner Docker atualmente em execução.

Como Personalizar um Contêiner Docker

Em sua essência, um Contêiner Docker é uma versão pequena e simplificada do Linux rodando em cima do seu sistema atual. Isso significa que, semelhante a uma máquina virtual, é possível acessar e recuperar os dados dentro do seu contêiner.

Para copiar um arquivo local do seu computador host para o contêiner, execute o subcomando cp:

docker cp ~/my-file my-http-server:/tmp

Às vezes, você também precisará “entrar” nos contêineres abrindo um shell dentro deles. Dessa forma, você pode editar arquivos, instalar binários e personalizá-los de acordo com suas necessidades:

docker exec -it my-http-server /bin/bash

Agora, você poderia, por exemplo, editar “index.html” e criar uma página inicial para o site dentro.

Um terminal mostrando um arquivo HTML copiado para o shell raiz de um contêiner Docker.

Para sair do shell do contêiner, pressione Ctrl + D ou execute exit no terminal.

Um terminal destacando o comando de saída do shell raiz do contêiner Docker.

Bom saber: aprenda como mover um contêiner Docker existente para um novo sistema.

Como Deletar Contêineres e Imagens Docker

Remover contêineres e imagens Docker não utilizados é uma parte importante da manutenção geral da sua implantação. Fazer isso permite que você remova arquivos desnecessários do seu servidor, economizando espaço de armazenamento a longo prazo.

Antes de deletar um contêiner, certifique-se de que você o parou primeiro:

docker stop my-http-server

Agora, remova o contêiner usando o subcomando rm:

docker rm my-http-server

Confirme que você deletou corretamente seu antigo contêiner Docker executando docker ps -a.

Um terminal mostrando todos os contêineres Docker disponíveis, incluindo os que estão atualmente parados.

Delete sua imagem Docker original da sua implantação Docker:

docker rmi my-new-server-image

Um terminal destacando a saída da exclusão de uma imagem Docker do sistema.

Verifique se você removeu corretamente sua imagem Docker original executando docker images.

Um terminal mostrando a lista de imagens Docker atualizada.

Aprender como criar, gerenciar e remover contêineres Docker é apenas algumas das coisas que você pode fazer com seu servidor Linux. Explore o profundo mundo da administração de sistemas Linux hospedando um servidor e um hub de contêiner Docker com XPipe.

Crédito da imagem: Shamin Haky via Unsplash. Todas as alterações e capturas de tela por Ramces Red.