泊坞窗网不暴露托管在Windows
我在泊坞窗,compose.yml泊坞窗网不暴露托管在Windows
version: '3'
services:
nginx:
build: ./docker/nginx
networks:
eznet:
ipv4_address: 172.21.20.30
ports:
- 80:80
volumes:
- ./logs/nginx/:/var/log/nginx
- ${APP_PATH}:/var/www/
networks:
eznet:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.21.20.0/24
在Linux泊坞窗,撰写ngnix服务和网络的基本配置将创建172.21.20.x虚拟网络接口子网,在172.21.20.30上可访问ngnix。这对我的开发团队非常有用,我们正在使用它来组织多个项目。
在运行docker-compose up -d
后,Windows(基于hyperV的Docker for Windows)未创建新的网络接口。
我试图改变多克尔守护程序设置,我已经添加
{
"bridge": "none"
}
到守护程序配置,这是应该避免码头工人从创建的默认网络(DockerNAT),并迫使其公开所有网络作为主机上可见的接口,但没有任何更改。
有什么方法可以让Docker for Windows在主机上公开Docker网络吗?
用于Windows/Mac容器网络的Docker无法从主机访问。
Docker在HyperV中运行的Alpine Linux虚拟机的网桥上创建网络。这些网络不会暴露给VM主机。唯一的网络访问容器是通过映射的TCP或UDP端口。
有许多方法可以设置可以访问的虚拟机,但通常包括使用自定义虚拟机而不是Docker for Windows/Mac(或Docker Machine),因为Docker虚拟机不是非常可定制的(它们旨在便于使用/设置)。
-
使用到主机的网络路由创建Docker虚拟机。
为VM创建一个"external network switch"。
在VirtualBox上会有桥接适配器。也可以通过仅主机网络适配器进行设置,但由于大多数容器需要互联网访问,因此可能会更复杂一点,因此需要第二个适配器。
-
平泊坞窗VM
您应该能够从您的主机ping该虚拟机的主界面,反之亦然
C:\> ping 192.168.98.30
-
确保IP路由在泊坞VM开启
添加IP转发sysctl相关(
/etc/sysctl.d/99-sysctl.conf
在Debian)net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1
然后重新装入sysctl的文件拿起配置
sysctl --system
-
通过VM
私人码头工人网添加路由现在告诉你的VM主机怎么去泊坞窗网络。
route -p ADD 172.21.20.0 MASK 255.255.255.0 192.168.98.30
我这样做与Vagrant/Debian/VirtualBox主要所以道歉,如果Hyper-V的术语是关闭的。我的Vagrant setup通过创建一个连接到仅主机网络的整个网桥,使容器可以连接到网桥并直接从主机访问,从而更进一步。
我在VirtualBox上为Docker Toolbox的Vagrant创建了非常类似的解决方法:)(我们为每个项目分别安装了vm)。如果我有时间,我会使用Vagrant和docker-machine工作流程来研究hyper-v/MobyVM网络的成果,但此时它对我来说是不重要的。 – McOffsky