簡體   English   中英

從一個 Docker 容器內部,如何連接到同一 Docker 主機上另一個 Docker 容器的端口?

[英]From inside one Docker container, how to connect to the port of another Docker container on the same Docker host?

在 Ubuntu 20.04 上運行新的 Docker 20.10.1。 此版本包括對 Linux 上 dockerd 中的 host.docker.internal的支持

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

嘗試在同一網絡上的所有容器或 map 在一個容器上的兩個網絡上運行,例如在具有 network1、network2 的 1 個容器上運行,為什么您會遇到此問題,因為您為每個容器使用不同的私有橋接網絡。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM