Docker image to backup your Docker container volumes
Why the name? Docker + Backup = Dockup
You have a container running with one or more volumes:
$ docker run -d --name mysql tutum/mysql
From executing a $ docker inspect mysql
we see that this container has two volumes:
"Volumes": {
"/etc/mysql": {},
"/var/lib/mysql": {}
}
Launch dockup
container with the following flags:
$ docker run --rm \
--env-file env.txt \
--volumes-from mysql \
--name dockup tutum/dockup:latest
The contents of env.txt
being:
AWS_ACCESS_KEY_ID=<key_here>
AWS_SECRET_ACCESS_KEY=<secret_here>
AWS_DEFAULT_REGION=us-east-1
BACKUP_NAME=mysql
PATHS_TO_BACKUP=/etc/mysql /var/lib/mysql
S3_BUCKET_NAME=docker-backups.example.com
RESTORE=false
dockup
will use your AWS credentials to create a new bucket with name as per the environment variable S3_BUCKET_NAME
, or if not defined, using the default name docker-backups.example.com
. The paths in PATHS_TO_BACKUP
will be tarballed, gzipped, time-stamped and uploaded to the S3 bucket.
If you want dockup
to run as a cron task, you can set the environment variable CRON_TIME
to the desired frequency, for example CRON_TIME=0 0 * * *
to backup every day at midnight.
For more complex backup tasks as dumping a database, you can optionally define the environment variables BEFORE_BACKUP_CMD
and AFTER_BACKUP_CMD
.
To restore your data simply set the RESTORE
environment variable to true
- this will restore the latest backup from S3 to your volume. If you want to restore a specific backup instead of the last one, you can also set the environment variable LAST_BACKUP
to the desired tarball name.
For more complex restore operations, you can define a command to be run once the tarball has been downloaded and extracted using the environment variable AFTER_RESTORE_CMD
.
Bucket naming guidelines: "Bucket names must be unique and should be DNS compliant. Bucket names can contain lowercase letters, numbers, hyphens and periods. Bucket names can only start and end with a letter or number, and cannot contain a period next to a hyphen or another period."
These rules are enforced in some regions.
Region name | Region |
---|---|
US Standard | us-east-1 |
US West (Oregon) | us-west-2 |
US West (N. California) | us-west-1 |
EU (Ireland) | eu-west-1 |
EU (Frankfurt) | eu-central-1 |
Asia Pacific (Singapore) | ap-southeast-1 |
Asia Pacific (Sydney) | ap-southeast-2 |
Asia Pacific (Tokyo) | ap-northeast-1 |
South America (Sao Paulo) | sa-east-1 |
To perform a restore launch the container with the RESTORE variable set to true