gpt4 book ai didi

docker - 多平台 Docker 内部网络从主机连接

转载 作者:行者123 更新时间:2023-12-05 08:05:27 25 4
gpt4 key购买 nike

我有一个独特的 Docker 问题。我正在开发一个需要连接到多个 Docker 容器的应用程序。要点是,此应用程序将使用 Docker SDK 启动容器并根据需要连接到它们。

但是,由于应用程序的性质,我们应该假设这些容器中的每一个都受到损害并且不安全。因此,我需要将它们与主机网络分开(这样它们就无法访问我的设备和 WAN)。我仍然需要从我的应用程序连接到它们。

macOS networking stack doesn't support connecting to a docker network 是一个众所周知的问题.通常,我会通过公开我需要的端口来解决这个问题。但是,这对于我的应用程序是不可能的,因为我正在使用带有 Docker 的内部网络。

我想完成类似下面的事情。假设容器 2 和容器 3 在它们自己的私有(private)内部网络上。主机(不是容器)正在控制 Docker SDK 并可以查询其内部 IP。因此,它可以轻松连接到这些机器,而无需将此网络暴露给主机的网络。幸运的是,这种设置适用于 Linux。但是,我想提出一个适用于 macOS 的跨平台解决方案。

Network diagram

最佳答案

我也遇到过类似情况。我最终做的是:

  • 该应用程序管理动态容器到端口的映射(只是一个哈希表)。
  • 当我的应用程序(在主机上)想要启动一个容器时,它会在预定义的范围内(例如 28000-29000)找到一个未使用的端口。
  • 一旦有了端口,它就会将容器的端口映射到预定范围内的某个端口(例如 -p 28003:80 )。
  • 当我的应用需要引用容器时,它使用 localhost:<port> (例如 localhost:28001 )。

事实证明代码并不多,但如果你走那条路,请确保封装你引用容器的方式(即不要硬编码主机名和端口,使用生成字符串)。

总而言之,您确实应该使用 VM 部署选项进行一些测试,然后再将其排除为速度太慢。

关于docker - 多平台 Docker 内部网络从主机连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65165332/

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