Como Usar Contêineres Docker

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
Você também pode procurar pacotes no site Docker Hub se preferir usar seu navegador da web.

Para baixar a imagem para seu sistema, execute o seguinte comando:
docker image pull httpdConfirme que você adicionou corretamente sua nova imagem ao seu sistema usando o subcomando images:
docker images
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-imageCrie um novo Dockerfile usando seu editor de texto favorito:
nano ./DockerfileCole as seguintes linhas de código dentro do seu novo Dockerfile:
FROM nginx
COPY sample-site /usr/share/nginx/htmlCrie 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
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-serverExecute 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-imageConfirme que sua nova imagem Docker está em seu sistema executando docker images.

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 httpdEmbora 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 httpdO 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 httpdPor 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
Você pode verificar todos os contêineres Docker atualmente em execução em seu sistema executando o seguinte comando:
docker psSemelhante 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 -aPara 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-serverVocê pode reiniciar qualquer contêiner que você tenha parado executando novamente o subcomando start:
docker start my-http-serverPor 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.

Execute o subcomando pause seguido pelo nome do contêiner que você deseja suspender temporariamente:
docker pause my-http-serverVocê pode retomar um processo suspenso executando o subcomando unpause:
docker unpause my-http-serverPara parar um processo que está se comportando mal, execute o subcomando kill seguido pelo nome do seu contêiner:
docker kill my-http-serverComo 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-serverFazer 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-serverImprimindo 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-serverVocê 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
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-serverA 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
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/bashAgora, você poderia, por exemplo, editar “index.html” e criar uma página inicial para o site dentro.

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

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-serverAgora, remova o contêiner usando o subcomando rm:
docker rm my-http-serverConfirme que você deletou corretamente seu antigo contêiner Docker executando docker ps -a.

Delete sua imagem Docker original da sua implantação Docker:
docker rmi my-new-server-image
Verifique se você removeu corretamente sua imagem Docker original executando docker images.

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.