Introdução
Este tutorial guiará você pelo processo de execução e encerramento rápido de contêineres Docker, proporcionando uma introdução abrangente ao mundo do Docker para iniciantes. Você aprenderá a instalar e configurar o Docker em seu sistema, explorará os fundamentos da execução de contêineres Docker e descobrirá aplicações práticas e melhores práticas para gerenciar seus contêineres de forma eficaz.
Compreendendo o Docker: O Que e Porquê
O Docker é uma poderosa plataforma de código aberto que permite a desenvolvedores e profissionais de TI construir, implantar e executar aplicações em um ambiente consistente e confiável. Ele utiliza a tecnologia de contentores para empacotar uma aplicação e todas as suas dependências em um único contêiner portátil, garantindo que a aplicação execute da mesma forma, independentemente da infraestrutura subjacente.
O que é o Docker?
O Docker é uma plataforma de software que permite construir, implantar e executar aplicações em contentores. Um contêiner é uma unidade de software padronizada que empacota o código e todas as suas dependências, permitindo que a aplicação execute de forma rápida e confiável de um ambiente computacional para outro. Os contentores são leves, portáteis e autocontidos, tornando-os uma solução ideal para o desenvolvimento e implantação de software modernos.
Por que Usar o Docker?
Existem vários benefícios chave ao usar o Docker:
Consistência: O Docker garante que sua aplicação execute da mesma forma, independentemente da infraestrutura subjacente. Isso elimina o problema "funciona na minha máquina", onde uma aplicação funciona bem no computador de um desenvolvedor, mas falha na produção.
Escalabilidade: O Docker facilita a escalabilidade da sua aplicação executando várias instâncias de um contêiner, manualmente ou automaticamente.
Eficiência: Os contentores são leves e utilizam menos recursos do que máquinas virtuais, permitindo que você execute mais aplicações no mesmo hardware.
Portabilidade: Os contentores Docker podem ser executados em qualquer sistema que tenha o Docker instalado, facilitando a movimentação de suas aplicações entre diferentes ambientes, como desenvolvimento, testes e produção.
Isolamento: Cada contêiner Docker é isolado dos outros, proporcionando um ambiente seguro e confiável para executar suas aplicações.
Arquitetura do Docker
O Docker utiliza uma arquitetura cliente-servidor, onde o cliente Docker se comunica com o daemon Docker, que é responsável por construir, executar e gerenciar os contentores Docker. O daemon Docker roda na máquina hospedeira, e o cliente pode ser executado na mesma máquina ou em uma máquina remota.
graph LR
A[Cliente Docker] -- Comunica-se com --> B[Daemon Docker]
B -- Gerencia --> C[Contêineres Docker]
B -- Gerencia --> D[Imagens Docker]
Na próxima seção, abordaremos como instalar e configurar o Docker em seu sistema.
Instalando e Configurando o Docker no Seu Sistema
Instalando o Docker no Ubuntu 22.04
Para instalar o Docker no seu sistema Ubuntu 22.04, siga estas etapas:
- Atualize o índice de pacotes e instale as dependências necessárias:
sudo apt-get update
sudo apt-get install -y \
ca-certificates \
curl \
gnupg \
lsb-release
- Adicione a chave GPG oficial do Docker:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- Configure o repositório do Docker:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- Instale o motor Docker, containerd e Docker Compose:
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
- Verifique a instalação executando a imagem
hello-world:
sudo docker run hello-world
Configurando o Docker
Após instalar o Docker, você pode configurá-lo de acordo com suas necessidades. Aqui estão algumas opções de configuração comuns:
- Gerenciar o Docker como um usuário não root: Por padrão, os comandos Docker exigem privilégios de root. Para executar comandos Docker sem
sudo, adicione seu usuário ao grupodocker:
sudo usermod -aG docker $USER
- Definir opções padrão do daemon Docker: Você pode personalizar o comportamento do daemon Docker editando o arquivo
/etc/docker/daemon.json. Por exemplo, para alterar o driver de log padrão:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "5"
}
}
- Configurar o Docker Compose: Docker Compose é uma ferramenta para definir e executar aplicações Docker multi-contêiner. Você pode configurar o comportamento padrão do Docker Compose editando o arquivo
~/.docker/config.json.
Agora que você instalou e configurou o Docker, vamos prosseguir para a execução de contêineres Docker.
Executando Contêineres Docker: Conceitos Básicos
Compreendendo Imagens Docker
Uma imagem Docker é um modelo de leitura-somente que contém as instruções para criar um contêiner Docker. As imagens são usadas para empacotar uma aplicação e todas as suas dependências, garantindo que a aplicação execute da mesma forma, independentemente da infraestrutura subjacente.
Você pode criar suas próprias imagens Docker ou usar imagens pré-construídas do Docker Hub, um repositório público de imagens Docker.
Executando um Contêiner Docker
Para executar um contêiner Docker, use o comando docker run. Aqui está um exemplo de execução do servidor web nginx em um contêiner Docker:
docker run -d -p 80:80 --name my-nginx nginx
Vamos decompor o comando:
docker run: Executa um novo contêiner Docker.-d: Executa o contêiner em modo desacoplado, o que significa que ele roda em segundo plano.-p 80:80: Mapeia a porta 80 na máquina hospedeira para a porta 80 no contêiner.--name my-nginx: Atribui o nome "my-nginx" ao contêiner.nginx: O nome da imagem Docker a ser usada.
Listando Contêineres em Execução
Para ver uma lista de contêineres Docker em execução, use o comando docker ps:
docker ps
Isso exibirá uma tabela com informações sobre os contêineres em execução, incluindo o ID do contêiner, a imagem usada, o comando sendo executado, a hora de criação, o status e as portas.
Inspecionando um Contêiner em Execução
Para obter informações mais detalhadas sobre um contêiner em execução, use o comando docker inspect:
docker inspect my-nginx
Isso produzirá um objeto JSON com informações detalhadas sobre o contêiner, incluindo sua configuração, configurações de rede e uso de recursos.
Na próxima seção, abordaremos como interagir com contêineres Docker.
Interagindo com Contêineres Docker
Acessando o Shell do Contêiner
Para acessar o shell de um contêiner Docker em execução, use o comando docker exec:
docker exec -it my-nginx bash
Isso abrirá uma sessão de terminal interativo dentro do contêiner my-nginx, permitindo que você execute comandos dentro do contêiner.
Copiando Arquivos para e de Contêineres
Você pode copiar arquivos entre o sistema hospedeiro e um contêiner Docker usando o comando docker cp:
## Copiar um arquivo do hospedeiro para o contêiner
docker cp /path/on/host my-nginx:/path/in/container
## Copiar um arquivo do contêiner para o hospedeiro
docker cp my-nginx:/path/in/container /path/on/host
Registrando a Saída do Contêiner
Para visualizar os logs de um contêiner Docker em execução, use o comando docker logs:
docker logs my-nginx
Isso exibirá os logs de saída padrão (stdout) e erro padrão (stderr) do contêiner.
Monitorando o Uso de Recursos do Contêiner
Você pode monitorar o uso de recursos de um contêiner Docker usando o comando docker stats:
docker stats my-nginx
Isso exibirá uma transmissão ao vivo do uso de CPU, memória, rede e E/S de disco para o contêiner my-nginx.
Ligando-se a um Contêiner em Execução
Para se conectar aos fluxos de entrada, saída e erro padrão de um contêiner Docker em execução, use o comando docker attach:
docker attach my-nginx
Isso conectará seu terminal aos fluxos padrão do contêiner, permitindo que você interaja com a aplicação em execução.
Na próxima seção, abordaremos como parar, iniciar e remover contêineres Docker.
Parando, Iniciando e Removendo Contêineres
Parando um Contêiner em Execução
Para parar um contêiner Docker em execução, use o comando docker stop:
docker stop my-nginx
Isso parará o contêiner graciosamente, permitindo que ele execute quaisquer tarefas de limpeza necessárias antes de desligar.
Iniciando um Contêiner Parado
Para iniciar um contêiner Docker parado, use o comando docker start:
docker start my-nginx
Isso iniciará o contêiner usando a mesma configuração que quando foi executado originalmente.
Removendo um Contêiner
Para remover um contêiner Docker, use o comando docker rm:
docker rm my-nginx
Isso removerá o contêiner do sistema, mas não removerá quaisquer imagens Docker associadas.
Removendo Múltiplos Contêineres
Você pode remover vários contêineres de uma vez usando o comando docker rm com a opção -f (forçar):
docker rm -f container1 container2 container3
Isso removerá os contêineres especificados à força, mesmo que estejam em execução.
Removendo Contêineres Parados
Para remover todos os contêineres Docker parados, você pode usar o seguinte comando:
docker container prune
Isso removerá todos os contêineres parados, liberando espaço em disco no seu sistema.
Na próxima seção, exploraremos algumas aplicações práticas de contêineres Docker.
Aplicações Práticas de Contêineres Docker
Implantação de Aplicações Web
Um dos casos de uso mais comuns para contêineres Docker é a implantação de aplicações web. O Docker permite empacotar sua aplicação, juntamente com suas dependências, em um único contêiner que pode ser facilmente implantado em diferentes ambientes, como desenvolvimento, pré-produção e produção.
Arquitetura de Microserviços
O Docker é adequado para construir e implantar aplicações baseadas em microserviços. Cada microserviço pode ser empacotado em um contêiner separado, facilitando a escalabilidade, atualização e manutenção de componentes individuais da aplicação.
Integração Contínua e Implantação (CI/CD)
O Docker integra-se bem com pipelines CI/CD, permitindo construir, testar e implantar suas aplicações de forma consistente e automatizada. Contêineres Docker podem ser usados como ambientes de construção, ambientes de teste e alvos de implantação.
Processamento e Análise de Dados
Contêineres Docker podem ser usados para executar tarefas de processamento e análise de dados, como processamento em lote, processamento em fluxo e aprendizado de máquina. Ao empacotar todo o pipeline de processamento em um contêiner, você pode garantir consistência e portabilidade em diferentes ambientes.
Ambientes de Desenvolvimento e Teste
O Docker pode ser usado para criar ambientes de desenvolvimento e teste consistentes e isolados. Desenvolvedores podem usar o Docker para configurar seus ambientes de desenvolvimento locais, enquanto equipes de QA podem usar o Docker para criar ambientes de teste padronizados.
Computação Sem Servidor
O Docker pode ser usado como base para plataformas de computação sem servidor, onde aplicações são implantadas e escalonadas como contêineres individuais, sem a necessidade de gerenciar a infraestrutura subjacente.
Internet das Coisas (IoT)
A natureza leve e portátil do Docker o torna adequado para aplicações IoT, onde dispositivos podem ter recursos limitados. Contêineres Docker podem ser usados para empacotar e implantar aplicações IoT em uma frota de dispositivos.
Na próxima seção, discutiremos as melhores práticas para gerenciar contêineres Docker.
Melhores Práticas para Gerenciar Contêineres Docker
Utilize Imagens Base Leves
Ao criar suas próprias imagens Docker, utilize imagens base leves, como alpine ou scratch, para minimizar o tamanho dos seus contêineres e melhorar seu desempenho.
Otimize as Camadas do Dockerfile
Organize seu Dockerfile para aproveitar o mecanismo de cache de camadas do Docker. Agrupe instruções relacionadas para minimizar o número de camadas e melhorar os tempos de construção.
Utilize Variáveis de Ambiente para Configuração
Armazene dados de configuração, como strings de conexão de banco de dados ou chaves API, em variáveis de ambiente, em vez de codificá-las em seu código de aplicação ou Dockerfile.
Implemente Log e Monitoramento
Configure seus contêineres Docker para registrar eventos e métricas importantes e utilize ferramentas como Prometheus, Grafana ou o ELK stack para monitorar a saúde e o desempenho de seus contêineres.
Gerencie Segredos do Contêiner
Utilize ferramentas como Docker Secrets ou HashiCorp Vault para gerenciar de forma segura dados confidenciais, como senhas ou chaves API, aos quais seus contêineres precisam ter acesso.
Automatize a Gestão do Ciclo de Vida do Contêiner
Integre o Docker ao seu pipeline CI/CD para automatizar a construção, teste e implantação de seus contêineres. Utilize ferramentas como Docker Compose, Kubernetes ou LabEx para gerenciar o ciclo de vida de seus contêineres.
Proteja seus Contêineres
Mantenha seu daemon Docker e contêineres seguros seguindo as melhores práticas, como executar contêineres como usuários não-root, utilizando sistemas de arquivos somente leitura e implementando políticas de rede.
Otimize o Uso de Recursos do Contêiner
Monitore o uso de recursos de seus contêineres e otimize suas alocações de recursos para garantir a utilização eficiente de sua infraestrutura.
Mantenha a Higiene do Contêiner
Limpe e remova regularmente imagens e contêineres Docker não utilizados para liberar espaço em disco e manter um ambiente Docker saudável.
Seguindo essas melhores práticas, você pode gerenciar e manter seus contêineres Docker de forma eficaz, garantindo implantação e operação de aplicações confiáveis e eficientes.
Resumo
Ao final deste tutorial "Executando e Fechar Contêineres Docker Rapidamente: Um Guia para Iniciantes", você terá um conhecimento sólido do Docker e a capacidade de executar, interagir e fechar seus contêineres Docker rapidamente. Você também aprenderá boas práticas valiosas para gerenciar seu ambiente Docker, permitindo que você otimize seus processos de desenvolvimento e implantação.



