You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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查询的域名,确认没有多余的前后缀特殊字符
  • 如果原生命令拉取也报错,和正常同配置虚拟机比对Docker、containerd、runc的二进制版本,确认版本一致,必要时重启Docker运行时、重置Docker网桥配置后重试。

4. 排查网络策略拦截

  • 比对故障虚拟机和正常虚拟机的iptables/nftables规则,确认OUTPUT链没有规则拦截Docker进程发起的DNS请求(UDP 53端口)、到ACR的HTTPS请求(TCP 443端口)
  • 核对云平台侧绑定到虚拟机的NSG网络安全组出站规则,确认和正常虚拟机配置一致,没有拦截到ACR服务网段的流量

内容的提问来源于stack exchange,提问作者Souvik Ghosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 22:06:51