Introdução
O Docker é uma plataforma poderosa que revoluciona o desenvolvimento e implantação de software através da tecnologia de contentores. Este tutorial fornece um guia abrangente para desenvolvedores e profissionais de TI para compreender os fundamentos do Docker e executar com sucesso o seu primeiro contêiner, permitindo ambientes de aplicação eficientes e consistentes em diferentes sistemas.
Fundamentos do Docker
O que é o Docker?
O Docker é uma plataforma de código aberto que permite aos desenvolvedores automatizar a implantação, escalonamento e gerenciamento de aplicações através da contencionalização. Ele fornece um ambiente leve, portátil e autossuficiente para executar aplicações.
Conceitos Principais
Contêineres
Contêineres são pacotes executáveis, leves e autônomos que incluem tudo o que é necessário para executar uma aplicação: código, tempo de execução, ferramentas de sistema, bibliotecas e configurações.
graph LR
A[Código da Aplicação] --> B[Contêiner]
C[Dependências] --> B
D[Ambiente de Tempo de Execução] --> B
Imagens Docker
Imagens Docker são modelos de leitura-somente usados para criar contêineres. Elas servem como base para a criação de contêineres e podem ser armazenadas em repositórios como o Docker Hub.
Arquitetura Docker
| Componente | Descrição |
|---|---|
| Cliente Docker | Interface de linha de comando para interagir com o Docker |
| Demônio Docker | Serviço em segundo plano que gerencia objetos Docker |
| Registro Docker | Sistema de armazenamento e distribuição de imagens Docker |
Principais Vantagens
- Consistência: Garante ambientes idênticos entre desenvolvimento e produção
- Isolamento: Separa aplicações e suas dependências
- Eficiência: Leve em comparação com máquinas virtuais tradicionais
- Escalabilidade: Fácil escalonamento horizontal de aplicações
Casos de Uso
- Implantação de microserviços
- Integração Contínua/Entrega Contínua (CI/CD)
- Desenvolvimento de aplicações nativas de nuvem
- Ambientes de desenvolvimento e teste
Começando com o LabEx
Para aprendizado prático e experiência com o Docker, o LabEx fornece ambientes interativos para ajudá-lo a dominar as tecnologias de contencionalização.
Docker vs. Virtualização Tradicional
graph TD
A[Virtualização Tradicional] --> B[Sistema Operacional completo para cada aplicação]
A --> C[Alto Custo de Recursos]
D[Contencialização Docker] --> E[Kernel de SO compartilhado]
D --> F[Contêineres Leves]
Compreendendo esses fundamentos, você estará bem preparado para mergulhar no Docker e aproveitar seus poderosos recursos de contencionalização.
Configuração e Instalação
Requisitos do Sistema
Antes de instalar o Docker, certifique-se que o seu sistema Ubuntu 22.04 atende aos seguintes requisitos:
- Sistema operacional de 64 bits
- Kernel Linux 3.10 ou superior
- Mínimo de 2 GB de RAM
- Espaço de disco suficiente
Métodos de Instalação
Método 1: Repositório Oficial do Docker
## Atualizar índice de pacotes
sudo apt-get update
## Instalar pacotes necessários
sudo apt-get install ca-certificates curl gnupg lsb-release
## Adicionar a chave GPG oficial do Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## Configurar o repositório estável
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## Instalar o Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
Método 2: Script de Conveniência
## Baixar e executar o script de instalação do Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Configuração Pós-Instalação
Configuração do Grupo de Usuários
## Adicionar o usuário atual ao grupo docker
sudo usermod -aG docker $USER
## Verificar a instalação
docker --version
Arquivos de Configuração do Docker
| Caminho do Arquivo | Finalidade |
|---|---|
/etc/docker/daemon.json |
Configuração do daemon Docker |
~/.docker/config.json |
Configurações do Docker específicas do usuário |
Instalação do Docker Compose
## Baixar o Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
## Aplicar permissões executáveis
sudo chmod +x /usr/local/bin/docker-compose
## Verificar a instalação
docker-compose --version
Fluxo de Verificação
graph TD
A[Instalar Docker] --> B[Adicionar Usuário ao Grupo Docker]
B --> C[Verificar Versão do Docker]
C --> D[Executar Contêiner de Teste]
D --> E[Confirmar Configuração Bem-Sucedida]
Testando a Instalação do Docker
## Executar o contêiner hello-world
sudo docker run hello-world
Recomendação do LabEx
Para um aprendizado abrangente e prático do Docker, o LabEx oferece ambientes interativos que o guiam por meio de configurações e casos de uso práticos do Docker.
Solução de Problemas Comuns
- Reiniciar o serviço Docker:
sudo systemctl restart docker - Verificar o status do Docker:
sudo systemctl status docker - Verificar a conectividade de rede:
docker info
Executando o Primeiro Contêiner
Comandos Básicos do Docker
Puxando uma Imagem
## Puxar a imagem Ubuntu do Docker Hub
docker pull ubuntu:latest
Comandos do Ciclo de Vida do Contêiner
| Comando | Descrição |
|---|---|
docker run |
Criar e iniciar um novo contêiner |
docker ps |
Listar contêineres em execução |
docker ps -a |
Listar todos os contêineres |
docker start |
Iniciar um contêiner parado |
docker stop |
Parar um contêiner em execução |
Execução Interativa de Contêiner
## Executar o contêiner Ubuntu interativamente
docker run -it ubuntu:latest /bin/bash
Modos de Contêiner
graph LR
A[Modos de Contêiner] --> B[Modo Interativo]
A --> C[Modo Desacoplado]
A --> D[Modo em Primeiro Plano]
A --> E[Modo de Fundo]
Exemplo de Modo Desacoplado
## Executar o servidor web Nginx em segundo plano
docker run -d -p 80:80 nginx:latest
Mapeamento de Portas
## Mapear a porta do contêiner para a porta do host
docker run -d -p 8080:80 nginx:latest
Montagem de Volumes
## Montar o diretório do host no contêiner
docker run -v /host/path:/container/path ubuntu:latest
Variáveis de Ambiente
## Definir variáveis de ambiente
docker run -e MYSQL_ROOT_PASSWORD=secret mysql:latest
Gerenciamento de Contêineres
## Remover um contêiner
docker rm container_name
## Remover todos os contêineres parados
docker container prune
Operações Avançadas de Contêineres
Inspecionando Contêineres
## Visualizar detalhes do contêiner
docker inspect container_name
## Verificar logs do contêiner
docker logs container_name
Boas Práticas
- Usar imagens oficiais
- Manter contêineres leves
- Usar tags de imagem específicas
- Implementar limites de recursos adequados
Recomendação de Aprendizado do LabEx
O LabEx fornece tutoriais abrangentes de gerenciamento de contêineres Docker para ajudá-lo a dominar as habilidades práticas de contêineres.
Fluxo de Trabalho do Contêiner
graph TD
A[Puxar Imagem] --> B[Criar Contêiner]
B --> C[Iniciar Contêiner]
C --> D[Interagir/Utilizar Contêiner]
D --> E[Parar Contêiner]
E --> F[Remover Contêiner]
Cenários Comuns
| Cenário | Comando Docker |
|---|---|
| Servidor Web | docker run -d -p 80:80 nginx |
| Banco de Dados | docker run -d mysql:latest |
| Aplicativo Python | docker run -it python:3.9 |
Dicas de Solução de Problemas
- Verificar o status do contêiner:
docker ps - Visualizar logs do contêiner:
docker logs - Reiniciar o contêiner:
docker restart
Resumo
Seguindo este tutorial, você aprendeu os passos essenciais para configurar o Docker, configurar seu ambiente e executar seu primeiro contêiner. O Docker oferece uma solução robusta para empacotamento, distribuição e implantação de aplicativos, permitindo que desenvolvedores criem soluções de software portáteis e escaláveis com mínima configuração e máxima consistência em diferentes ambientes de computação.



