Docker - 从私有网络访问主机
Docker - Accessing host from private network
我和我的团队有很多小型服务,它们相互协作以完成工作。我们想出了一些适合我们的内部工具和一些解决方案,但我们一直在努力改进。
我们创建了一个 docker 设置,我们在其中执行如下操作:
也就是说,我们有一个专用网络,服务可以通过名称相互调用并且可以正常工作。
在这种情况下,如果 service-a 像 http://localhost:6002
那样调用 service-b 是行不通的。
我们有一个场景,我们希望在一个模块上工作,运行 其余部分在 docker 上工作。所以我们可以 运行 service-a
直接从我们的 IDE 出来,然后在 docker 上留下 service-b
和 service-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 中,然后重新启动容器需要。
我和我的团队有很多小型服务,它们相互协作以完成工作。我们想出了一些适合我们的内部工具和一些解决方案,但我们一直在努力改进。
我们创建了一个 docker 设置,我们在其中执行如下操作:
http://localhost:6002
那样调用 service-b 是行不通的。
我们有一个场景,我们希望在一个模块上工作,运行 其余部分在 docker 上工作。所以我们可以 运行 service-a
直接从我们的 IDE 出来,然后在 docker 上留下 service-b
和 service-c
。最后一个服务 (service-c
) 我们将从 host 网络引用为 localhost:6003
。
这很好用!
然而,我们越往下走,事情就会“失控”。在示例中,我们只有 3 个服务,但我们最长的链有 6 个服务。假设我想在最后一个上工作,我必须启动之前的所有服务才能模拟完整的链。 (在大多数情况下,我们通过 API 工作,这会使点静音,但请耐心等待)。是这样的:
问题
有没有办法允许这样的情况发生?
或者是否有必要将它们都放在 host
网络上,以便它们都能够通过 localhost
互相呼叫?
感谢任何帮助!
您可以使用 --add-host service-b:$(hostname -i)
将主机 IP 地址推送到容器中,这样容器就不需要知道哪个服务不是 运行ning 在 docker 中。
您可以将 docker 撰写文件设置为接受关于您要执行的服务的参数...
extra_hosts:
- ${HOST_SVC:fakehost}:${HOST_IP}
但老实说 - 最简单的解决方案可能只是设置您想要使用安装的源代码的服务,运行 它们都在 docker 中,然后重新启动容器需要。