从一个 Docker 容器内部,如何连接到同一 Docker 主机上的另一个 Docker 容器的端口?

时间:2020-12-18 19:31:50

标签: docker docker-networking

在 Ubuntu 20.04 上运行新的 Docker 20.10.1。此版本包括 support for host.docker.internal in dockerd on Linux

root@docker04:~# docker --version
Docker version 20.10.1, build 831ebea

我在使用 SSL 证书的容器中运行了一系列服务,我想使用 Telegraf 检查证书是否过期(稍后发送到 Grafana 仪表板)。

所有具有 Web 界面和 Telegraf 的服务都运行在同一个 Docker 主机上。所有的服务都在它们自己的桥接网络中。我想在端口 9000 上 Telegraf Portainer(见下文)。

----------VM running docker (10.10.1.32)----------
|                                                |
|    --------------------                        |
|    | Gitea            |                        |     
|    | Ports: 3000:3000 |                        |
|    | Network: gitea   |                        |
|    --------------------                        |
|                                                |
|    ----------------------                      |
|    | Portainer          |                      |
|    | Ports: 9000:9000   |<--|                  |
|    | Network: portainer |   |                  |
|    ----------------------   |                  |
|                             |                  |
|    ---------------------    |                  |
|    | Telegraf          |    |                  |
|    | Network: telegraf |-->-                   |
|    |                   |                       |
|    ---------------------                       |
|                                                |
--------------------------------------------------

我认为有了对 host.docker.internal 的新支持,我将能够从一个容器连接到另一个容器,但这似乎不起作用。 Ping 正常,但我无法连接到端口 9000。

root@docker04:~# docker run -it --add-host host.docker.internal:host-gateway alpine /bin/sh
/ # ping host.docker.internal
PING host.docker.internal (172.17.0.1): 56 data bytes
64 bytes from 172.17.0.1: seq=0 ttl=64 time=0.102 ms
64 bytes from 172.17.0.1: seq=1 ttl=64 time=0.100 ms
^C
/ # telnet host.docker.internal 9000
telnet: can't connect to remote host (172.17.0.1): Operation timed out

telnet 的最后一个命令挂起并最终断开连接。我在这里错过了什么吗?这只适用于主机网络吗?我显然在这里误解了 Docker 网络...

如果我也尝试使用主机的 IP,它也会失败。

/ # telnet 10.10.1.32 9000
telnet: can't connect to remote host (10.10.1.32): Operation timed out

1 个答案:

答案 0 :(得分:0)

尝试在同一网络上的所有容器上运行或将两个网络映射到一个容器上,例如在具有 network1、network2 的 1 个容器上,为什么您会面临此问题,因为您为每个容器使用不同的专用网桥网络。

相关问题