🐳 Docker: Guia Completo para Iniciantes
Este documento é um guia de referência rápida e prática para quem está começando com Docker. Ele aborda conceitos, instalação, comandos essenciais e a criação de ambientes.
1. Conceitos Fundamentais
O que são Containers?
Um container é um pacote de software padronizado que agrupa o código de uma aplicação com todas as suas dependências (bibliotecas, configurações, binários) para que a aplicação execute de forma rápida e confiável em qualquer ambiente.
O que é uma Imagem?
- Imagem: É o “molde” ou “projeto” (blueprint). É estática e somente leitura (ex: Ubuntu, Node, Nginx).
- Container: É a instância em execução de uma imagem.
Container vs. Máquina Virtual (VM)
| Característica | Container | Máquina Virtual (VM) |
|---|---|---|
| Sistema Operacional | Compartilha o Kernel do Host (Linux) | Possui S.O. completo próprio |
| Tamanho | Leve (Megabytes) | Pesado (Gigabytes) |
| Boot | Instantâneo (Segundos) | Lento (Minutos) |
| Desempenho | Nativo | Overhead de virtualização |
2. Gerenciando o Serviço Docker
Como iniciar e verificar o status do Docker em diferentes sistemas operacionais.
🪟 Windows (PowerShell)
Geralmente gerenciado pelo Docker Desktop, mas pode ser controlado via terminal (Admin).
# Iniciar serviço
Start-Service docker
# Verificar status
Get-Service docker
🐧 Linux (Bash)
O Docker roda como um serviço nativo (daemon).
# Iniciar serviço
sudo systemctl start docker
# Habilitar no boot (iniciar com o sistema)
sudo systemctl enable docker
# Verificar status
sudo systemctl status docker
🍎 macOS
-
Gerenciado pelo Docker Desktop.
-
Inicie o aplicativo via Launchpad.
-
Verifique no terminal: docker version
3. Ciclo de Vida: Comandos Básicos
Onde encontrar imagens? O repositório oficial é o Docker Hub.
Baixar e Executar (Docker Run)
O comando docker run baixa a imagem (se não existir localmente) e cria um container novo.
Sintaxe: docker run [flags] <imagem>
Exemplos:
# Baixa e roda (prende o terminal)
docker run ubuntu
Modo Interativo (acessa o terminal do container)
-i: interativo | -t: terminal (tty)
docker run -it ubuntu
Rodando em Background (Detached)
Para liberar o terminal enquanto o serviço roda, usamos a flag -d.
# Exemplo com Nginx rodando em segundo plano
docker run -d nginx
````
**Listar Containers**
```Bash
# Lista apenas containers em execução (ativos)
docker ps
# Lista TODOS os containers (inclusive parados/histórico)
docker ps -a
4. Configurações de Execução
Expondo Portas
Para acessar a aplicação do container no navegador da sua máquina (Host). Flag: -p
# Acessível em localhost:8080 (mapeia para a porta 80 do container)
docker run -d -p 8080:80 nginx
Nomeando Containers
Para facilitar o gerenciamento e não depender de IDs aleatórios. Flag: –name
docker run -d -p 80:80 --name meu-servidor-web nginx
Persistência de Dados (Volumes)
Se o container for removido, os dados somem. Use volumes para persistir dados ou injetar configurações. Flag: -v
# Exemplo: Montando um arquivo de configuração personalizado no Nginx
docker run -d \
-p 8080:80 \
-v /meus-projetos/nginx.conf:/etc/nginx/nginx.conf \
nginx
5. Manutenção e Monitoramento
Logs
Essencial para debugar aplicações que rodam em background.
# Ver últimos logs
docker logs <nome_ou_id>
# Acompanhar logs em tempo real (follow)
docker logs -f <nome_ou_id>
Parar, Iniciar e Reiniciar
# Parar um container em execução (Graceful shutdown)
docker stop <nome_ou_id>
# Iniciar um container que está parado (NÃO cria um novo)
docker start <nome_ou_id>
# Reiniciar
docker restart <nome_ou_id>
Removendo (Limpeza)
# Remover container parado
docker rm <nome_ou_id>
# Forçar remoção de container em execução (Cuidado!)
docker rm -f <nome_ou_id>
# Remover uma imagem baixada
docker rmi <nome_imagem>
6. Prática: Criando sua Própria Imagem (Dockerfile)
Vamos criar uma imagem para uma aplicação Node.js simples.
- Passo 1: Preparar a Aplicação
Crie o arquivo app.js:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send("Olá! Minha aplicação está rodando no Docker 🐳");
});
app.listen(port, () => {
console.log(`Executando na porta: ${port}`);
});
Passo 2: Criar o Dockerfile
Crie um arquivo chamado Dockerfile (sem extensão) na raiz do projeto:
Passo 2: Criar o Dockerfile
Crie um arquivo chamado Dockerfile (sem extensão) na raiz do projeto:
# 1. Define a imagem base (Linux Alpine com Node)
FROM node:18-alpine
# 2. Define o diretório de trabalho dentro do container
WORKDIR /app
# 3. Copia arquivos de dependências
COPY package*.json ./
# 4. Instala as dependências
RUN npm install
# 5. Copia o restante do código fonte
COPY . .
# 6. Documenta a porta que será usada
EXPOSE 3000
# 7. Comando para rodar a aplicação
CMD ["node", "app.js"]
Passo 3: Build e Run
Passo 3: Build e Run
No CMD ou Terminal dentro da pasta do Projeto:
# Construir a imagem
docker build -t minha-app-node .
# Rodar o container
docker run -d -p 3000:3000 --name app-node-teste minha-app-node
7. Cheat Sheet (Resumo)
docker pull <imagem>: Baixa a imagem do Docker Hub.
docker run <imagem>: Cria e inicia um novo container.
docker ps: Lista containers ativos.
docker ps -a: Lista todos os containers (ativos e inativos).
docker logs <id>: Mostra a saída (stdout) do container.
docker stop <id>: Para a execução do container.
docker rm <id>: Apaga o container (deve estar parado).
docker images: Lista as imagens baixadas na máquina.
docker rmi <imagem>: Apaga uma imagem do disco.
docker build -t <tag> .: Cria uma imagem a partir de um Dockerfile.
☁️ Platform Hub: Orquestração de Ambientes Efêmeros
O Platform Hub é um orquestrador de ambientes efêmeros projetado para simplificar a entrega e o teste de software. Ele permite que desenvolvedores disponibilizem versões funcionais de seus sistemas (Projetos), encapsulando toda a complexidade da infraestrutura.
Esses ambientes podem ser instanciados sob demanda por qualquer usuário. Isso significa que, em vez de configurar servidores manualmente ou lidar com dependências locais, o usuário final pode “subir” uma instância completa e isolada da aplicação com apenas alguns cliques, utilizá-la para testes ou validações e descartá-la posteriormente.
🚀 Onde Testar
Para experimentar a orquestração na prática e visualizar os projetos disponíveis para instanciação imediata, acesse o portal oficial da ferramenta:
Referências e Link de Acesso
- Platform Hub - Portal Oficial: