
modem7/borgmatic-docker基于borgmatic-collective/borgmatic的多架构分支,集成最新软件版本并采用S6进程管理,支持运行Docker命令。提供带Docker-CLI的标签,适用于容器启停脚本,核心用途为自动化Borg备份流程。
| 标签 | 描述 |
|---|---|
| Latest | Borgmatic最新版本 |
| 1.8.xx-1.2.x | Borgmatic特定版本 |
| 变量名 | 描述 | 可能值 | 默认值 |
|---|---|---|---|
| DOCKERCLI | 安装DockerCLI和ComposeCLI | true | 空 |
| EXTRA_PKGS | 安装额外软件包 | rclone coreutils jq 其他包 | 空 |
| CRON | Cron时间表达式 | cron时间格式(如0 1 * * *)、false | 0 1 * * * (每天凌晨1点) |
| CRON_COMMAND | Cron执行命令 | borgmatic --stats -v 0 2>&1 等 | borgmatic --stats -v 0 2>&1 |
| EXTRA_CRON | 额外Cron任务行 | 0 5 2 * * command1 等 | 空 |
通过挂载卷到/custom-cont-init.d目录添加自定义脚本(如安装包、复制文件等),示例Docker Compose配置:
yamlservices: borgmatic: volumes: - /home/foo/my-custom-files:/custom-cont-init.d:ro
需创建crontab.txt(备份时间配置)和borgmatic配置文件config.yaml,并挂载到容器/etc/borgmatic.d/目录。容器启动时会从crontab.txt创建定时任务并启动crond。克隆GitHub仓库到/opt/docker/可快速获取初始配置框架。远程仓库需将.ssh目录挂载到容器/root/.ssh。
备份Docker卷时,可通过borgmatic钩子在备份前后停止/启动相关容器确保数据一致性。需挂载主机Docker socket,并优先使用*_everything钩子(避免备份失败导致容器无法重启)。
-v /var/run/docker.sock:/var/run/docker.sock到运行命令或Compose配置。config.yaml中配置钩子示例:yamlhooks: before_everything: - echo "停止容器..." - 'echo -ne "POST /v1.41/containers/<container1-name>/stop HTTP/1.1\r\nHost: localhost\r\n\r\n" | nc local:/var/run/docker.sock 80 > /dev/null && echo "已停止容器1" || echo "停止容器1失败"' - 'echo -ne "POST /v1.41/containers/<container2-name>/stop HTTP/1.1\r\nHost: localhost\r\n\r\n" | nc local:/var/run/docker.sock 80 > /dev/null && echo "已停止容器2" || echo "停止容器2失败"' - echo "容器已停止。" - echo "开始备份。" after_everything: - echo "备份完成。" - echo "重启容器..." - 'echo -ne "POST /v1.41/containers/<container1-name>/start HTTP/1.1\r\nHost: localhost\r\n\r\n" | nc local:/var/run/docker.sock 80 > /dev/null && echo "已启动容器1" || echo "启动容器1失败"' - 'echo -ne "POST /v1.41/containers/<container2-name>/start HTTP/1.1\r\nHost: localhost\r\n\r\n" | nc local:/var/run/docker.sock 80 > /dev/null && echo "已启动容器2" || echo "启动容器2失败"' - echo "容器已重启。"
consoledocker run \ --detach --name borgmatic \ -v /home:/mnt/source:ro \ # 要备份的数据(建议只读挂载) -v /opt/docker/docker-borgmatic/data/repository:/mnt/borg-repository \ # Borg仓库挂载点 -v /opt/docker/docker-borgmatic/data/borgmatic.d:/etc/borgmatic.d/ \ # 配置文件目录 -v /opt/docker/docker-borgmatic/data/.config/borg:/root/.config/borg \ # Borg配置和密钥 -v /opt/docker/docker-borgmatic/data/.ssh:/root/.ssh \ # SSH密钥(远程仓库用) -v /opt/docker/docker-borgmatic/data/.cache/borg:/root/.cache/borg \ # Borg缓存 -e TZ=Europe/London \ # 设置时区 modem7/borgmatic-docker
console--cap-add SYS_ADMIN \ --device /dev/fuse \ --security-opt label:disable \ # SELinux环境需用 --security-opt apparmor:unconfined # AppArmor环境需用
consoledocker exec borgmatic \ sh -c "borgmatic --init --encryption repokey-blake2"
需备份的数据目录,建议只读挂载(:ro)。容器以root运行,支持备份所有文件权限。
Borg备份仓库的挂载点。
存放crontab.txt(定时任务配置)和config.yaml(borgmatic主配置)。
consoledocker exec borgmatic \ sh -c "cd && borgmatic config generate -d /etc/borgmatic.d/config.yaml"
crontab.txt示例(默认每天凌晨1点执行):
0 1 * * * PATH=$PATH:/usr/bin /usr/bin/borgmatic --stats -v 0 2>&1
Borg配置和密钥文件存储目录(密钥文件需单独备份!无加密时也需挂载)。
SSH密钥目录,用于远程仓库访问认证。
Borg块缓存目录,非易失性存储以优化备份性能。
cp .env.template .env.env设置环境变量和卷路径。consoledocker-compose up -d
docker-compose downdocker-compose -f docker-compose.yml -f docker-compose.restore.yml run borgmaticborg mount /mnt/borg-repository <挂载点>borg umount <挂载点> && exitBorg无法创建/获取锁时执行:borg break-lock /mnt/repository
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务