Docker - 从私有网络访问主机

Docker - Accessing host from private network

我和我的团队有很多小型服务,它们相互协作以完成工作。我们想出了一些适合我们的内部工具和一些解决方案,但我们一直在努力改进。

我们创建了一个 docker 设置,我们在其中执行如下操作: 也就是说,我们有一个专用网络,服务可以通过名称相互调用并且可以正常工作。 在这种情况下,如果 service-a 像 http://localhost:6002 那样调用 service-b 是行不通的。

我们有一个场景,我们希望在一个模块上工作,运行 其余部分在 docker 上工作。所以我们可以 运行 service-a 直接从我们的 IDE 出来,然后在 docker 上留下 service-bservice-c。最后一个服务 (service-c) 我们将从 host 网络引用为 localhost:6003。 这很好用!

然而,我们越往下走,事情就会“失控”。在示例中,我们只有 3 个服务,但我们最长的链有 6 个服务。假设我想在最后一个上工作,我必须启动之前的所有服务才能模拟完整的链。 (在大多数情况下,我们通过 API 工作,这会使点静音,但请耐心等待)。是这样的:

问题 有没有办法允许这样的情况发生? 为了 运行 部分服务作为 docker 容器,例如我的 IDE 中的一项服务?

或者是否有必要将它们都放在 host 网络上,以便它们都能够通过 localhost 互相呼叫?

感谢任何帮助!

您可以使用 --add-host service-b:$(hostname -i) 将主机 IP 地址推送到容器中,这样容器就不需要知道哪个服务不是 运行ning 在 docker 中。

您可以将 docker 撰写文件设置为接受关于您要执行的服务的参数...

extra_hosts:
  - ${HOST_SVC:fakehost}:${HOST_IP}

但老实说 - 最简单的解决方案可能只是设置您想要使用安装的源代码的服务,运行 它们都在 docker 中,然后重新启动容器需要。