我正在尝试运行多个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限制,这是否不可能...