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

Docker Swarm初始化后主机不可达问题(Windows Server 2016 Core)

Docker Swarm初始化后丢失物理网卡IP的解决方案

这个问题我碰到过好几次——Windows Server 2016 Core上启动Docker Swarm后物理网卡(Ethernet)的192.168.0.1丢失,本质是Docker自动创建HNS Transparent网络时,默认会接管物理网卡的IP配置,把原来的静态IP冲成了APIPA地址(169.254.x.x)。下面是具体的修复和预防步骤:

1. 先清理现有Swarm环境

首先得把出问题的Swarm集群和异常网络删掉:

  • 强制退出Swarm:docker swarm leave --force
  • 列出所有Docker网络:docker network ls,找到名字带ingress或者transparent的异常网络(就是那个导致IP丢失的HNS网络)
  • 删除异常网络:docker network rm <异常网络名称>
  • 用PowerShell确认网卡状态:Get-NetIPAddress,此时应该能看到Ethernet网卡,但可能没有IP或者是错误的IP

2. 恢复物理网卡的静态IP

用PowerShell重新配置Ethernet网卡的静态IP:

# 设置IP地址和子网掩码(根据你的实际网络调整PrefixLength,比如24对应255.255.255.0)
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 192.168.0.1 -PrefixLength 24 -DefaultGateway 192.168.0.254

# 设置DNS服务器(替换成你的实际DNS地址)
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 8.8.8.8, 192.168.0.1

执行完后再用Get-NetIPAddress -InterfaceAlias "Ethernet"确认192.168.0.1已经恢复。

3. 手动创建兼容的透明网络(关键步骤)

避免Docker自动创建网络时抢占IP,我们提前手动创建一个绑定到物理网卡的透明网络:

docker network create -d transparent `
  --opt com.docker.network.windowsshim.interface="Ethernet" `
  --subnet 192.168.0.0/24 `
  --gateway 192.168.0.254 `
  --ip-range 192.168.0.100/28 `
  my-swarm-transparent

参数说明:

  • --opt com.docker.network.windowsshim.interface="Ethernet":强制将透明网络绑定到你的物理网卡,Docker不会修改该网卡的原有IP
  • --subnet和--gateway要和你的本地网络完全匹配
  • --ip-range指定Docker可以分配给容器的IP段,不要包含你的物理网卡IP(192.168.0.1)

4. 重新初始化Swarm集群

这次用我们手动创建的网络来初始化,避免自动创建的网络干扰:

docker swarm init --advertise-addr 192.168.0.1 --data-path-addr 192.168.0.1 --ingress-network my-swarm-transparent

参数说明:

  • --advertise-addr:Swarm管理节点对外通信的地址(必须是物理网卡IP)
  • --data-path-addr:容器间数据传输的地址,和管理地址保持一致即可
  • --ingress-network:指定我们手动创建的透明网络作为Swarm的 ingress 网络,替代Docker默认创建的网络

5. 验证配置是否生效

  • 查看Swarm节点状态:docker node ls,应该能看到当前节点是Leader状态
  • 再次检查网卡IP:Get-NetIPAddress -InterfaceAlias "Ethernet",确认192.168.0.1依然存在
  • 从同一网络的其他机器ping 192.168.0.1,测试连通性;也可以用docker node inspect self查看节点的管理地址是否正确

额外注意事项

  • 建议升级Docker版本:Windows Server 2016对应的Docker EE版本尽量用17.06及以上,早期版本的网络兼容性问题更多
  • 防火墙规则:确保物理网卡的防火墙允许Swarm所需端口:2377/tcp(管理通信)、7946/tcp/udp(节点间通信)、4789/udp(Overlay网络数据)
  • Hyper-V虚拟机设置:如果是虚拟机,确保网卡设置为外部网络(允许管理操作系统共享此网络适配器),避免网络隔离导致的IP问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:59:09