⏱️2 min read · 431 words

Dockeré a maneira padrão de construir, enviar e executar aplicativos em 2026. Cada plataforma de nuvem – AWS, GCP, Azure – executa contêineres Docker. Este guia cobre o Docker desde a primeira instalação até aplicativos de vários contêineres com Docker Compose.
📋 Table of Contents
Instale o Docker
# Ubuntu / Debian
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
# Verify
docker --version
docker run hello-world
Conceitos Básicos
- Imagem:Blueprint para um contêiner (somente leitura)
- Contêiner:Executando instância de uma imagem
- Arquivo Docker:Instruções para construir uma imagem
- Cadastro:Armazenamento de imagens (Docker Hub, ECR, GCR)
Seu primeiro Dockerfile
# Dockerfile
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
# Build image
docker build -t myapp:latest .
# Run container
docker run -d -p 8000:8000 --name myapp myapp:latest
# View logs
docker logs myapp
# Stop & remove
docker stop myapp && docker rm myapp
Comandos essenciais do Docker
# List running containers
docker ps
# List all containers (including stopped)
docker ps -a
# List images
docker images
# Execute command inside container
docker exec -it myapp /bin/bash
# Copy file from container
docker cp myapp:/app/output.log ./output.log
# Remove all stopped containers + unused images
docker system prune -af
Volumes Docker (dados persistentes)
# Named volume — data persists between container restarts
docker run -d \
-v postgres_data:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=secret \
--name postgres \
postgres:16
# Bind mount — mount host directory
docker run -d \
-v $(pwd)/data:/app/data \
myapp:latest
Docker Compose — Aplicativos multicontêineres
# docker-compose.yml
services:
web:
build: .
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://postgres:secret@db:5432/mydb
depends_on:
- db
volumes:
- .:/app
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: secret
POSTGRES_DB: mydb
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
# Start all services
docker compose up -d
# View logs
docker compose logs -f
# Stop everything
docker compose down
# Rebuild and restart
docker compose up -d --build
Construções em vários estágios (imagens menores)
# Stage 1: Build
FROM node:22-alpine AS builder
WORKDIR /app
COPY package*.json .
RUN npm ci
COPY . .
RUN npm run build
# Stage 2: Production (no dev dependencies)
FROM node:22-alpine AS production
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
CMD ["node", "dist/index.js"]
Conclusão
O Docker elimina o problema de “funciona na minha máquina”. Aprenda os fundamentos do Dockerfile, domine o Docker Compose para desenvolvimento local e você enviará aplicativos consistentes do laptop para a nuvem sem surpresas.
🔗 Share this article
✍️ Leave a Comment