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

如何修复因HNS错误无法重启的Docker Daemon(Windows Server环境)

修复Windows Server上Docker Daemon启动失败(HNS错误0x80080005)的方案

先确认下你的环境信息:

  • Docker for Windows Server
  • Windows Server 1709版本(带容器功能)
  • Docker版本17.06.2-ee-6,构建版本e75fdb8
  • Swarm模式工作节点,归属Ubuntu主节点组成的集群

从你提供的日志来看,核心错误是Error initializing network controller: hnsCall failed in Win32: Server execution failed (0x80080005)——这说明Windows的HNS(Host Networking Service)网络配置已经损坏,Docker在尝试恢复之前的overlay网络时无法和HNS正常交互。下面是具体的修复步骤:

步骤1:停止相关服务

打开管理员权限的PowerShell,先停掉Docker和HNS服务:

Stop-Service docker
Stop-Service hns

步骤2:清理损坏的HNS配置

HNS的网络状态存储在本地文件和注册表中,这些配置已经损坏,需要彻底清理:

  1. 删除HNS的状态数据文件:
    Remove-Item -Path "C:\ProgramData\Microsoft\Windows\HNS\HNS.data" -Force
    
  2. 清理HNS对应的注册表项(修改注册表前建议先备份相关项):
    reg delete "HKLM\SYSTEM\CurrentControlSet\Services\hns\State" /f
    

步骤3:重启服务并验证Docker启动

重新启动HNS和Docker服务:

Start-Service hns
Start-Service docker

执行docker version命令,确认Docker Daemon已经正常启动。

步骤4:重新加入Swarm集群

因为清理了HNS配置,节点的Swarm集群信息也会丢失,需要从你的Ubuntu主节点获取worker节点的加入命令:
在Ubuntu主节点执行:

docker swarm join-token worker

把输出的完整命令复制到Windows节点的PowerShell中执行,重新加入Swarm集群。

步骤5:验证overlay网络功能

启动Docker后,先查看网络列表确认overlay网络存在:

docker network ls

然后可以启动一个测试容器连接到目标overlay网络,验证网络通信是否正常:

docker run -it --rm --network <你的overlay网络名称> mcr.microsoft.com/windows/servercore:1709 ping -t 8.8.8.8

额外建议

  1. 你的Docker EE版本17.06.2已经停止维护,建议升级到支持Windows Server 1709的最新兼容EE版本,能避免很多旧版本的网络bug;
  2. 后续尽量避免直接强制重启服务器,先执行Stop-Service docker停止Docker服务后再重启服务器,减少HNS配置损坏的概率;
  3. 检查Swarm集群主节点和Windows工作节点之间的网络连通性,确保TCP 2377、7946、4789端口始终畅通,避免overlay网络配置同步异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:07:59