Docker: Volumes
Como persistir os dados dos seus containers com volumes Docker
👋 Bem-vindo à documentação da Stackhero!
A Stackhero oferece uma solução Docker cloud CaaS (Containers as a Service) pronta a usar que proporciona uma série de benefícios, incluindo:
- Implemente facilmente os seus containers em produção com apenas um
docker-compose up.- Nome de domínio personalizável seguro com HTTPS (por exemplo, https://api.sua-empresa.com, https://www.sua-empresa.com, https://backoffice.sua-empresa.com).
- Desempenho ótimo e segurança robusta alimentados por uma VM privada e dedicada.
- Atualizações sem esforço com apenas um clique.
Poupe tempo e simplifique a sua vida: são necessários apenas 5 minutos para experimentar a solução de hospedagem cloud Docker CaaS da Stackhero e implementar os seus containers em produção!
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 do Docker
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
Comandos úteis para volumes Docker
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 meuVolumeNota: Remover um volume eliminará permanentemente todos os dados armazenados nele, e não há maneira de os recuperar posteriormente.