
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
基于https://github.com/SavageSoftware/portainer-backup%E7%9A%84Fork%E7%89%88%E6%9C%AC%EF%BC%8C%E5%8C%85%E5%90%AB%E4%B8%80%E4%BA%9B%E5%B0%8Fbug%E4%BF%AE%E5%A4%8D%E5%92%8C%E4%BE%9D%E8%B5%96%E6%9B%B4%E6%96%B0%E3%80%82
docker-compose文件yamlservices: portainer-backup: image: dockurr/portainer-backup container_name: portainer-backup command: schedule environment: TZ: "America/New_York" PORTAINER_BACKUP_URL: "http://portainer:9000" PORTAINER_BACKUP_TOKEN: "PORTAINER_ACCESS_TOKEN" PORTAINER_BACKUP_PASSWORD: "" PORTAINER_BACKUP_OVERWRITE: 1 PORTAINER_BACKUP_SCHEDULE: "0 0 0 * * *" PORTAINER_BACKUP_STACKS: 1 PORTAINER_BACKUP_DRYRUN: 0 PORTAINER_BACKUP_CONCISE: 1 PORTAINER_BACKUP_DIRECTORY: "/backup" PORTAINER_BACKUP_FILENAME: "portainer-backup.tar.gz" volumes: - ./backup:/backup restart: always
shelldocker run -it --rm \ --name portainer-backup \ --volume "${PWD:-.}/backup:/backup" \ --env PORTAINER_BACKUP_URL="http://portainer:9000" \ --env PORTAINER_BACKUP_TOKEN="YOUR_ACCESS_TOKEN" \ dockurr/portainer-backup \ backup
此工具需要通过单个命令执行内置操作之一。
| 命令 | 描述 |
|---|---|
backup | 备份Portainer数据归档文件 |
schedule | 运行定时Portainer备份 |
stacks | 备份Portainer stacks配置 |
test | 测试备份(不保存文件) |
info | 获取Portainer服务器信息 |
backup操作将对指定服务器执行一次Portainer数据备份。备份文件为TAR.GZ归档,可选择使用密码保护(--password)。操作完成后进程立即终止。
以下Docker命令将执行Portainer数据备份:
shelldocker run -it --rm \ --name portainer-backup \ --volume ${PWD:-.}/backup:/backup \ --env TZ="America/New_York" \ --env PORTAINER_BACKUP_URL="http://portainer:9000" \ --env PORTAINER_BACKUP_TOKEN="PORTAINER_ACCESS_TOKEN" \ --env PORTAINER_BACKUP_OVERWRITE=true \ --env PORTAINER_BACKUP_DIRECTORY=/backup \ dockurr/portainer-backup:latest \ backup
test操作将对指定服务器执行一次Portainer数据备份,但不会将数据保存到文件系统。test操作等同于使用--dryrun选项。操作完成后进程立即终止。
以下Docker命令将执行Portainer数据测试备份:
shelldocker run -it --rm \ --name portainer-backup \ --volume ${PWD:-.}/backup:/backup \ --env TZ="America/New_York" \ --env PORTAINER_BACKUP_URL="http://portainer:9000" \ --env PORTAINER_BACKUP_TOKEN="PORTAINER_ACCESS_TOKEN" \ --env PORTAINER_BACKUP_DIRECTORY=/backup \ dockurr/portainer-backup:latest \ test
schedule操作将对指定服务器执行持续的定时备份。--schedule选项或PORTAINER_BACKUP_SCHEDULE环境变量接受cron格式字符串定义备份计划。进程将持续运行,除非启动时验证步骤失败。
以下Docker命令将执行Portainer数据定时备份:
shelldocker run -it --rm \ --name portainer-backup \ --volume ${PWD:-.}/backup:/backup \ --env TZ="America/New_York" \ --env PORTAINER_BACKUP_URL="http://portainer:9000" \ --env PORTAINER_BACKUP_TOKEN="PORTAINER_ACCESS_TOKEN" \ --env PORTAINER_BACKUP_OVERWRITE=true \ --env PORTAINER_BACKUP_DIRECTORY=/backup \ --env PORTAINER_BACKUP_SCHEDULE="0 0 0 * * *" \ dockurr/portainer-backup:latest \ schedule
info操作将向指定Portainer服务器发送信息请求。操作完成后进程立即终止。
以下Docker命令将从Portainer获取信息:
shelldocker run -it --rm \ --name portainer-backup \ --env PORTAINER_BACKUP_URL="http://portainer:9000" \ dockurr/portainer-backup:latest \ info
stacks操作将对指定服务器执行一次Portainer stacks的docker-compose数据备份。此操作不备份Portainer数据库/数据文件,仅备份stacks配置。也可通过backup操作中的--stacks选项包含stacks备份。操作完成后进程立即终止。
以下Docker命令将执行Portainerstacks备份:
shelldocker run -it --rm \ --name portainer-backup \ --volume ${PWD:-.}/backup:/backup \ --env TZ="America/New_York" \ --env PORTAINER_BACKUP_URL="http://portainer:9000" \ --env PORTAINER_BACKUP_TOKEN="PORTAINER_ACCESS_TOKEN" \ --env PORTAINER_BACKUP_OVERWRITE=true \ --env PORTAINER_BACKUP_DIRECTORY=/backup \ dockurr/portainer-backup:latest \ stacks
生成的备份文件可用于Portainer内置的恢复功能。详情参见:[***]
Portainer-backup进程退出后将返回数值。
| 值 | 描述 |
|---|---|
| 0 | 工具成功执行命令 |
| 1 | 工具遇到错误并失败 |
Portainer-backup支持通过命令行参数和环境变量配置所有选项。
| 选项 | 环境变量 | 类型 | 描述 |
|---|---|---|---|
-t, --token | PORTAINER_BACKUP_TOKEN | string | Portainer访问令牌 |
-u, --url | PORTAINER_BACKUP_URL | string | Portainer基础URL |
-Z, --ignore-version | PORTAINER_BACKUP_IGNORE_VERSION | true|false | 绕过Portainer版本检查/强制验证 |
-d, --directory, --dir | PORTAINER_BACKUP_DIRECTORY | string | 备份目录/路径 |
-f, --filename | PORTAINER_BACKUP_FILENAME | string | 备份文件名 |
-p, --password, --pw | PORTAINER_BACKUP_PASSWORD | string | 备份归档密码 |
-M, --mkdir, --make-directory | PORTAINER_BACKUP_MKDIR | true|false | 创建备份目录路径 |
-o, --overwrite | PORTAINER_BACKUP_OVERWRITE | true|false | 覆盖现有文件 |
-s, --schedule, --sch | PORTAINER_BACKUP_SCHEDULE | string | 定时备份的cron表达式 |
-i, --include-stacks, --stacks | PORTAINER_BACKUP_STACKS | true|false | 在备份中包含stack文件 |
-q, --quiet | PORTAINER_BACKUP_QUIET | true|false | 不显示任何控制台输出 |
-D, --dryrun | PORTAINER_BACKUP_DRYRUN | true|false | 执行命令任务但不持久化任何数据 |
-X, --debug | PORTAINER_BACKUP_DEBUG | true|false | 打印遇到的任何错误的堆栈跟踪 |
-J, --json | PORTAINER_BACKUP_JSON | true|false | 打印格式化/结构化JSON数据 |
-c, --concise | PORTAINER_BACKUP_CONCISE | true|false | 打印简洁/有限的输出 |
-v, --version | (N/A) | 显示工具版本号 | |
-h, --help | (N/A) | 显示帮助信息 |
注意: 如果同时配置了环境变量和命令行选项,命令行选项将优先生效。
Portainer-backup通过--schedule选项或PORTAINER_BACKUP_SCHEDULE环境变量接受cron格式字符串表达式定义备份计划。
注意: 支持的cron语法详情参见:https://github.com/node-cron/node-cron/blob/master/README.md#cron-syntax
语法格式: ┌──────────────────────── 秒(可选) │ ┌──────────────────── 分 │ │ ┌──────────────── 时 │ │ │ ┌──────────── 日 │ │ │ │ ┌──────── 月 │ │ │ │ │ ┌──── 周 │ │ │ │ │ │ │ │ │ │ │ │ * * * * * * 示例: 0 0 0 * * * 每天午夜12:00 0 0 5 1 * * 每月1日凌晨5:00 0 */15 0 * * * 每15分钟
| 字段 | 允许值 |
|---|---|
| 秒 | 0-59 |
| 分 | 0-59 |
| 时 | 0-23 |
| 日 | 1-31 |
| 月 | 1-12(或名称) |
| 周 | 0-7(或名称,0或7为周日) |
使用多值
| 表达式 | 描述 |
|---|---|
0 0 4,8,12 * * * | 每天4点、8点、12点执行 |
使用范围
| 表达式 | 描述 |
|---|---|
0 0 1-5 * * * | 每天1点到5点每小时执行 |
使用步长值
步长值可与范围结合使用,在范围后添加/和数字。例如:1-10/2等同于2,4,6,8,10。也可在星号后使用步长,如每2分钟执行可使用*/2。
| 表达式 | 描述 |
|---|---|
0 0 */2 * * * | 每2小时执行 |
使用名称
月和周字段也可使用名称或缩写名称。例如:
| 表达式 | 描述 |
|---|---|
* * * * January,September Sunday | 1月和9月的周日执行 |
* * * * Jan,Sep Sun | 1月和9月的周日执行(缩写) |
Portainer-backup支持通过替换语法为目录和文件名选项动态分配日期时间元素。
| 命令行选项 | 环境变量 |
|---|---|
-d, --directory, --dir | PORTAINER_BACKUP_DIRECTORY |
-f, --filename | PORTAINER_BACKUP_FILENAME |
所有替换预设和/或令牌使用双花括号包裹:{{ PRESET|TOKEN }}
示例:
--filename "portainer-backup-{{DATE}}.tar.gz"
Portainer-backup使用https://moment.github.io%E5%BA%93%E8%A7%A3%E6%9E%90%E6%97%A5%E6%9C%9F%E6%97%B6%E9%97%B4%E8%AF%AD%E6%B3%95%E3%80%82%E6%9B%B4%E5%A4%9A%E4%BF%A1%E6%81%AF%E5%8F%82%E8%A7%81%EF%BC%9Ahttps://moment.github.io/luxon/#/formatting
所有日期时间均使用运行portainer-backup工具的系统本地时间渲染。也可在任何令牌前添加UTC_前缀以使用UTC时间。
文件名还会经过sanitize函数处理,去除不支持的字符::替换为_,/替换为-。
portainer-backup定义了以下替换预设:
| 令牌 | 格式 | 示例(美国时间) |
|---|---|---|
DATETIME | yyyy-MM-dd'T'HHmmss | 2022-03-05T231356 |
TIMESTAMP | yyyyMMdd'T'HHmmss.SSSZZZ | 20220305T***.445-0500 |
DATE | yyyy-MM-dd | 2022-03-05 |
TIME | HHmmss | 231356 |
ISO8601 | yyyy-MM-dd'T'hh_mm_ss.SSSZZ | 2017-04-20T11_32_00.000-04_00 |
ISO | yyyy-MM-dd'T'hh_mm_ss.SSSZZ | 2017-04-20T11_32_00.000-04_00 |
ISO_BASIC | yyyyMMdd'T'hhmmss.SSSZZZ | 20220305T***.871-05_00 |
ISO_NO_OFFSET | yyyy-MM-dd'T'hh_mm_ss.SSS | 2022-03-05T19_12_43.296 |
ISO_DATE | yyyy-MM-dd | 2017-04-20 |
ISO_WEEKDATE | yyyy-'W'kk-c | 2017-W17-7 |
ISO_TIME | hh_mm_ss.SSSZZZ | 11_32_00.000-04_00 |
RFC2822 | ccc, dd LLL yyyy HH_mm_ss ZZZ | Thu, 20 Apr 2017 11_32_00 -0400 |
HTTP | ccc, dd LLL yyyy HH_mm_ss ZZZZ | Thu, 20 Apr 2017 03_32_00 GMT |
MILLIS | x | 1492702320000 |
SECONDS | X | ***.000 |
UNIX | X | ***.000 |
EPOCH | X | ***.000 |
以下替换预设由https://moment.github.io%E5%BA%93%E6%8F%90%E4%BE%9B%E5%B9%B6%E8%A2%AB**portainer-backup**%E6%94%AF%E6%8C%81%EF%BC%9A (更多信息参见Luxon文档:https://moment.github.io/luxon/#/formatting?id=presets%EF%BC%89
(以下预设使用1983年10月14日13:30:23
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务