我正在使用一个数字海洋对接液滴,有3个对接容器:一个用于前端,一个用于后端,一个用于其他具有不同依赖关系的工具,让我们称之为后端2。
前端调用后端1,后端1依次调用后端2,后端2容器通过端口50051公开gRPC服务。在本地,通过运行以下命令,我能够识别要使用IP 127.17.0.1运行的docker服务:
docker network inspect bridge --format='{{json .IPAM.Config}}'因此,我理解我的gRPC服务器可以从服务器内的以下url 127.17.0.1:50051访问。
不幸的是,gRPC服务器在从对接器液滴运行时拒绝连接,而当它在本地运行时工作非常正常。
知道有什么不同吗?
发布于 2018-07-04 15:25:33
您通常应该设置一个Docker专用网络,以便使用容器名称在容器之间进行通信;例如,请参见How to communicate between Docker containers via "hostname"。如果删除和重新创建容器,并且无法从外部主机访问,则Docker-内部IP地址可能会更改,并且尝试查找它们通常不是最佳做法。
172.17.0.0/16是Docker内部IP网络的典型默认设置(127.0.0.0/8是保留的IPv4环回网络),看起来您可能已经键入了从docker network inspect获得的地址。
发布于 2018-07-04 05:02:09
使用以下命令尝试docker run:
docker run -d -p {server ip}:12345 {back-end 2 image}
它将向码头容器公开IP端口,并可从其他服务器访问。
注意:如果防火墙阻塞访问,也要检查防火墙规则。
发布于 2018-07-07 13:16:13
您可以运行对接绑定到ip和端口,如Aakash所示。请限制对此特定IP和端口的访问,仅从其他端口IP和端口访问-这将有助于运行码头私有,并不允许其他(甚至网络中的其他端口/实例)。
https://stackoverflow.com/questions/51161576
复制相似问题