Linux VM拉取Docker镜像报dial tcp: lookup设备或资源忙问题求助
问题现象
Linux虚拟机拉取Docker镜像时触发异常,通过journalctl -u docker查看服务日志可见如下报错:
level=error msg="Handler for POST /images/create returned error: Get "https://
": dial tcp: lookup https:// : device or resource busy".
故障触发场景为:在故障虚拟机内部部署Docker远程API的.Net客户端,通过Unix Socket以RPC方式调用,执行ImageOperation.CreateImageAsync接口完成镜像拉取时稳定复现问题。
已排除的故障原因
- 排除Azure Container Registry(ACR,Azure容器注册表)侧间歇性故障:多时段多次重试均复现相同错误,且同配置的另一台虚拟机可正常拉取同一注册表的镜像
- 已检查Docker的
daemon.json配置文件,未发现异常配置项 - 已核验
systemd-resolve服务内配置的DNS服务器IP,配置符合要求
排查思路与修复方案
按照优先级从高到低依次排查:
1. 优先检查SDK调用参数格式错误
从报错日志中lookup https://<containerregistry>的特征可以直接定位高概率根因:Docker SDK/原生命令要求传入的注册表地址、镜像地址为纯域名(可带端口),不能携带https://协议前缀。如果传参时误将带协议头的完整URL作为注册表地址传入,Docker会把包含https://的完整字符串当做域名发起DNS查询,必然触发解析失败,且会抛出资源忙类的解析错误。
- 核对调用
CreateImageAsync接口时传入的镜像名、注册表地址参数,移除所有https://、http://前缀后重试。 - 可直接和正常拉取镜像的同配置虚拟机上的SDK传参做比对,确认参数格式完全一致。
2. 排查本地DNS解析链路冲突
如果确认参数格式无误,进一步排查本地DNS配置的实际生效问题,不要仅核对systemd-resolve的静态配置:
- 直接在故障机上执行
nslookup <你的ACR纯域名>、dig <你的ACR纯域名>,验证基础解析是否正常。 - 执行
ls -l /etc/resolv.conf检查该文件属性,正常环境下该文件应为指向../run/systemd/resolve/stub-resolv.conf的软链接。如果该文件被替换为普通静态文件,会出现systemd-resolve配置正确,但Docker进程读取resolv.conf拿到错误DNS配置、多进程并发读取时触发"device or resource busy"报错。修复方式:
# 备份原文件 mv /etc/resolv.conf /etc/resolv.conf.bak # 重建软链接指向systemd-resolve生成的配置 ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf # 重启Docker服务加载新配置 systemctl restart docker
- 执行
ss -ulnp | grep :53检查UDP 53端口监听情况,确认没有nscd、异常dnsmasq进程抢占53端口,导致DNS查询被拦截返回资源忙错误。
3. 区分故障边界定位问题范围
跳过SDK直接用Docker原生命令测试,缩小故障范围:
- 执行
docker pull <你的ACR镜像完整地址(不带https前缀)>,如果原生命令拉取正常,说明故障在SDK侧:- 检查运行.Net客户端进程的用户权限,确认该用户属于
docker用户组,拥有访问/var/run/docker.sock的权限,权限不足时RPC调用会抛出异常网络错误 - 执行
tcpdump -i any port 53 -nn抓包,触发SDK拉取时查看实际发起DNS查询的域名,确认没有多余的前后缀特殊字符
- 检查运行.Net客户端进程的用户权限,确认该用户属于
- 如果原生命令拉取也报错,和正常同配置虚拟机比对Docker、containerd、runc的二进制版本,确认版本一致,必要时重启Docker运行时、重置Docker网桥配置后重试。
4. 排查网络策略拦截
- 比对故障虚拟机和正常虚拟机的iptables/nftables规则,确认OUTPUT链没有规则拦截Docker进程发起的DNS请求(UDP 53端口)、到ACR的HTTPS请求(TCP 443端口)
- 核对云平台侧绑定到虚拟机的NSG网络安全组出站规则,确认和正常虚拟机配置一致,没有拦截到ACR服务网段的流量
内容的提问来源于stack exchange,提问作者Souvik Ghosh
相关产品推荐
相关产品推荐

