
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该Docker镜像用于运行https://github.com/vmstan/gravity-sync%EF%BC%8C%E6%94%AF%E6%8C%81X86/64%E5%92%8CARM64%E6%9E%B6%E6%9E%84%E3%80%82ARM%E7%89%88%E6%9C%AC%E9%95%9C%E5%83%8F%E5%90%8D%E7%A7%B0%E5%89%8D%E7%BC%80%E4%B8%BA%E2%80%9Carm-%E2%80%9D%EF%BC%88%E4%BE%8B%E5%A6%82x86/64%E7%9A%84%60latest%60%E5%AF%B9%E5%BA%94ARM%E7%89%88%E6%9C%AC%E7%9A%84%60arm-latest%60%EF%BC%89%E3%80%82Gravity Sync主要用于同步多个PiHole实例的配置,确保网络广告拦截规则和DNS设置保持一致。
升级注意事项
如从旧版本升级,需查看目标版本的升级说明。
预启动脚本
需运行预启动脚本配置远程主机,推荐遵循所有建议配置,否则可能需要手动配置或降低安全级别。操作步骤:
创建本地SSH目录:
bashmkdir /path/to/.ssh
以交互模式运行容器,挂载SSH目录并执行预启动脚本:
bashdocker run -t -i -v "/path/to/.ssh:/root/.ssh:rw" --rm docker_gravitysync /usr/local/bin/prelaunch.sh
手动预启动
如选择手动配置,需预生成SSH密钥并挂载到容器(详见SSH密钥部分)。建议在远程主机创建专用用户(如gravitysync)接收SSH连接(详见用户创建建议)。
Gravity Sync服务配置请参考https://github.com/vmstan/gravity-sync%E3%80%82%E6%B3%A8%E6%84%8F%EF%BC%9ADocker%E9%95%9C%E5%83%8F%E4%B8%AD%E7%9A%84%E9%83%A8%E5%88%86%E9%85%8D%E7%BD%AE%E9%A1%B9%E5%90%8D%E7%A7%B0%E4%B8%8E%E5%8E%9F%E7%94%9FGravity Sync不同,差异项已在下表中标记(!)。容器首次运行时会将环境变量映射到配置文件,请勿挂载自定义配置文件,否则会导致容器启动失败。
| 说明 | 原生Gravity Sync | Docker镜像 |
|---|---|---|
| REMOTE_HOST | REMOTE_HOST | |
| ! | SSH_PORT | REMOTE_SSH_PORT |
| REMOTE_USER | REMOTE_USER | |
| ! | PH_IN_TYPE | LOCAL_HOST_TYPE |
| ! | RH_IN_TYPE | REMOTE_HOST_TYPE |
| ! | PIHOLE_DIR | LOCAL_PIHOLE_DIR |
| ! | RIHOLE_DIR | REMOTE_PIHOLE_DIR |
| ! | DNSMAQ_DIR | LOCAL_DNSMASQ_DIR |
| ! | RNSMAQ_DIR | REMOTE_DNSMASQ_DIR |
| ! | PIHOLE_BIN | LOCAL_PIHOLE_BIN |
| ! | RIHOLE_BIN | REMOTE_PIHOLE_BIN |
| ! | PH_IN_TYPE | LOCAL_PH_INSTALL_TYPE |
| ! | RH_IN_TYPE | REMOTE_PH_INSTALL_TYPE |
| ! | DOCKER_BIN | LOCAL_DOCKER_BIN |
| ! | ROCKER_BIN | REMOTE_DOCKER_BIN |
| ! | FILE_OWNER | LOCAL_FILE_OWNER |
| ! | RILE_OWNER | REMOTE_FILE_OWNER |
| ! | DOCKER_CON | LOCAL_DOCKER_CON |
| ! | ROCKER_CON | REMOTE_DOCKER_CON |
| GRAVITY_FI | GRAVITY_FI | |
| CUSTOM_DNS | CUSTOM_DNS | |
| INCLUDE_CNAME | INCLUDE_CNAME | |
| VERIFY_PASS | VERIFY_PASS | |
| SKIP_CUSTOM | SKIP_CUSTOM | |
| DATE_OUTPUT | DATE_OUTPUT | |
| PING_AVOID | PING_AVOID | |
| ROOT_CHECK_AVOID | ROOT_CHECK_AVOID | |
| BACKUP_RETAIN | BACKUP_RETAIN | |
| SSH_PKIF | SSH_PKIF | |
| BACKUP_TIMEOUT | BACKUP_TIMEOUT |
yamlgravitysync: build: context: /docker/gravity-sync-docker/ dockerfile: /docker/gravity-sync-docker/Dockerfile container_name: "gravitysync" restart: "unless-stopped" environment: TZ: "ETC/UTC" REMOTE_HOST: "192.168.0.1" REMOTE_USER: "gravitysync" LOCAL_INSTALL_TYPE: "docker" REMOTE_INSTALL_TYPE: "docker" LOCAL_PIHOLE_DIR: "/etc/pihole/" REMOTE_PIHOLE_DIR: "/docker/pihole/config/pihole/" LOCAL_DNSMASQ_DIR: "/etc/dnsmasq.d/" REMOTE_DNSMASQ_DIR: "/docker/pihole/config/dnsmasq/" LOCAL_PH_INSTALL_TYPE: "default" REMOTE_PH_INSTALL_TYPE: "docker" LOCAL_FILE_OWNER: "root:root" REMOTE_FILE_OWNER: "root:root" INCLUDE_CNAME: "1" SYNC_FREQUENCY: "15" BACKUP_HOUR: "4" DEBUG: "true" volumes: - "/docker/gravity-sync/logs/:/root/gravity-sync/logs/:rw" - "/docker/gravity-sync/data/backup:/root/gravity-sync/backup/:rw" - "/docker/gravity-sync/data/gravity-sync.md5:/root/gravity-sync/gravity-sync.md5:rw" - "/docker/gravity-sync/data/.ssh/:/root/.ssh/:rw" - "/docker/pihole/config/pihole:/etc/pihole/:rw" - "/docker/pihole/config/dnsmasq:/etc/dnsmasq.d/:rw" - "/var/run/docker.sock:/var/run/docker.sock:ro"
容器内以下路径需根据需求挂载到主机,确保数据持久化和功能正常:
Docker Socket
/var/run/docker.sockPiHole配置目录
/etc/pihole//etc/pihole,需确保容器内挂载路径与LOCAL_PIHOLE_DIR环境变量值一致Gravity Sync备份目录
/root/gravity-sync/data/backup/BACKUP_RETAIN调整)。不挂载此目录会导致容器更新时丢失备份Gravity Sync日志文件
/root/gravity-sync/logs/gravity-sync.log、/root/gravity-sync/logs/gravity-sync.cronGravity Sync MD5文件
/root/gravity-sync/gravity-sync.md5SSH密钥目录
/root/.ssh/如已运行预启动脚本,可选择自动创建用户
建议在远程主机创建专用用户(如gravitysync),避免使用root或个人管理账户。该用户需无密码sudo权限和读写PiHole配置的权限。Ubuntu系统配置示例:
bashsudo adduser gravitysync sudo echo "gravitysync ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/gravitysync sudo usermod -a -G sudo gravitysync sudo usermod -a -G docker gravitysync
如已运行预启动脚本,密钥会自动生成配置
需配置SSH密钥实现远程主机认证,生成方法:
使用Alpine容器生成(适用于无OpenSSH客户端的系统)
bashdocker run -t -i --rm alpine:latest apk --update add openssh-client && ssh-keygen -t rsa -f /tmp/id_rsa
使用系统OpenSSH客户端生成(适用于已安装OpenSSH的系统)
直接执行ssh-keygen -t rsa生成密钥
复制公钥到远程主机
使用ssh-copy-id工具复制公钥:
bashssh-copy-id -i /tmp/id_rsa.pub gravitysync@192.168.0.1
(需替换/tmp/id_rsa.pub为实际公钥路径,gravitysync为远程用户名,192.168.0.1为远程主机IP)
3.0.0版本
LOCAL_PH_INSTALL_TYPE和REMOTE_PH_INSTALL_TYPE两个配置选项您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务