Docker
Beginner
1 min read
Persisting Database Data with Volumes
Example
# PostgreSQL with persistent data
docker volume create pgdata
docker run -d \
--name postgres \
--restart unless-stopped \
-e POSTGRES_USER=appuser \
-e POSTGRES_PASSWORD=strongpassword \
-e POSTGRES_DB=appdb \
-v pgdata:/var/lib/postgresql/data \
-p 5432:5432 \
postgres:16-alpine
# Stop, remove, and recreate — data persists via the volume
docker stop postgres && docker rm postgres
docker run -d --name postgres \
-v pgdata:/var/lib/postgresql/data \
-e POSTGRES_USER=appuser \
-e POSTGRES_PASSWORD=strongpassword \
postgres:16-alpine
# Backup with pg_dump
docker exec postgres pg_dump -U appuser appdb \
> backup-$(date +%Y%m%d).sql
# Restore
docker exec -i postgres psql -U appuser appdb < backup.sql
# MySQL equivalent
docker run -d \
--name mysql \
-e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_DATABASE=appdb \
-v mysqldata:/var/lib/mysql \
mysql:8.0
Related Resources
Docker Reference
Complete tag & property list
Docker How-To Guides
Step-by-step practical guides
Docker Exercises
Practice what you've learned
More in Docker