docker - 从一个 Docker 容器内部,如何连接到同一 Docker 主机上另一个 Docker 容器的端口?
问题描述
在 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
解决方案
尝试在同一网络上的所有容器上运行或在一个容器上映射两个网络,例如在具有 network1、network2 的 1 个容器上,为什么您会遇到此问题,因为您为每个容器使用不同的私有桥接网络。
推荐阅读
- c# - 如何在 ComboBox 中添加自定义索引
- javascript - google drive api - 列出应用程序中与我共享的文件,仅对应用程序创建的文件具有读写权限(权限 auth/drive.file)
- python - attrs.asdict() 中的列表类型缺少 dunders?
- ios - 访问谷歌地图中的当前位置
- python - 有没有办法将一列重塑为一行,但该行是由 ID 列组成的
- c# - 使用 Azure Active Directory 身份验证而不重定向到 Microsoft
- python - 如何导入 Python lambda 层?
- amazon-web-services - 如果未运行最新映像,则 AWS ECS 重新启动服务
- c++ - 由于 libkern.h 中的语义问题,Xcode 构建失败
- sql - 根据列值将类添加到 FOR XML PATH