我正在尝试设置一个家庭服务器来托管 VM 和 Docker 容器。
在 Hyper-V 部分运行的虚拟机没有问题:
- 创建一个新的内部交换机(NatSwitch)
- 设置其IP配置:
New-NetIPAddress -IPAddress 10.0.75.1 -PrefixLength 24 -InterfaceIndex <ifIndex>
- 创建 NAT 配置:
New-netNat -Name SharedNat -InternalIPInterfaceAddressPrefix 10.0.0.0/17
- 创建重定向:
Add-NetNatStaticMapping -NatName $NatName -Protocol TCP -ExternalPort 80 -InternalPort 80 -InternalIPAddress 10.0.75.2 -ExternalIPAddress 0.0.0.0
我现在要声明的是,此时 NAT 按预期工作,其后面的 VM 可以联系外界,并且外界只能通过其中一个转发端口发起与 VM 的联系。
现在我正在尝试设置docker,以便我可以同时使用它,同时仍然使用它的NAT功能(我正在尝试避免“透明”docker网络,以避免用容器污染我的网络。)
请注意,我在 Microsoft 网站上找到了说明:https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/setup-nat-network,我稍后会回复他们。
因为首先我需要安装docker。按照这些说明:https://learn.microsoft.com/fr-fr/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce#windows-server-1,一切已安装完毕,是时候回到之前的 NAT 设置说明了。
小回顾:
- 1 个外部 Hyper-V 交换机(应该不会产生影响,但为了完整性而包含在内)
- 1 个内部 Hyper-V 交换机配置在 10.0.75.1/24 上(运行一个虚拟机,其 IP 为 10.0.75.2)
- 1 在 10.0.0.0/17 上配置 1 个 Nat
据我所知,我需要让 docker 使用 10.0.76.0/24 范围内的 IP 作为自己的 NAT 网络。这是通过"fixed-cidr":"10.0.76.0/24"
添加C:\ProgramData\docker\config\daemon.json
但是当启动 docker 时,我在事件日志中收到以下错误消息:
致命错误:无法启动守护程序:初始化网络控制器时出错:创建默认网络时出错:hnsCallRawResponse 期间失败:hnsCall 在 Win32 中失败:您未连接,因为网络上存在重复的名称。如果加入域,请转到控制面板中的系统以更改计算机名称,然后重试。如果加入工作组,请选择另一个工作组名称。(0x34)
我错过了什么?
如果这可能会对解决方案产生影响,我计划让该服务器成为 docker swarm 的管理器,并加入一个 linux VM 以便能够托管 linux 容器。