Skillversitas

Docker Backup and Restore

Backing up and restoring Docker data for data safety.

Backing Up Volumes

# Back up PostgreSQL
docker exec myapp-db pg_dump -U admin myapp > backup.sql

# Back up Redis
docker exec myapp-redis redis-cli BGSAVE
docker cp myapp-redis:/data/dump.rdb ./backup_redis.rdb

# Back up using tar
docker run --rm \
  -v db-data:/source:ro \
  -v $(pwd):/backup \
  alpine tar czf /backup/db_backup.tar.gz -C /source .

Restoring Volumes

# Restore PostgreSQL
cat backup.sql | docker exec -i myapp-db psql -U admin myapp

# Restore Redis
docker cp ./backup_redis.rdb myapp-redis:/data/dump.rdb
docker restart myapp-redis

# Restore using tar
docker run --rm \
  -v db-data:/target \
  -v $(pwd):/backup \
  alpine tar xzf /backup/db_backup.tar.gz -C /target

Automated Backup

#!/bin/bash
# backup.sh
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup"

# Back up PostgreSQL
docker exec myapp-db pg_dump -U admin myapp | \
  gzip > $BACKUP_DIR/db_$DATE.sql.gz

# Back up volumes
docker run --rm \
  -v db-data:/source:ro \
  -v $BACKUP_DIR:/backup \
  alpine tar czf /backup/volumes_$DATE.tar.gz -C /source .

# Clean up old backups
find $BACKUP_DIR -name "*.sql.gz" -mtime +30 -delete

Use Case: Application Backup

# Back up all services
docker exec myapp-db pg_dump -U admin myapp > db_backup.sql
docker exec myapp-redis redis-cli BGSAVE
docker cp myapp-redis:/data/dump.rdb redis_backup.rdb

# Back up to the cloud
aws s3 cp db_backup.sql s3://myapp-backup/db/
aws s3 cp redis_backup.rdb s3://myapp-backup/redis/

Everyday Use Case

Case: An admin needs to back up before an update.

# Back up before the update
./backup.sh

# Update the application
docker-compose pull
docker-compose up -d

# If there is a problem, restore
cat db_backup.sql | docker exec -i myapp-db psql -U admin myapp

Best Practices

  1. Back up regularly: Schedule daily backups
  2. Back up to the cloud: For extra safety
  3. Test the restore: Make sure the backup can be restored
  4. Clean up old backups: Save storage
  5. Monitor backups: Make sure the backup succeeds

Conclusion

Backups are an important part of operations. For applications, regular backups of the database and volumes are critical.