Docker: Volumes

Como persistir os dados dos seus containers com volumes Docker

Bem-vindo à documentação da Stackhero

A Stackhero disponibiliza uma plataforma Docker cloud CaaS (Containers as a Service) pronta a usar, concebida para implementações de contentores rápidas e fiáveis:

  • Implemente em produção com um simples docker-compose up. Não é necessária qualquer configuração adicional: basta iniciar os seus contentores.
  • Escolha o seu próprio nome de domínio, automaticamente protegido com HTTPS (por exemplo: https://api.sua-empresa.com, https://www.sua-empresa.com ou https://backoffice.sua-empresa.com).
  • Beneficie de elevado desempenho e segurança robusta numa infraestrutura privada e dedicada.
  • Aplique atualizações com um clique para uma manutenção simples e sem esforço.

Pode ter os seus contentores em produção em cerca de cinco minutos. A Stackhero gere a infraestrutura, as atualizações e a segurança por si, para que se possa focar na entrega das suas aplicações. Saiba mais sobre alojamento cloud Docker CaaS.

Por design, os containers Docker são efémeros. Isto significa que qualquer dado armazenado diretamente neles será perdido quando o container for removido ou substituído por outra instância. Para garantir a persistência dos dados, os volumes Docker são a abordagem recomendada.

Não utilize bind mounts no Stackhero. Opte sempre por volumes Docker para evitar a perda de dados.

Os bind mounts envolvem ligar um diretório da VM host do Stackhero a um container. No entanto, se depender de bind mounts, atualizar a sua instância Stackhero for Docker resultará na perda de todos os dados armazenados desta forma.

Os bind mounts são geralmente especificados no comando docker run com uma sintaxe como -v /meuDiretório:/mnt (note o / inicial). Nos ficheiros Docker Compose, aparecem como volumes: /meuDiretório:/mnt. Proíba estas configurações ou perderá os seus dados.

Em vez disso, utilize volumes Docker, que são geridos pelo Docker e não referenciam caminhos absolutos.

Para resumir:

Abordagem incorreta:

docker run -it -v /meuDiretório:/mnt alpine

Abordagem correta:

docker volume create meuVolume
docker run -it -v meuVolume:/mnt alpine

Ao trabalhar com ficheiros Docker Compose:

Configuração incorreta:

services:
  meuServiço:
    image: alpine
    volumes:
      - /meuDiretório:/mnt

Configuração correta:

services:
  meuServiço:
    image: alpine
    volumes:
      - meuVolume:/mnt

volumes:
  meuVolume:
    name: meuVolume

Aqui está uma referência rápida para gerir volumes Docker:

  • Para criar um novo volume chamado meuVolume, execute:

    docker volume create meuVolume
    
  • Para listar todos os volumes existentes:

    docker volume ls
    
  • Para remover um volume específico chamado meuVolume:

    docker volume rm meuVolume
    

    Nota: Remover um volume eliminará permanentemente todos os dados armazenados nele, e não há maneira de os recuperar posteriormente.