Kontejnery jsou efemérní. Volumes řeší persistenci dat.
Typy¶
- Volumes — spravované Dockerem, preferované
- Bind mounts — hostový adresář, pro vývoj
- tmpfs — v paměti
Volumes¶
docker volume create mydata docker run -d -v mydata:/var/lib/postgresql/data postgres:16
Záloha¶
docker run –rm -v mydata:/src -v $(pwd):/bak alpine tar czf /bak/backup.tar.gz -C /src .
Compose¶
services: db: volumes: - pgdata:/var/lib/postgresql/data - ./init.sql:/docker-entrypoint-initdb.d/init.sql volumes: pgdata:
Best practices pro storage¶
Named volumes jsou preferovaný způsob pro produkční data — Docker je spravuje, jsou portabilní mezi hosty a podporují volume drivers pro vzdálený storage (NFS, AWS EBS, Azure Files). Bind mounts mapují hostový adresář přímo do kontejneru — ideální pro vývoj, kde potřebujete real-time synchronizaci zdrojového kódu.
Pro databáze vždy používejte named volumes, nikdy bind mounts — výkon je lepší a data přežijí recreate kontejneru. Pravidelně zálohujte volumes pomocí docker run --rm -v mydata:/src alpine tar czf - a pipeujte do S3 nebo jiného backup storage. V Kubernetes se místo Docker volumes používají PersistentVolumeClaims (PVC) s StorageClass, které automaticky provisonují diskové prostory podle potřeby.
Volumes = persistentní data¶
Named volumes pro produkci, bind mounts pro vývoj. Zálohujte!