Docker 容器未连接到服务器上的另一个 docker 容器

Docker container doesn't connect to another docker container on server

我正在使用 Digital Ocean docker droplet 并有 3 个 docker 容器:1 个用于前端,1 个用于后端,1 个用于具有不同依赖项的其他工具,让我们调用它后端 2.

前端调用后端1,后端1又调用后端2,后端2容器在50051端口暴露了一个gRPC服务,在本地,通过运行 以下命令,我能够将 docker 服务识别为 运行 IP 127.17.0.1:

docker network inspect bridge --format='{{json .IPAM.Config}}'

因此,我知道我的 gRPC 服务器可以从服务器中的以下 url 127.17.0.1:50051 访问。

不幸的是,当 运行 来自 docker droplet 时,gRPC 服务器拒绝连接,而当 运行 在本地时它工作得很好。

知道有什么不同吗?

使用以下命令尝试 docker run

docker run -d -p {server ip}:12345 {back-end 2 image}

它会将 IP 端口暴露给 docker 容器,并且可以从其他服务器访问。
注意:如果防火墙阻止访问,还要检查防火墙规则。

您通常应该设置一个 Docker 专用网络,以便使用容器名称在容器之间进行通信;参见 例如 。如果您删除并重新创建容器并且无法从主机外访问,Docker-内部 IP 地址可能会发生变化,并且尝试找到它们通常不是最佳做法。

172.17.0.0/16 是 Docker-内部 IP 网络的典型默认值(127.0.0.0/8 是保留的 IPv4 环回网络),您可能输入了错误的地址来自 docker network inspect.

您可以 运行 docker 绑定到 ip 和端口,如 Aakash 所示。请限制对这个特定 IP 和端口的访问,只能从其他 docker IP 和端口访问 - 这将有助于 运行 docker 私有并且不允许其他(甚至其他) docker/instances 在您的网络中)。