ANÚNCIO

~/questoes/devops

Qual é o benefício de usar volumes persistentes no Docker Compose?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Para fixar

Volumes Persistentes no Docker Compose: Protegendo Seus Dados

Conceito central

Volumes persistentes são espaços de armazenamento que mantêm dados mesmo quando containers são parados ou deletados. No Docker Compose, eles são essenciais para garantir que informações importantes como bancos de dados, arquivos de configuração e logs não sejam perdidos durante o ciclo de vida dos containers.

Por que essa resposta faz sentido

Volumes persistentes resolvem um problema fundamental da containerização: containers são efêmeros por natureza e perdem todos os dados armazenados internamente quando encerram. Ao usar volumes, você desacopla o ciclo de vida do container do ciclo de vida dos dados, garantindo persistência mesmo após reinicializações ou recriações.

Armadilhas comuns

  • Confundir volumes persistentes com mapeamento de portas. Portas expõem serviços, volumes armazenam dados.
  • Achar que dados salvos dentro do container (sem volume) persistem após o container ser removido. Sem volume, tudo é perdido.
  • Pensar que volumes são apenas para desenvolvimento. Na verdade, são ainda mais críticos em produção para garantir persistência de bancos de dados e arquivos importantes.

Entenda as alternativas

A

Volumes persistentes não afetam a velocidade de execução dos containers. Seu propósito é armazenamento de dados, não otimização de performance. A velocidade depende de outros fatores como alocação de recursos, imagem base e configuração do serviço.

B

Volumes não reduzem automaticamente o tamanho das imagens Docker. O tamanho das imagens é determinado pelos arquivos dentro delas durante a construção. Volumes são apenas mecanismos de armazenamento externo aos containers.

C

Embora volumes possam mapear diretórios locais, esse não é seu benefício principal no Docker Compose. Além disso, expor código fonte direto em produção é uma prática de segurança questionável. Volumes existem primariamente para dados, não para acesso ao código.

D

Este é o benefício fundamental dos volumes persistentes. Quando você define um volume no docker-compose.yml, mesmo que o container seja parado, removido ou recriado, os dados armazenados nesse volume permanecem intactos, disponíveis para novo container reutilizar.

Dica prática: No seu docker-compose.yml, defina volumes assim: quando você tem um serviço PostgreSQL, use `volumes: - postgres_data:/var/lib/postgresql/data` para que os dados do banco não sejam perdidos. O nome `postgres_data` é um volume nomeado que persiste independente do container.

Revise pensando: Se você parar e deletar um container Docker sem volume persistente, o que acontece com os dados dentro dele? E se tivesse um volume mapeado?