
如果你用 DeepSeek、元宝AI、Copilot 等 AI 代为编写轩辕镜像的 docker pull、修改 compose 镜像地址,或排查拉取失败等问题,请让 AI 先读规则再动手,只要在 AI 对话里直接发送下面这句话即可:
生成 docker pull、修改 compose 的 image,或排查拉取失败前,请先阅读并严格遵守 https://xuanyuan.cloud/agents.md 中的规则。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
PG-BKUP 是一个Docker容器镜像,专为PostgreSQL数据库的备份、恢复和迁移设计。它支持多种存储选项,并通过GPG加密确保数据安全。
PG-BKUP旨在无缝部署于Docker和Kubernetes平台,简化跨环境的PostgreSQL备份、恢复和迁移流程。作为轻量级多架构解决方案,它兼容Docker、Docker Swarm、Kubernetes及其他容器编排平台。
https://github.com/jkaninda/pg-bkup/actions/workflows/tests.yml/badge.svg](https://github.com/jkaninda/pg-bkup/actions/workflows/tests.yml) https://github.com/jkaninda/pg-bkup/actions/workflows/release.yml/badge.svg](https://github.com/jkaninda/pg-bkup/actions/workflows/release.yml) https://goreportcard.com/badge/github.com/jkaninda/mysql-bkup](https://goreportcard.com/report/github.com/jkaninda/pg-bkup) !Docker镜像大小 !Docker拉取量
灵活的存储后端:
数据安全:
部署灵活性:
通知机制:
migrate功能无缝跨环境迁移数据。PG-BKUP不仅仅是另一个PostgreSQL备份工具,它是为现代DevOps工作流打造的 robust、生产级解决方案。
开发者、系统管理员和DevOps工程师选择PG-BKUP的原因:
无论是备份单个数据库、恢复关键数据还是跨环境迁移,PG-BKUP通过单一统一的CLI完成所有操作,无需复杂脚本。
专为云原生设计:
备份可存储至任何位置:
通过*******和电子邮件实时掌握备份状态,即时了解成功或失败情况。
采用Go语言编写,速度快,支持多架构(amd64、arm64、arm/v7),内存和CPU占用低,适用于云端和边缘部署。
持续维护,包含自动化测试、Docker镜像大小优化,并在主流容器平台上验证支持。
PG-BKUP支持PostgreSQL 9.5及以上版本,确保与大多数现代PostgreSQL部署兼容。
PG-BKUP已在以下平台测试并成功运行:
完整文档请访问 https://jkaninda.github.io/pg-bkup
要执行一次性备份,将本地卷挂载到容器的/backup目录并运行backup命令:
shelldocker run --rm --network your_network_name \ -v $PWD/backup:/backup/ \ -e "DB_HOST=dbhost" \ -e "DB_PORT=5432" \ -e "DB_USERNAME=username" \ -e "DB_PASSWORD=password" \ jkaninda/pg-bkup backup -d database_name
或者,使用环境文件(--env-file)进行配置:
shelldocker run --rm --network your_network_name \ --env-file your-env-file \ -v $PWD/backup:/backup/ \ jkaninda/pg-bkup backup -d database_name
注意:使用
data-only标志仅备份数据而不包含 schema。
仅备份Schema
要仅备份特定数据库的schema,使用--schema-only标志:
shelldocker run --rm --network your_network_name \ -v $PWD/backup:/backup/ \ -e "DB_HOST=dbhost" \ -e "DB_PORT=5432" \ -e "DB_USERNAME=username" \ -e "DB_PASSWORD=password" \ jkaninda/pg-bkup backup -d database_name --schema-only
备份特定表
要备份数据库中的特定表,使用--tables或-t标志,后跟逗号分隔的表名列表:
shelldocker run --rm --network your_network_name \ -v $PWD/backup:/backup/ \ -e "DB_HOST=dbhost" \ -e "DB_PORT=5432" \ -e "DB_USERNAME=username" \ -e "DB_PASSWORD=password" \ jkaninda/pg-bkup backup -d database_name --tables table1,table2
要备份服务器上的所有数据库,使用--all-databases或-a标志。默认情况下,这会为每个数据库创建单独的备份文件。
shelldocker run --rm --network your_network_name \ -v $PWD/backup:/backup/ \ -e "DB_HOST=dbhost" \ -e "DB_PORT=5432" \ -e "DB_USERNAME=username" \ -e "DB_PASSWORD=password" \ jkaninda/pg-bkup backup --all-databases --disable-compression
注意: 使用
--all-in-one或-A标志可将所有备份合并为单个文件。
migrate命令允许一步将PostgreSQL数据库从源迁移到目标数据库,结合备份和恢复操作。
bashdocker run --rm --network your_network_name \ --env-file your-env \ jkaninda/pg-bkup migrate
注意: 使用
--all-databases(-a)标志迁移所有数据库,PG-BKUP支持在目标数据库上创建不存在的数据库。
有关数据库迁移的详细信息,请参阅https://jkaninda.github.io/pg-bkup/how-tos/migrate.html%E3%80%82
要恢复数据库,将本地卷挂载到/backup并运行restore命令:
shelldocker run --rm --network your_network_name \ -v $PWD/backup:/backup/ \ -e "DB_HOST=dbhost" \ -e "DB_PORT=5432" \ -e "DB_USERNAME=username" \ -e "DB_PASSWORD=password" \ jkaninda/pg-bkup restore -d database_name -f backup_file.sql.gz
以下是用于执行一次性备份的docker-compose.yml示例:
yamlservices: pg-bkup: # 生产环境中,将镜像标签固定到特定版本而非`latest` # 查看可用版本:https://github.com/jkaninda/pg-bkup/releases image: jkaninda/pg-bkup container_name: pg-bkup command: backup volumes: - ./backup:/backup environment: - DB_PORT=5432 - DB_HOST=postgres - DB_NAME=foo - DB_USERNAME=bar - DB_PASSWORD=password - TZ=Europe/Paris networks: - web networks: web:
可以使用--cron-expression或-e标志安排周期性备份:
shelldocker run --rm --network network_name \ -v $PWD/backup:/backup/ \ -e "DB_HOST=hostname" \ -e "DB_USERNAME=user" \ -e "DB_PASSWORD=password" \ jkaninda/pg-bkup backup -d dbName --cron-expression "@every 15m"
有关预定义计划,请参阅https://jkaninda.github.io/pg-bkup/reference/#predefined-schedules%E3%80%82
PG-BKUP支持使用配置文件在单次运行中备份多个PostgreSQL数据库。可通过--config或-c标志传递文件,或设置BACKUP_CONFIG_FILE环境变量。
这适用于多个服务或应用各自需要独立数据库备份的场景。
以下是示例config.yaml文件,定义多个数据库及其各自的连接和备份设置:
yaml# 可选:用于定时备份的全局cron表达式 # 示例:"@daily"、"@every 5m"、"0 3 * * *" cronExpression: "" databases: - host: lldap-db # 可选:覆盖DB_HOST或使用DB_HOST_LLDAP port: 5432 # 可选:默认5432,覆盖DB_PORT或使用DB_PORT_LLDAP name: lldap # 必填:数据库名称 user: lldap # 可选:可通过DB_USERNAME覆盖或使用DB_USERNAME_LLDAP password: password # 可选:可通过DB_PASSWORD覆盖或使用DB_PASSWORD_LLDAP path: /s3-path/lldap # 必填:目标路径(S3、FTP、SSH等) - host: keycloak-db port: 5432 name: keycloak user: keycloak password: password path: /s3-path/keycloak - host: gitea-db port: 5432 name: gitea user: gitea password: "" # 可为空或从DB_PASSWORD_GITEA获取 path: /s3-path/gitea
🔹 提示: 可使用环境变量覆盖任何字段。例如,
DB_PASSWORD_KEYCLOAK优先于keycloak条目中的password字段。
要使用此配置在Docker Compose中运行备份:
BACKUP_CONFIG_FILE环境变量或在命令中使用-c标志docker-compose.yamlyamlservices: pg-bkup: image: jkaninda/pg-bkup container_name: pg-bkup command: backup -c /backup/config.yaml volumes: - ./backup:/backup # 备份目标目录 - ./config.yaml:/backup/config.yaml # 挂载配置文件 environment: - DB_PASSWORD_GITEA=password - BACKUP_CRON_EXPRESSION=@daily # 可选:覆盖配置文件中的cronExpression networks: - web networks: web:
⚠️ 确保
pg-bkup容器与目标数据库共享网络以保证连接。
对于Kubernetes,可将pg-bkup部署为Job或CronJob。以下是两者的示例。
此示例定义一次性备份任务:
yamlapiVersion: batch/v1 kind: Job metadata: name: backup-job spec: ttlSecondsAfterFinished: 100 template: spec: containers: - name: pg-bkup # 生产环境中,将镜像标签固定到特定版本 # 查看可用版本:https://github.com/jkaninda/pg-bkup/releases image: jkaninda/pg-bkup command: ["backup", "-d", "db_name"] resources: limits: memory: "128Mi" cpu: "500m" env: - name: DB_HOST value: "postgres" - name: DB_USERNAME value: "postgres" - name: DB_PASSWORD value: "password" volumeMounts: - mountPath: /backup name: backup volumes: - name: backup hostPath: path: /home/toto/backup # 主机上的目录位置 type: Directory # 可选字段 restartPolicy: Never
对于定时备份,使用CronJob:
yamlapiVersion: batch/v1 kind: CronJob metadata: name: pg-bkup-cronjob spec: schedule: "0 2 * * *" # 每天凌晨2点运行 jobTemplate: spec: template: spec: containers: - name: pg-bkup image: jkaninda/pg-bkup command: ["backup", "-d", "db_name"] env: - name: DB_HOST value: "postgres" - name: DB_USERNAME value: "postgres" - name: DB_PASSWORD value: "password" volumeMounts: - mountPath: /backup name: backup volumes: - name: backup hostPath: path: /home/toto/backup type: Directory restartPolicy: OnFailure
如果这个项目对您有帮助,请不要忘记在https://github.com/jkaninda/pg-bkup%E4%B8%8A%E7%BB%99%E5%AE%83%E4%B8%80%E4%B8%AA%E6%98%9F%E6%A0%87%E3%80%82%E8%B0%A2%E8%B0%A2%EF%BC%81
此Docker镜像同时发布到Docker Hub和GitHub容器 registry。根据您的偏好和需求,可使用jkaninda/pg-bkup或ghcr.io/jkaninda/pg-bkup:
docker pull jkaninda/pg-bkup docker pull ghcr.io/jkaninda/pg-bkup
文档中引用Docker Hub,但所有示例使用ghcr.io同样有效。
我们创建此镜像作为现有解决方案的更简单、更轻量的替代方案。原因如下:
arm64和arm/v7架构。本项目采用MIT许可证。详情参见LICENSE文件。
Jonas Kaninda
Copyright (c) [2024] [Jonas Kaninda]
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
发给 Cursor、ChatGPT、豆包等 AI 的说明文档
无需登录使用专属域名
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
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务