在Windows上使用Hyper-V隔离和LCOW运行多个独立的Docker守护程序

时间:2019-02-15 16:40:40

标签: windows docker hyper-v moby

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

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

  

ERRO [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网络。

我知道在将MobyVM用作WinNAT时无法在Windows的Docker中完成此操作,在这种情况下使用does not support it
使用Hyper-V隔离和LCOW时,似乎不再使用WinNAT,因为尽管DNS工作正常,Get-NetNat不会返回任何NAT网络配置。我不确定我在任何事情上都是对的,如果没有其他Windows限制,这是否不可能...

0 个答案:

没有答案