stackexchange/dnscontrolDNSControl是一个用于维护DNS区域的系统,包含两部分:描述DNS区域的领域特定语言(DSL),以及处理该DSL并将生成的区域文件推送到DNS提供商(如Route53、Cloudflare、Gandi等)的软件。该Docker镜像为Docker用户提供了DNSControl二进制文件,基于master分支自动构建,可在任何支持Docker的环境中运行,用于跨多个DNS提供商管理DNS记录,生成BIND区域文件,并支持CI/CD工作流。
preview命令检查变更,push命令执行变更,确保操作安全dnsconfig.js)和凭据文件(creds.json)通过Docker运行DNSControl命令,需挂载本地配置文件到容器内的/dns目录:
bashdocker run --rm -it \ -v $(pwd)/dnsconfig.js:/dns/dnsconfig.js \ -v $(pwd)/creds.json:/dns/creds.json \ stackexchange/dnscontrol \ dnscontrol preview
dnsconfig.js:DNS区域描述文件,使用DSL定义域名、注册商、DNS提供商及记录(示例见下文)creds.json:存储DNS提供商API凭据的配置文件,格式需符合各提供商要求js// 定义注册商和DNS提供商 var namecom = NewRegistrar("name.com", "NAMEDOTCOM"); var r53 = NewDnsProvider("r53", "ROUTE53") // 定义DNS区域 D("example.com", namecom, DnsProvider(r53), A("@", "1.2.3.4"), // A记录:根域名指向1.2.3.4 CNAME("www", "@"), // CNAME记录:www指向根域名 MX("@", 5, "mail.myserver.com."), // MX记录:优先级5,指向mail.myserver.com A("test", "5.6.7.8") // A记录:test子域名指向5.6.7.8 )
预览变更:检查配置文件并预览需推送的DNS变更(不实际执行)
bashdocker run --rm -it -v $(pwd)/dnsconfig.js:/dns/dnsconfig.js -v $(pwd)/creds.json:/dns/creds.json stackexchange/dnscontrol dnscontrol preview
执行变更:将配置文件中定义的DNS记录推送到指定提供商
bashdocker run --rm -it -v $(pwd)/dnsconfig.js:/dns/dnsconfig.js -v $(pwd)/creds.json:/dns/creds.json stackexchange/dnscontrol dnscontrol push
通过Docker容器查看DNSControl文档:
bashdocker run --rm -it \ --volume="$PWD:/srv/jekyll" \ --volume="$PWD/vendor/bundle:/usr/local/bundle" \ --env JEKYLL_ENV=production \ jekyll/jekyll:3.8 \ jekyll build -V
完整文档及详细使用指南请访问官方网站:[***]
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务