Pular para o conteúdo
Tecnologia

Containers são efêmeros. Volumes garantem que dados sobrevivam. Domine named volumes, bind mounts e backup de dados críticos.

Conceitos Principais

Named Volumes

Gerenciado pelo Docker. Persistem após docker rm. Ideal para databases. Docker cuida do storage location. docker volume create pgdata.

Bind Mounts

Mapeia diretório host para container. Mudanças refletem instantaneamente. Perfeito para dev (hot reload). -v /host/path:/container/path.

Volume Drivers

Local (padrão), NFS, cloud storage (EBS, EFS). Permite volumes compartilhados entre hosts. Essencial para Docker Swarm/K8s.

tmpfs Mounts

Volume em memória RAM. Dados nunca tocam disco. Ultra rápido. Usado para secrets temporários ou cache.

Passo a Passo

  1. Crie Named Volume: docker volume create postgres-data. Liste: docker volume ls. Inspecione: docker volume inspect postgres-data. Veja mountpoint.
  2. Use em Container: docker run -v postgres-data:/var/lib/postgresql/data postgres:15. Dados persistem mesmo após docker rm. Reuse volume em novo container.
  3. Bind Mount para Dev: docker run -v $(pwd):/app node:18. Código local sincroniza com container. Nodemon detecta mudanças. Hot reload funciona.
  4. Backup de Volume: Pare container. docker run --rm -v postgres-data:/data -v $(pwd):/backup alpine tar czf /backup/db.tar.gz /data. Compacta volume.
  5. Restore de Backup: Crie volume novo. docker run --rm -v postgres-data-new:/data -v $(pwd):/backup alpine tar xzf /backup/db.tar.gz -C /data.

Boas Praticas

Recomendacoes

• Named volumes para produção

• Bind mounts apenas em dev

• Backup regular de volumes críticos

• Use volume drivers para storage distribuído

Erros Comuns

Evite estes erros

• Bind mount de node_modules (conflito host/container)

• Não fazer backup de volumes

• Permissions erradas em bind mounts

Checklist

  • Volumes criados para databases
  • Bind mounts configurados para dev
  • Backup automático agendado
  • Permissions corretas
  • Dados persistem após container restart