Docker部署自托管Azure DevOps代理时出现dev.azure.com域名解析错误
故障产生原因
- 核心根因为Docker容器内部的域名解析配置异常,首条
The remote name could not be resolved: 'dev.azure.com'报错就是直接证明,后续所有报错均为解析失败后脚本无法正常下载Azure DevOps代理安装包导致的连锁问题。 - 常见触发场景包含三类:
- Docker默认DNS配置异常:Windows/macOS环境下Docker Desktop的自动DNS继承机制失效,尤其是主机处于公司内网、开启VPN拆分隧道的场景下,容器无法获取到可正常解析公网域名的DNS服务器地址。
- 自定义Docker网络未配置DNS转发:如果启动容器时指定了自定义隔离网络,且该网络未配置正确的DNS转发规则,也会出现容器内域名解析失败。
- 主机自定义hosts未同步:如果本地为访问dev.azure.com手动在主机hosts文件中添加了解析记录,Docker容器默认不会继承该配置,也会导致容器内解析失败。
修复方案
- 方案1:启动容器时手动指定公共DNS服务器,直接在原有启动命令中新增
--dns参数即可:
docker run --dns 8.8.8.8 --dns 114.114.114.114 -e AZP_URL=https://dev.azure.com/myOrganisation/ -e AZP_TOKEN=myToken -e AZP_AGENT_NAME=myAgent -e AZP_POOL=myPool dockeragent:latest
- 方案2:若你需要使用主机hosts中的自定义解析,可先在本地CMD执行
ping dev.azure.com获取该域名对应的IP地址,再通过--add-host参数将解析规则注入容器:
# 示例中dev.azure.com对应的IP为20.42.134.1,需替换为你本地实际解析到的IP docker run --add-host dev.azure.com:20.42.134.1 -e AZP_URL=https://dev.azure.com/myOrganisation/ -e AZP_TOKEN=myToken -e AZP_AGENT_NAME=myAgent -e AZP_POOL=myPool dockeragent:latest
- 方案3:全局修改Docker的DNS配置(Docker Desktop用户适用)
打开Docker Desktop设置页面,进入「Docker Engine」配置栏,在配置JSON中新增dns字段,保存后重启Docker即可全局生效,无需每次启动容器单独加参数:{ "experimental": false, "dns": ["8.8.8.8", "114.114.114.114"] }
内容的提问来源于stack exchange,提问作者user16908085
相关产品推荐
相关产品推荐

