Docker Build在Windows11 WSL2环境下无限挂起于load metadata步骤求助
Docker Build在
load metadata for [image]步骤无限挂起(Windows 11 + WSL2 Docker Desktop) 近几周使用Docker Build时频繁遇到问题,构建过程经常在load metadata for [whatever image]步骤无限挂起。环境是Windows 11 + 启用WSL2的Docker Desktop,偶尔重启能解决,但多数时候无效。
已尝试的排查操作
- 删除
.docker/下的config.json - 切换VPN状态
- 在
daemon.json中手动设置DNS - 在docker-desktop WSL镜像中修改
resolv.conf手动设置DNS - 调整
.wslconfig中的各项配置 - 重启Docker Desktop
- 执行
wsl --shutdown重启WSL - 重装Windows版Docker
关联现象
- 问题可能始于从Windows 10升级到Windows 11,但无法确认
- 问题与具体构建项目无关,也不局限于特定镜像
- 出现问题时,所有现有容器都无法连接到Windows 11原生运行的MSSQL数据库
- 构建正常运行后,只要不关机就能持续使用,但休眠后问题大概率复发
排查&解决建议
重置WSL网络栈
执行以下命令彻底重置WSL相关网络组件:wsl --shutdown netsh winsock reset netsh int ip reset all netsh winhttp reset proxy ipconfig /flushdns完成后重启电脑,再重新启动Docker Desktop。
禁用WSL2节能休眠
Windows 11的节能策略可能导致WSL网络在休眠后异常:- 打开「控制面板\硬件和声音\电源选项\更改计划设置\更改高级电源设置」
- 找到「WSL」选项,将「允许WSL在电池上休眠」设为「禁用」
强制Docker绑定WSL网络
在Docker Desktop设置中:- 进入「Resources > WSL Integration」
- 仅勾选当前使用的WSL发行版(如Ubuntu)
- 暂时关闭「Use the WSL 2 based engine」,保存设置后再重新开启
配置国内镜像源
网络问题可能导致镜像元数据拉取超时,在daemon.json中添加国内镜像源:{ "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://mirror.baidubce.com" ] }修改后重启Docker Desktop生效。
检查防火墙规则
确保Docker相关进程未被防火墙拦截:- 打开「Windows Defender防火墙 > 高级设置」
- 查看「出站规则」,删除或允许阻止
docker.exe、WSL相关进程的规则
更新WSL2内核
旧版WSL2内核可能存在Windows 11兼容性问题,执行命令更新:wsl --update
内容的提问来源于stack exchange,提问作者Emanuel Oster
相关产品推荐
相关产品推荐

