该Docker镜像提供备份服务,用于备份Docker卷中的PostgreSQL或MySQL数据库,可添加到包含PSQL或MySQL实例的Docker栈中实现周期性备份。同时支持备份挂载Docker卷中的可选文件,所有备份文件组织在备份目录中,并可选择性传输到备份空间。该服务设计用于备份单个数据库,如需备份整个PSQL或MySQL服务器,应使用pg_dumpall命令替代pg_dump(详见脚本backup.sh)。
imixs/backup镜像基于https://hub.docker.com/_/postgres/%E6%9E%84%E5%BB%BA%EF%BC%8C%E5%B9%B6%E6%B7%BB%E5%8A%A0%E4%BA%86mariadb-client%E6%94%AF%E6%8C%81%E3%80%82%E5%90%AF%E5%8A%A8%E5%AE%B9%E5%99%A8%E6%97%B6%E9%9C%80%E8%AE%BE%E7%BD%AE%E4%BB%A5%E4%B8%8B%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%EF%BC%9A
所有本地备份文件位于:
/root/backups/
备份空间中的文件路径:
/$BACKUP_ROOT_DIR/$BACKUP_SERVICE_NAME/
每个备份文件名称前缀包含时间戳,格式如下:
2018-01-07_03:00_dump.tar.gz
基于环境变量SETUP_CRON提供的Cron设置,backup_init脚本会启动Cron任务以调度backup.sh脚本。
示例:
bash# 每天凌晨3点执行 0 3 * * *
详情参见Cron使用说明。
所有备份脚本位于根目录(/root/):
backup_init.sh - 通过Cron初始化备份服务backup.sh - 备份执行脚本restore.sh - 恢复脚本backup_get.sh - 从远程备份空间获取文件可手动调用脚本:
bash$ docker exec -it 2f4b2feaa412 /root/backup.sh
备份脚本自动保留指定数量的本地备份文件,默认保留5个。可通过环境变量BACKUP_LOCAL_ROLLING修改该数量。
若设置了可选环境变量BACKUP_SPACE_HOST,服务会通过SFTP/SCP自动将备份文件推送到备份空间。备份空间中的目录结构为:
/$BACKUP_ROOT_DIR/$BACKUP_SERVICE_NAME/....
可选环境变量BACKUP_SERVICE_NAME用于命名备份空间上的目录,若未设置,则使用Docker容器ID。BACKUP_ROOT_DIR用于指定备份空间的根目录,未设置时默认使用/imixs-cloud。
创建SSH密钥
为通过SFTP/SCP传输文件,需在备份空间上配置RFC4716格式的公钥。备份服务通过Docker Secret获取私钥文件(仅在Docker Swarm环境中可用)。
将私钥文件/root/.ssh/backupspace_rsa创建为Docker Secret:
bashdocker secret create backupspace_key /root/.ssh/backupspace_rsa
在Docker栈定义中引用该Secret:
yamlversion: '3.1' services: backup: image: imixs/backup:latest environment: ... BACKUP_SPACE_KEY_FILE: "/run/secrets/backupspace_key" secrets: - backupspace_key ... secrets: backupspace_key: external: true
若设置以下环境变量,备份脚本会发送成功执行邮件通知:
BACKUP_EMAIL_SMARTHOSTBACKUP_EMAIL_FROMBACKUP_EMAIL_TO需提供智能主机服务名称(或IP)、发件人和收件人地址。详见https://github.com/imixs/imixs-docker/blob/master/exim4/README.md%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E%E3%80%82
imixs/backup服务通常作为Docker服务栈的一部分运行,需与PSQL/MySQL数据库服务及挂载卷在同一栈中,通过内部网络连接。
以下示例配置用于备份包含MySQL数据库和wp-content卷的WordPress服务:
yaml... backup: image: imixs/backup:1.2.1 environment: SETUP_CRON: "0 4 * * *" BACKUP_SERVICE_NAME: "my-service" BACKUP_DB_USER: "wordpress_dms" BACKUP_DB_PASSWORD: "xxxxxxxxxxx" BACKUP_DB_HOST: "db" BACKUP_DB_TYPE: "MYSQL" BACKUP_DB: "wordpress" BACKUP_VOLUME: "/var/www/html/wp-content" BACKUP_LOCAL_ROLLING: "5" volumes: - wp-content:/var/www/html/wp-content networks: - backend ...
如需启用远程备份空间,添加以下环境变量:
yaml... BACKUP_SERVICE_NAME: "my-app" BACKUP_SPACE_HOST: "my-backup.org" BACKUP_SPACE_USER: "yyyy" BACKUP_SPACE_KEY_FILE: "/run/secrets/backupspace_key" BACKUP_ROOT_DIR: "/imixs-cloud" ...
如需备份挂载卷中的文件目录:
yaml... BACKUP_VOLUME: "/home/imixs" volumes: - appdata:/home/imixs ...
添加以下环境变量启用备份成功邮件:
yaml... BACKUP_EMAIL_SMARTHOST: "smarthost" BACKUP_EMAIL_FROM: "backupagent@yourcompany.com" BACKUP_EMAIL_TO: "sysadmin@yourcompany.com" ...
可通过以下方式手动触发备份:
bash$ docker exec -it 82526abbabfe /root/backup.sh # 替换容器ID为实际备份服务ID
bash$ docker exec -it 82526abbabfe bash # 替换容器ID root@82526abbabfe:/# /root/backup.sh
bashls -la /root/backups
备份服务提供恢复脚本,可通过以下方式执行(需替换容器ID):
bashdocker exec -it 82526abbabfe [SCRIPT]
或进入容器后直接执行:
bashdocker exec -it 82526abbabfe bash
本地备份文件位于/root/backups/,文件名包含ISO格式时间戳。
bashls -la /root/backups
bash/root/restore.sh
指定备份文件的时间戳前缀:
bash/root/restore.sh 2018-01-05_03:00
若本地无备份文件,可先从备份空间拉取:
bashecho ls -la /$BACKUP_ROOT_DIR/$BACKUP_SERVICE_NAME | sftp $BACKUP_SPACE_USER@$BACKUP_SPACE_HOST
bash/root/backup_get.sh /$BACKUP_ROOT_DIR/$BACKUP_SERVICE_NAME/[BACKUPFILE] # 替换[BACKUPFILE]为实际文件名
文件将保存到/root/backups/,之后可按本地恢复步骤操作。
源码托管于https://github.com/imixs/imixs-docker%EF%BC%8C%E9%97%AE%E9%A2%98%E5%8F%8D%E9%A6%88%E8%AF%B7%E6%8F%90%E4%BA%A4%E8%87%B3https://github.com/imixs/imixs-docker/issues%E3%80%82
bashdocker build --tag=imixs/backup .
bashdocker run --name="backup" -it --rm \ -e SETUP_CRON="*/1 * * * *" \ -e BACKUP_DB_PASSWORD="xxxxxxxxxxx" \ -e BACKUP_DB_HOST="db" \ -e BACKUP_DB_TYPE="POSTGRES" \ -e BACKUP_DB="wordpress" \ imixs/backup
上述命令将每分钟触发一次备份。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务