Backing Up Docker Volumes

PowerADM.com / Linux / Backing Up Docker Volumes

To automate docker partition backups, I recommend using Docker-volume-backup image (https://github.com/offen/docker-volume-backup). This lightweight image (about 15 MB) allows you to connect to any volume in docker and backup files to a local directory, S3-compatible storage (AWS S3, MimIO, Ceph, etc.), or send save it to a remote device via WebDAV or SSH.

If you need to quickly run a one-time volume backup, you can use:

docker run --rm \
 -v data:/backup/data \
 --env AWS_ACCESS_KEY_ID="<xxx>" \
 --env AWS_SECRET_ACCESS_KEY="<xxx>" \
 --env AWS_S3_BUCKET_NAME="<xxx>" \
 --entrypoint backup \
 offen/docker-volume-backup:v2

If you need to backup via SSH:

docker run --rm \
 -v data:/backup/data \
 --env SSH_HOST_NAME="backupsrv1.local" \
 --env SSH_PORT=2222 \
 --env SSH_REMOTE_PATH="/mnt/backup/" \
 --env SSH_USER="user"
 --env SSH_PASSWORD="password"
 --entrypoint backup \
 offen/docker-volume-backup:v2

Docker-volume-backup

You can build a backup image using docker-compose:

version: '3'
services:
  backup:
    image: offen/docker-volume-backup:latest
    environment:
      BACKUP_CRON_EXPRESSION: "0 * * * *"
      BACKUP_PRUNING_PREFIX: backup-
      BACKUP_RETENTION_DAYS: 7
      AWS_BUCKET_NAME: backup-bucket
      AWS_ACCESS_KEY_ID: <xxx>
      AWS_SECRET_ACCESS_KEY: <xxx>
    volumes:
      - data:/backup/my-app-backup:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
volumes:
  data:

Before the backup, you can execute arbitrary commands inside the target docker container. For example, to make a database dump (for example, if you are backing up Zabbix Server) or something else.

One thought on “Backing Up Docker Volumes”
  1. I’ve been struggling with Docker backups for months and this docker-volume-backup image is a game-changer. It’s so lightweight and straightforward that even a beginner like me can set it up without issues.

Leave a Reply

Your email address will not be published. Required fields are marked *