在Docker中运行的服务将URL返回到不同容器中的另一个服务服务

我对Docker很陌生,所以可能只是我误解了一些东西。 我们正在开发一个使用SDK的系统,这个SDK依赖于2个Docker服务,我们拥有这些图像的tar文件。 这两个图像都在端口8080上公开了一个REST API。

我已经按照我们提供的说明运行了容器。 SDK连接到一个服务(A),服务A使用服务B.运行A时提供的选项之一是用于连接到B的URL。

我使用的URL是http://service-b-container-name:8080 (如提供的说明中所指定的)

似乎服务A上的API正在返回服务B上的资源的URL,然后我们的应用程序(运行在主机上)中的SDK试图直接连接到服务A.然后,因为我已经暴露了服务A不同的端口(因为服务B暴露在8080上,我使用8081服务A),但是主机也无法parsingservice-b-container-name

我可以通过交换暴露的端口并将service-b-container-name到我的主机的hosts文件来parsing为127.0.0.1,但是需要这样做似乎确实是错误的。

有什么我可以做的呢,还是这个服务是错误的返回到另一个服务的URL?

我猜SDK从服务A接收URL到http://localhost:8080/...服务B,因为当服务B被询问资源的URL时,它给这个IP:端口给客户端(服务A ,在这种情况下),因为该服务是真正服务于此URL(容器内)的资源。

如果你想改变这个行为,所以SDK可以通过端口8081访问服务B,你应该改变容器内部的服务B在哪个端口上。 因此,当服务B被请求资源时,它将回答它的资源在端口8081上的某个URL上。

关于主机无法parsingservice-b-container-name ,唯一可以通过这个名称到达服务B的服务是与服务B相同的dockernetworking上的服务。主机可以通过绑定端口到达docker服务和容器。

希望它有帮助;)