Why Volumes?
Container filesystems are ephemeral — data is lost when a container is removed. Volumes provide persistent storage that survives container lifecycle changes.
Types of Storage
- Volumes — managed by Docker, stored in /var/lib/docker/volumes/
- Bind mounts — map a host directory directly into the container
- tmpfs mounts — stored in memory only (temporary data)
Volume Commands
# Create a volume
docker volume create mydata
# List volumes
docker volume ls
# Inspect a volume
docker volume inspect mydata
# Remove a volume
docker volume rm mydata
# Remove all unused volumes
docker volume pruneUsing Volumes
# Named volume
docker run -d -v mydata:/var/lib/mysql mariadb:11
# Bind mount (host directory)
docker run -d -v /home/user/app:/var/www/html nginx
# Read-only mount
docker run -d -v /etc/nginx/conf.d:/etc/nginx/conf.d:ro nginxBackup and Restore
# Backup volume to tar
docker run --rm -v mydata:/data -v $(pwd):/backup alpine \
tar czf /backup/mydata-backup.tar.gz -C /data .
# Restore from tar
docker run --rm -v mydata:/data -v $(pwd):/backup alpine \
tar xzf /backup/mydata-backup.tar.gz -C /data