
如果你使用 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/arkanis/minidyndns%E7%9A%84%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%AE%9E%E7%8E%B0%EF%BC%8C%E7%94%A8%E4%BA%8E%E5%9C%A8DNS%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E5%8A%A8%E6%80%81%E6%9B%B4%E6%96%B0%E4%B8%BB%E6%9C%BA%E7%9A%84IP%E5%9C%B0%E5%9D%80%E3%80%82%E9%80%82%E7%94%A8%E4%BA%8E%E9%9C%80%E8%A6%81%E4%BF%9D%E6%8C%81DNS%E8%AE%B0%E5%BD%95%E4%B8%8E%E4%B8%BB%E6%9C%BA%E5%BD%93%E5%89%8DIP%E4%B8%80%E8%87%B4%E7%9A%84%E5%9C%BA%E6%99%AF%EF%BC%8C%E6%94%AF%E6%8C%81%E5%90%8C%E6%97%B6%E9%85%8D%E7%BD%AE%E5%A4%9A%E4%B8%AADNS%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%E9%80%9A%E8%BF%87%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E7%81%B5%E6%B4%BB%E8%AE%BE%E7%BD%AE%EF%BC%8C%E5%B9%B6%E5%AE%9A%E6%9C%9F%E8%87%AA%E5%8A%A8%E5%88%B7%E6%96%B0IP%E4%BF%A1%E6%81%AF%E3%80%82
适用于主机IP地址可能动态变化的环境,需要保持DNS记录实时更新的场景,例如:
bashdocker pull jusaba/dns:latest
构建镜像需准备以下文件:
Dockerfile
dockerfileFROM debian:bookworm-slim ENV TZ=Europe/Madrid LABEL version=2.0 LABEL autor=Julian_Salas RUN apt-get update -y && \ apt-get upgrade -y && \ apt-get install -y --no-install-recommends \ cron \ python3 \ python3-requests && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* COPY ./start.sh /home/pi/ip/start.sh WORKDIR /home/pi/ip CMD ["bash", "start.sh"]
start.sh脚本
bash#!/bin/bash # /home/pi/ip/start.sh # 支持任意数量的DNS服务器 # 服务器通过SERVIDORES变量传入,以逗号分隔 # 示例: SERVIDORES=dns1.com,dns2.com,dns3.com # 或通过servidor1, servidor2等变量(兼容旧版本) rm -f /home/pi/ip/ActualizaDNS.py touch /home/pi/ip/ActualizaDNS.py rm -f /var/spool/cron/crontabs/root touch /var/spool/cron/crontabs/root # 生成获取公网IP并发送更新请求的Python脚本 echo "import requests" >> /home/pi/ip/ActualizaDNS.py echo "from requests.auth import HTTPBasicAuth" >> /home/pi/ip/ActualizaDNS.py echo "" >> /home/pi/ip/ActualizaDNS.py echo "# 获取公网IP" >> /home/pi/ip/ActualizaDNS.py echo "try:" >> /home/pi/ip/ActualizaDNS.py echo " myip = requests.get('https://api.ipify.org', timeout=10).text.strip()" >> /home/pi/ip/ActualizaDNS.py echo "except:" >> /home/pi/ip/ActualizaDNS.py echo " myip = requests.get('https://ifconfig.me/ip', timeout=10).text.strip()" >> /home/pi/ip/ActualizaDNS.py echo "" >> /home/pi/ip/ActualizaDNS.py # 使用SERVIDORES变量(推荐方式) if [ -n "$SERVIDORES" ]; then echo "$SERVIDORES" | tr ',' '\n' | while read servidor; do servidor=$(echo "$servidor" | tr -d ' ') if [ -n "$servidor" ]; then echo "requests.get(f'http://${servidor}:8001/?myip={myip}', auth=HTTPBasicAuth('$host', '$password'))" >> /home/pi/ip/ActualizaDNS.py fi done else # 使用编号变量(兼容旧版本) i=1 while true; do eval servidor=\$servidor$i if [ -z "$servidor" ]; then break fi echo "requests.get(f'http://${servidor}:8001/?myip={myip}', auth=HTTPBasicAuth('$host', '$password'))" >> /home/pi/ip/ActualizaDNS.py i=$((i + 1)) done fi # 配置定时任务 service cron stop chmod 600 /var/spool/cron/crontabs/root echo "*/${refresco} * * * * python3 /home/pi/ip/ActualizaDNS.py" >> /var/spool/cron/crontabs/root service cron reload cron -f
使用buildx构建多平台镜像:
bashdocker buildx build --platform=linux/amd64,linux/arm64,linux/arm/v7 -t jusaba/dns:latest . --push
项目包含GitHub Actions工作流,在以下情况自动构建并推送镜像:
main分支v*的标签(如v1.0.0)需配置GitHub Secrets:
DOCKER_USERNAME:Docker Hub用户名DOCKER_PASSWORD:Docker Hub密码或访问令牌| 变量名 | 描述 |
|---|---|
host | 主机名(如"lleida"对应"lleida.dominio.es"),需已在DNS服务器注册 |
refresco | IP刷新间隔(分钟) |
password | 主机在DNS服务器注册时的密码 |
SERVIDORES | DNS服务器列表,逗号分隔(推荐),如"dns1.com,dns2.com" |
servidor1, servidor2... | 编号DNS服务器变量(兼容旧版本) |
方式1:使用SERVIDORES变量(推荐)
bashdocker run -e host=lleida \ -e refresco=1 \ -e password=passlleida \ -e SERVIDORES=dns1.com,dns2.com \ -d --name dns jusaba/dns:latest
方式2:使用编号变量(兼容旧版本)
bashdocker run -e host=lleida \ -e refresco=1 \ -e password=passlleida \ -e servidor1=dns1.com \ -e servidor2=dns2.com \ -d --name dns jusaba/dns:latest
方式3:使用.env文件
创建parametros.env文件:
envhost=lleida refresco=1 password=passlleida SERVIDORES=dns1.com,dns2.com
启动容器:
bashdocker run --env-file parametros.env -d --name dns jusaba/dns:latest
Julián Salas Barolome - 开发与文档
本项目可作为miniDynDns客户端自由使用。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务