Docker container for periodically and recursively taring docker volumes.
1.1K
Docktartar will recursively tar a directory to another location. It has been designed to stop running docker containers before doing the backup and restart them after the archival process.
Some Features:
You can provide a temp-directory for faster archival, afterwards the script will move the archive wherever you want. This is useful in cases where you want to store your backup on a remote server (you should really do this!). The workflow in this case is:
Automated builds of the image are available on Dockerhub and is the recommended method of installation.
docker pull gmentsik/docktartar
Alternatively you can build the image yourself.
docker build -t gmentsik/docktartar github.com/gmentsik/docktartar
You can use the sample docker-compose.yml file to start the container using Docker Compose*
Or start Docktartar using:
docker run -d --name docktartar \
--restart=always \
--volume /srv/docker:/backupSource \
--volume /var/backups/docker:/backupTarget \
--volume /var/run/docker.sock:/var/run/docker.sock \
--volume /var/lib/docker:/var/lib/docker \
gmentsik/docktartar
| Variable | Default Value | Description | Examples |
|---|---|---|---|
| CRON | "0 0 * * *" | (=Midnight) When the script should start in cron format. Check cron-generator | "0 30 * * *" , "0 0 */3 * *" |
| TIMEZONE | "Europe/Vienna" | Sets the timezone of the container. | 'Asia/Tokyo','America/Los_Angeles' |
| TAR_OWNER_USERID | 0 | Sets the Owner of the archive. 0 = root | enter id for all users on your system |
| TAR_OWNER_GROUPID | 0 | Sets the Group-Owner of the archive. 0 = root | enter id for all users on your system |
| TAG | "docker" | Sets filename tag.[timestamp].tar.gz | docker-backup |
| STOP_CONTAINERS | "all" | The containers to stop. Either Name, Id or all. nginx mysql all will stop nginx then mysql and then all others. | mysql all, nginx mysql, all |
| START_CONTAINERS | "all" | The containers to start. Either Name, Id or all. nginx mysql all will start nginx then mysql and then all others. | mysql all, nginx mysql, all |
| INCREMENTAL | "true" | Generates incremental backups | true or false |
| SMB | "false" | Enables Samba integration | true or false |
| SMB_USER | "" | Username of the samba user | username |
| SMB_PASSWORD | "" | Password of the samba user | pass |
| SMB_SMB_PATH | "" | IP+Path of the Samba Network Share | 192.162.4.10/shares/backups |
| EMAIL_HOST_PORT | "" | Host and port of your e-mail server/smarthost The format is host.tld:port | mail.company.com:587 |
| EMAIL_USER | "" | Username for authentication on your mail server | web58p4 |
| EMAIL_PASS | "" | Password for authentication on your mail server | secretpassword |
| EMAIL_USE_STARTTLS | "NO" | use starttls, YES or NO | YES or NO |
| EMAIL_FROM | "Docktartar" | The name that is displayed in the from field | Docktartar |
| EMAIL_FROM_ADRESS | "" | The e-mail adress that is displayed in the from field | [email protected] |
| EMAIL_SUBJECT | "Docktartar" | The subject of the message | Backupjob |
| EMAIL_TO | "" | The E-Mail adress where the emails should be send | [email protected] |
| TEMP_DIR | "NO" | If set to YES, the archive is built in /backupTmp and then moved to /backupTarget, after the all containers restarted | YES or NO |
In order to run this with samba share as the backup target, you have to either run the container with privileged: true or add cap_add: SYS_ADMIN
| Container Volume | Description |
|---|---|
| /backupSource | The contents of this folder will be archived in a tar-archive. |
| /backupTarget | The tar-archive will be put in this directory. If you use a Network share, do not mount this! |
| /var/run/docker.sock | Has to be mapped in ordner to be able to stop and start containers. |
| /var/lib/docker | Has to be mapped in ordner to be able to stop and start containers. |
There is a test script in the root folder called test-mail.sh which can be used to test the email settings.
docker exec -it docktartar /root/test-mail.sh
To upgrade to newer releases:
docker pull gmentsik/docktartar
docker stop docktartar
docker rm -v docktartar
docker run -name docktartar -d [OPTIONS] gmentsik/docktartar
For debugging and maintenance purposes you may want access the containers shell. If you are using Docker version 1.3.0 or higher you can access a running containers shell by starting bash using docker exec:
docker exec -it docktartar bash
If you find this image useful here's how you can help:
Before reporting your issue please try updating Docker to the latest version and check if it resolves the issue. Refer to the Docker installation guide for instructions.
SELinux users should try disabling SELinux using the command setenforce 0 to see if it resolves the issue.
If the above recommendations do not help then report your issue along with the following information:
docker version and docker info commandsdocker run command or docker-compose.yml used to start the image. Mask out the sensitive bits.Content type
Image
Digest
Size
33.2 MB
Last updated
almost 9 years ago
docker pull gmentsik/docktartar