如何从一个 docker 图像连接到另一个 docker 图像的端口?

How to connect from one docker image to another docker image's port?

我 运行 Docker version 19.03.4 Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-140-generic x86_64)。在里面我开始两张图片:

图片 1

我公开了以下端口:0.0.0.0:3333->3000/tcp(那是 Grafana)。

图 2

我公开了以下端口:0.0.0.0:8812->8812/tcp, 0.0.0.0:9000->9000/tcp, 0.0.0.0:9009->9009/tcp(即 QuestDB)。

我去 localhost:3333 (Grafana) 并尝试连接到 QuestDB (localhost:8812),但它不起作用。

当我回到我的机器终端并输入 telnet localhost 8812 时,一切正常。

你能帮我找出为什么通过一个docker图像我似乎无法找到另一个端口的原因吗?

FWIW:我还尝试创建一个 docker 网络,我将两个图像都添加到该网络,但这也不起作用。

当您创建 user-defined bridge network 并将每个容器连接到它时,由于名为 automatic service discovery.

的服务,它们可以使用容器名称进行寻址

因此,如果您有两个名为 grafanaquestdb 的容器,您可以从 grafana 内部使用其名称访问 questdb

# From grafana
ping -c 2 questdb

此外,这个话题在这个 thread 中有很大的讨论。