如何允许子网中的 docker 容器在子网外部进行通信

How to allow docker containers in a subnet to communicate outside the subnet

提问人:VKH 提问时间:11/15/2023 更新时间:11/16/2023 访问量:49

问:

我有一个运行 RHEL 8 VM 的 Windows 主机,该 VM 运行多个 Docker 容器。我创建了 Docker 网络,并为每个容器分配了静态 IP。VM 可以访问每个容器终结点。但是,Windows 主机和外部任何内容都不能。是否可以创建一个子网,允许外部应用程序与容器进行通信?

这些容器中的每一个都充当路由设备,以从外部应用程序接收数据。外部应用需要能够将数据发送到与容器对应的 IP。

注意:目前不使用 docker-compose

容器 docker-networking rhel8

评论

0赞 0x00 11/15/2023
如果您使用的是 virtualbox,您可以在 VM 的网络设置中启用适配器,而不是使用,因此它可以从您的路由器获取 IP,并且您的主机应该能够看到 VM。否则,如果需要 NAT,Virtualbox 在高级选项中有一个 portfoward 选项,以便您可以访问 VM 的端口。NATBridged network

答:

0赞 Moziii 11/16/2023 #1

下面是在 Windows 主机上的 Rhel 8 VM 中为 Docker 容器设置子网的分步步骤,以允许外部应用程序与这些容器通信:

  • 在 Docker 中设置桥接网络以连接所有容器。
  • 确保每个 Docker 容器在网桥网络中分配了一个静态 IP。
  • 在 Rhel VM 上配置端口转发,以将流量从 VM 重定向到 Docker 容器。
  • 调整 Windows 主机网络设置以允许流向 Rhel VM 的流量。
  • 在 Windows 主机和 Rhel VM 上设置转发规则,以允许外部应用程序访问 Docker 容器。
0赞 Chris Becke 11/16/2023 #2

docker 中的外部连接由发布端口端口进行管理。

是的,可以从主机操作系统访问具有静态 IP 的容器。这不是预期的功能,这是桥接网络的实现细节。

如果您坚持使用此详细信息,请注意,它仅适用于 docker 引擎安装,Docker Desktop 不会帮助将容器从 Moby vm 公开到主机。因为它实际上并不是 Docker 的一个功能。