基于Alpine的DDNS服务,用于将域名动态更新到本机IP,支持dnspod、阿里DNS、CloudFlare、华为云、DNSCOM等服务商。
收藏数: 72
下载次数: 1489004
类型:

newfuture/ddns自动更新 DNS 解析到本机 IP 地址,支持 IPv4 和 IPv6,本地(内网)IP 和公网 IP。
和公网IP,兼容多种DNS服务商,包括dnspod、阿里DNS、CloudFlare、华为云、DNSCOM等。该镜像设计用于在家庭网络、小型服务器或任何需要动态IP地址管理的场景中,保持域名解析与当前IP地址同步。
DDNS镜像版本(Docker Tag):
latest: 最新稳定版(默认)next: 下一个测试版本edge: 最新开发版,不稳定(master分支)bash# 拉取最新稳定版 docker pull newfuture/ddns:latest # 或直接使用 docker pull newfuture/ddns
指定特定版本:
bashdocker pull newfuture/ddns:v4.0.0
镜像会同步发布到以下源:
docker.io/newfuture/ddnsghcr.io/newfuture/ddns使用GitHub源:
bashdocker pull ghcr.io/newfuture/ddns
DDNS Docker镜像支持三种配置方式:命令行、环境变量和配置文件。
当设置命令行参数时,容器将直接运行DDNS程序,不会启用定时任务。适合一次性运行或调试。
bash# 查看帮助 docker run --rm newfuture/ddns -h # 基本使用示例 docker run --rm -v /local/config/:/ddns/ --network=host newfuture/ddns \ --dns=dnspod \ --id=*** \ --token=mytokenkey \ --ipv4=[***] \ --ipv4=ipv4.example.com \ --index4 public \ --index4 0 # 启用调试模式 docker run --rm -v /local/config/:/ddns/ --network=host newfuture/ddns \ --dns=dnspod \ --id=*** \ --token=mytokenkey \ --ipv4=[***] \ --debug
环境变量需加上DDNS前缀,推荐全大写。数组类型需要使用JSON格式或者单引号包裹。
bashdocker run -d \ -e DDNS_DNS=dnspod \ -e DDNS_ID=*** \ -e DDNS_TOKEN=mytokenkey \ -e DDNS_IPV4=example.com,[***] \ -e DDNS_INDEX4=['public',0] \ --network host \ --name ddns \ newfuture/ddns
使用环境变量文件:
bashdocker run -d --env-file .env --network host --name ddns newfuture/ddns
支持的主要环境变量:
| 环境变量 | 描述 | 示例 |
|---|---|---|
| DDNS_DNS | DNS服务商 | dnspod |
| DDNS_ID | API访问ID | *** |
| DDNS_TOKEN | API访问令牌 | mytokenkey |
| DDNS_IPV4 | IPv4域名列表 | example.com,[***] |
| DDNS_IPV6 | IPv6域名列表 | ipv6.example.com |
| DDNS_INDEX4 | IPv4地址获取方式 | ['public',0] |
| DDNS_INDEX6 | IPv6地址获取方式 | ['public',0] |
| DDNS_LOG_LEVEL | 日志级别 | WARNING |
| DDNS_PROXY | HTTP代理 | [***] |
Docker容器内的工作目录是/ddns/,默认配置文件路径为容器内的/ddns/config.json。
bashdocker run -d \ -v /host/config/:/ddns/ \ --network host \ --name ddns \ newfuture/ddns
其中/host/config/是您本地包含config.json的目录。基本的config.json格式示例:
json{ "dns": "dnspod", "id": "***", "token": "mytokenkey", "ipv4": ["example.com", "[***]"], "index4": ["public", 0] }
使用--network host让容器直接使用宿主机网络,可正确获取宿主机IP地址。
bashdocker run -d \ -e DDNS_DNS=dnspod \ -e DDNS_ID=*** \ -e DDNS_TOKEN=mytokenkey \ -e DDNS_IPV4=example.com \ --network host \ --name ddns \ newfuture/ddns
容器使用独立网络栈,需使用public模式获取公网IP:
bashdocker run -d \ -e DDNS_DNS=dnspod \ -e DDNS_ID=*** \ -e DDNS_TOKEN=mytokenkey \ -e DDNS_IPV4=example.com \ -e DDNS_INDEX4=public \ --name ddns \ newfuture/ddns
环境变量方式配置多域名:
bashdocker run -d \ -e DDNS_DNS=dnspod \ -e DDNS_ID=*** \ -e DDNS_TOKEN=mytokenkey \ -e DDNS_IPV4='["example.com", "[***]", "sub.example.com"]' \ --network host \ --name ddns \ newfuture/ddns
命令行参数方式配置多域名:
bashdocker run --rm --network host newfuture/ddns \ --dns dnspod \ --id *** \ --token mytokenkey \ --ipv4 ipv4.example.com \ --ipv4 [***]
/etc/docker/daemon.json:json{ "ipv6": true, "fixed-cidr-v6": "fd00::/80" }
bashsudo systemctl restart docker
bashdocker run -d \ --network host \ -e DDNS_DNS=dnspod \ -e DDNS_ID=*** \ -e DDNS_TOKEN=mytokenkey \ -e DDNS_IPV6=example.com \ --name ddns \ newfuture/ddns
创建docker-compose.yml文件:
yamlversion: "3" services: ddns: image: newfuture/ddns:latest restart: always network_mode: host environment: - DDNS_DNS=dnspod - DDNS_ID=*** - DDNS_TOKEN=mytokenkey - DDNS_IPV4=example.com,[***] - DDNS_INDEX4=['public','url:[***]] - DDNS_LOG_LEVEL=WARNING
yamlversion: "3" services: ddns: image: newfuture/ddns:latest restart: always network_mode: host volumes: - ./config:/ddns
运行Docker Compose:
bashdocker-compose up -d
如需在容器中添加其他工具或自定义环境,可基于官方镜像创建Dockerfile:
dockerfileFROM newfuture/ddns:latest # 安装额外工具 RUN apk add --no-cache curl # 添加自定义脚本 COPY custom-script.sh /bin/ RUN chmod +x /bin/custom-script.sh # 可选:覆盖默认入口点 # ENTRYPOINT ["/bin/custom-script.sh"]
问题:DDNS无法正确获取主机IP
解决方案:
--network host网络模式-e DDNS_INDEX4=public强制使用公网API获取IP问题:容器运行但不自动更新DNS
解决方案:
docker logs ddnsdocker ps -adocker exec ddns /bin/ddns问题:容器启动后立即退出
解决方案:
docker run -it --rm newfuture/ddns问题:容器无法连接到DNS服务商API
解决方案:
docker exec ddns ping api.dnspod.cn-e DDNS_PROXY=[***]您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。




manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务