· Tutoriais · 2 min read
Docker na Prática: Guia Completo para Iniciantes
Aprenda Docker do zero: containers, imagens, Dockerfile, volumes e docker-compose. Guia prático com exemplos reais para iniciar sua jornada DevOps.
Docker mudou a forma como desenvolvemos, testamos e implantamos software. Se você está começando em DevOps, Docker é a primeira ferramenta que precisa dominar.
Este guia vai do conceito à prática, com exemplos que você pode executar no seu terminal agora.
O que é Docker?
Docker é uma plataforma de containers. Um container é uma unidade leve e executável que empacota código e todas as suas dependências.
Diferença entre container e VM:
| Característica | Container | VM |
|---|---|---|
| Inicialização | Segundos | Minutos |
| Tamanho | MB | GB |
| Kernel | Compartilhado | Isolado |
| Recursos | Leve | Pesado |
Instalação
# Linux (Ubuntu/Debian)
sudo apt update
sudo apt install docker.io
# Verificar instalação
docker --version
docker run hello-world
Comandos essenciais
Imagens vs Containers
- Imagem - template pronto (como um ISO)
- Container - instância executável da imagem
# Listar imagens
docker images
# Baixar imagem
docker pull nginx:alpine
# Executar container
docker run -d -p 8080:80 --name meu-site nginx:alpine
# Listar containers rodando
docker ps
# Parar container
docker stop meu-site
# Remover container
docker rm meu-site
Criando sua primeira imagem
Crie um arquivo Dockerfile:
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
Construa e execute:
docker build -t minha-app .
docker run -p 3000:3000 minha-app
Volumes (dados persistentes)
Sem volumes, dados são perdidos quando o container para.
# Volume nomeado
docker volume create meu-volume
docker run -v meu-volume:/data ubuntu
# Bind mount (pasta local)
docker run -v $(pwd):/app -w /app node:20 npm test
Docker Compose
Para múltiplos containers (app + banco):
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
depends_on:
- db
db:
image: postgres:16-alpine
environment:
POSTGRES_PASSWORD: secret
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
docker compose up -d
docker compose logs -f
docker compose down
Boas práticas
- Use imagens Alpine - menores e mais seguras
- Multi-stage builds - separe build da runtime
- Evite rodar como root - use
USERno Dockerfile - Não instale pacotes desnecessários
- Use .dockerignore para excluir arquivos do build
# Exemplo multi-stage
FROM node:20-alpine AS build
WORKDIR /app
COPY . .
RUN npm ci && npm run build
FROM nginx:alpine
COPY --from=build /app/dist /usr/share/nginx/html
EXPOSE 80
Próximos passos
Docker é a base. O próximo nível é orquestração com Kubernetes, pipelines CI/CD e observabilidade.
Quer construir um projeto completo com Docker, Kubernetes e CI/CD?
🚀 Garantir acesso ao DevOps na Prática → R$67