docker-dns-rest是一个为Docker容器提供RESTful DNS服务的工具,主要用于测试依赖DNS进行服务发现的应用。它能够将指定域名映射到Docker容器的IP地址,并在容器启停时自动注册或注销DNS记录,从而模拟特定环境(如 staging 环境)的DNS解析场景。
*.example.com)bashdocker run -d -p 5080:80 -v /var/run/docker.sock:/docker.sock --name dns \ phensley/docker-dns-rest --verbose
参数说明:
-p 5080:80:将容器80端口映射到主机5080端口-v /var/run/docker.sock:/docker.sock:挂载Docker socket,用于监听容器事件--name dns:指定容器名称为dns--verbose:启用详细日志模式bashdocker logs -f dns
若Docker运行在Vagrant虚拟机中,需添加路由确保主机可访问容器网络:
bashroute add -net 172.17.0.0 <Vagrant VM IP> # 示例:route add -net 172.17.0.0 192.168.222.5
bashdocker inspect -f '{{.NetworkSettings.IPAddress}}' dns # 输出示例:172.17.0.2
通过REST API将域名关联到指定容器(按名称或ID):
bashcurl -X PUT \ -d '{"domains": ["*.example.com", "www.staging.internal.com"]}' \ http://<DNS容器IP>:80/container/name/www # 示例:http://172.17.0.2:80/container/name/www
响应:{"code": 0} 表示成功
启动名称为www的容器(需与上一步注册的名称匹配):
bashdocker run -it --name www ubuntu bash
此时DNS日志会显示域名映射信息:
2014-10-11T15:26:29.198673 [dnsrest] setting www (83854cf229) as active 2014-10-11T15:26:29.198821 [dnsrest] added *.example.com. -> 172.17.0.3 2014-10-11T15:26:29.198900 [dnsrest] added www.staging.internal.com. -> 172.17.0.3
使用host命令测试域名解析:
bashhost test.example.com <DNS容器IP> # 示例:host test.example.com 172.17.0.2
输出示例:
test.example.com has address 172.17.0.3
停止容器:DNS记录自动注销
bashdocker stop www
日志显示:
2014-10-11T15:28:35.050232 [dnsrest] setting www (83854cf229) as inactive 2014-10-11T15:28:35.050378 [dnsrest] removed *.example.com. -> 172.17.0.3
重启容器:DNS记录自动重新注册(使用新IP)
bashdocker start www
启动容器时通过--dns参数指定DNS服务器:
bashdocker run -it --name shell --dns <DNS容器IP> --dns-search example.com ubuntu bash
在容器内测试解析:
bashping foo # 解析为 foo.example.com ping www.staging.internal.com
| 命令行参数 | 说明 | 默认值 |
|---|---|---|
--verbose | 启用详细日志输出 | 禁用 |
--no-recursion | 禁用未匹配域名的递归转发 | 启用(转发至8.8.8.8) |
--resolver | 指定递归查询的DNS服务器 | 8.8.8.8 |
示例:禁用递归转发
bashdocker run -d -p 5080:80 -v /var/run/docker.sock:/docker.sock --name dns \ phensley/docker-dns-rest --verbose --no-recursion
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务