gpt4 book ai didi

docker - 如何从 hyper-v 虚拟机连接到 windows docker 容器的公开端口?

转载 作者:行者123 更新时间:2023-12-02 18:37:46 25 4
gpt4 key购买 nike

当我运行命令来运行 windows docker 容器并将端口公开给主机时,我可以 ping 容器并连接到它。问题是我现在想从通过虚拟交换机连接到主机以太网网络的 Hyper-V VM 执行此操作。

Hyper-V 中没有桥接适配器的选项,只有在 Virtualbox 中。默认情况下,Windows docker 容器网络驱动程序也是 NAT,而不是 Linux 容器中的桥接器。

我已经尝试过覆盖网络驱动程序来连接到 Docker Swarm,但 Windows 容器也不支持。我还尝试使用指定的网络目标、子网掩码和网关将静态路由添加到 Windows 路由表,但也没有运气。

我没有尝试过的唯一选项是端口映射/转发,但我不是一个网络专家,而且我可以在网上找到的有关 Hyper-V 端口映射的文档涉及带有虚拟交换机的 NAT 配置。我不确定下一步该尝试什么。

docker run --rm --name rabbitmqtest -p 15672:15672 -p 5672:5672 --ip 192.168.130.4
5 -t imgtest containerNetwork

最佳答案

当前版本的 Hyper-V 创建了一个连接到默认网络的默认交换机, guest VM 使用该交换机通过 NAT 连接到主机网络。

您可以通过 ipconfig 从 guest VM 获取网络详细信息命令。例如,我拥有的当前机器:

IPv4 Address. . . . . . . . . . . : 192.168.131.236
Subnet Mask . . . . . . . . . . . : 255.255.255.240
Default Gateway . . . . . . . . . : 192.168.131.225

默认网关基本上是主机,因此您应该能够直接访问该 IP 地址上的映射端口。

例如,在我的机器上,我也在一个容器中运行 Elastic Stack,Kibana 端口映射到 32771。
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                                                NAMES
9fa6fe19a911 sebp/elk:latest "/usr/local/bin/star…" 16 minutes ago Up 16 minutes 0.0.0.0:32772->5044/tcp, 0.0.0.0:32771->5601/tcp, 0.0.0.0:32770->9200/tcp, 0.0.0.0:32769->9300/tcp elk

要从 guest VM 访问 Kibana,我只需浏览到 http://192.168.131.225:32771/
在您的情况下,您应该能够从 Hyper-V guest VM 访问 docker 容器的 RabbitMQ Web UI,地址为 http://192.168.<your gateway>:15672/

编辑:您可能还需要删除特定的 IP 地址绑定(bind),以便端口映射到所有接口(interface),包括 Hyper-V 默认网络。

注: Hyper-V 还支持内部和共享(桥接)网络,它们也可以以类似的方式使用。早期版本的 Hyper-V 没有默认 NAT(但您可以使用 Windows Internet 连接共享来创建 NAT)。

关于docker - 如何从 hyper-v 虚拟机连接到 windows docker 容器的公开端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52613893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com