1

我正在尝试运行多个 Docker 守护程序,这些守护程序配置为在同一台 Windows 10 机器上运行具有 Hyper-V 隔离和 LCOW 的容器。我能够配置守护进程来管理它们自己的数据文件,但我仍然在努力让网络配置变得干净。

当第一个守护进程启动时,它会绑定到本地“nat”网络以进行 DNS 解析。当第二个守护进程启动时,它尝试绑定到同一个“nat”网络然后失败,因为端口 53 已经被第一个守护进程使用。

错误 [2019-02-15T15:50:58.194988300Z] 容器 nat 的解析器设置/启动失败,“打开名称服务器套接字侦听 udp 172.18.64.1:53 时出错:绑定:每个套接字地址仅使用一次(协议/网络地址/端口)通常是允许的。” 由这个守护进程启动的容器不能执行任何名称解析。通过 IP 访问仍然可以正常工作。

这是我目前使用的 dockerd 配置:

{
  "registry-mirrors": [],
  "insecure-registries": [],
  "bridge": "mydaemon1",
  "data-root": "C:\\Users\\myuser\\Desktop\\Docker\\Docker",
  "deprecated-key-path": "C:\\Users\\myuser\\Desktop\\Docker\\Docker\\config\\key.json",
  "debug": true,
  "exec-root": "C:\\Users\\myuser\\Desktop\\Docker\\Docker\\exec-root",
  "exec-opts": [
    "isolation=hyperv"
  ],
  "experimental": true,
  "group": "mydaemon-docker",
  "hosts": [
    "npipe:////./pipe/mydaemon1_engine"
  ],
  "pidfile": "C:\\Users\\myuser\\Desktop\\Docker\\Docker\\docker.pid",
  "storage-opts": [
    "lcow.kirdpath=C:\\Users\\myuser\\Desktop\\Docker\\server\\resources",
    "lcow.kernel=lcow-kernel",
    "lcow.initrd=lcow-initrd.img"
  ]
}

我试图调整bridge配置,但它没有改变任何东西。守护进程总是尝试连接到nat网络。看起来唯一受支持的值是none,它删除了容器中的默认 eth0 和任何 DNS 支持。

是否可以配置用于 DNS 解析的网络,即nat这里?
理想情况下,我希望守护程序拥有自己的专用nat网络。

我知道在 Windows 的 Docker 中使用 MobyVM 作为 WinNAT 是不可能的,在这种情况下使用的 WinNAT不支持它
在使用 Hyper-V 隔离和 LCOW 时,似乎不再使用 WinNAT,因为Get-NetNat尽管 DNS 工作正常,但不会返回任何 NAT 网络配置。我不确定我在任何事情上都是对的,如果适用任何其他 Windows 限制,这是否可能也不可能......

4

0 回答 0