Docker提示“Docker hv-sock proxy (vsudd) is not reachable”问题求助
解决Windows 10 Linux容器模式下的“Docker hv-sock proxy (vsudd) is not reachable”问题
我之前帮不少人排查过这个错误,结合你用的是Windows 10 1709版本,且重装系统、切换容器都没用的情况,先给你拆解下可能的原因,再一步步来解决:
可能的原因
- Hyper-V核心服务异常:hv-sock是Docker和Hyper-V通信的关键通道,依赖
Hyper-V Host Compute Service、Hyper-V Virtual Machine Management这两个核心服务,要是它们没正常启动或者中途崩溃,Docker就连不上hv-sock proxy了。 - WSL后端配置损坏:如果你用WSL2作为Linux容器的后端,1709版本的WSL支持不算太成熟,虚拟机的网络或套接字配置出问题很容易触发这个错误。
- 安全软件拦截:杀毒软件、防火墙(包括Windows Defender)可能误判Docker和Hyper-V的通信,把相关连接给拦截了。
- Windows 1709版本兼容性问题:这个版本比较老旧,Docker后续更新对旧版Windows的适配可能出现了偏差,导致hv-sock通信出问题。
分步解决方法
1. 重启Hyper-V核心服务
先试试最直接的,重启Hyper-V的关键服务:
打开管理员权限的命令提示符,依次输入以下命令执行:
net stop vmms net stop hcservice net start vmms net start hcservice
这两个服务是Hyper-V和Docker通信的核心,重启后很多临时异常都会消失。
2. 重置Docker的Linux容器后端
如果用的是WSL2后端:
- 打开Docker Desktop的设置,切换到Resources > WSL Integration,先把所有启用的WSL发行版都关掉,点击应用;然后再重新启用,再次应用。
- 要是还不行,打开管理员权限的PowerShell,执行
wsl --shutdown关闭所有WSL虚拟机,然后重启Docker Desktop。
如果用的是Hyper-V原生后端:
- 打开Docker Desktop设置,到General选项卡,先取消勾选
Use the WSL 2 based engine,点击应用;等设置生效后,再重新勾选这个选项并应用,强制Docker重建Hyper-V虚拟机。
3. 修复Hyper-V组件
有时候重装系统后Hyper-V组件可能没完全安装好,用这个命令修复:
打开管理员权限的命令提示符,执行:
dism /online /enable-feature /featurename:Microsoft-Hyper-V /all /norestart
这个命令会重新启用并修复Hyper-V的所有组件,完成后重启电脑再试Docker。
4. 排除安全软件干扰
暂时禁用你的杀毒软件、防火墙(包括Windows Defender的实时保护),然后重启Docker Desktop。如果问题解决了,记得把这些Docker相关的内容添加到安全软件白名单:
- Docker安装目录(默认是
C:\Program Files\Docker\Docker) - Docker相关进程:
Docker Desktop.exe、dockerd.exe、com.docker.service
5. 手动重建Docker的Hyper-V虚拟机(进阶操作)
如果上面的方法都没用,试试手动删除Docker的虚拟机,让它重新创建:
- 打开Hyper-V管理器,找到名为
DockerDesktopVM的虚拟机,右键选择删除(记得先备份好你的镜像和容器,或者先导出虚拟机)。 - 关闭Docker Desktop,然后重新启动,Docker会自动重建这个虚拟机和对应的hv-sock连接。
内容的提问来源于stack exchange,提问作者Arthur
相关产品推荐
相关产品推荐

