如何从另一个主机 Y(而不是主机 Y 中的容器)与主机 X 中的 运行 Docker 容器通信
How to communicate with a running Docker container in a Host X from another Host Y(not from a container in Host Y)
我正在试验 Docker-网络,我设置了如下场景,
已安装 docker 通过网络连接的主机 X(主机 X IP:60.0.0.28)和 运行 ubuntu 的基本 docker 容器-OS(Docker 容器仅连接到默认 docker 桥接网络,即 172.17.0.0/16 和 172.17.0.2 是容器 IP)。现在尝试从同一网络(主机 Y IP:60.0.0.40)中未安装 docker 的另一个主机 Y 与 运行ning 容器进行通信。
我在 host-Y 中添加了基本路由,例如“ip route add 172.17.0.0/16 via 60.0.0.28 dev ens3”。
从容器我能够 ping 主机 Y & 在相反的情况下,我只能从主机 Y ping docker 网关“172.17.0.1”但无法到达容器。
假设您想在主机 X 上启动 Dockerized nginx。
你会 运行:
docker run --detach -p 8080:80 nginx
然后您可以使用 http://60.0.0.28:8080
.
访问您的 nginx 实例
在很多情况下 Docker-internal IP 地址都没有用;来自不同主机的呼叫就是其中之一。您应该完全忽略这些作为实现细节。
如果你把 Docker 去掉,运行 进程直接在主机上,这应该很简单:从主机 Y,你可以调用主机 X 上的进程给它服务器 运行 正在使用的 DNS 名称和端口。
hostY$ curl http://hostX:12345/
如果该进程实际上 运行 正在 Docker 容器中,您需要确保已使用已发布的端口启动容器。这不一定需要匹配进程正在侦听的端口。
hostX$ docker run -p 12345:12345 imagename
完成此操作后,可以通过主机的 DNS 名称或 IP 地址以及发布的端口访问该进程,与使用 non-container 服务器的方式相同。
在正常情况下,您不需要考虑 Docker-internal 个 IP 地址;您不需要像您显示的那样手动 ip
route-setup 命令,并且您不应该 docker inspect
或 docker run --ip
来查找或设置此详细信息。
我正在试验 Docker-网络,我设置了如下场景,
已安装 docker 通过网络连接的主机 X(主机 X IP:60.0.0.28)和 运行 ubuntu 的基本 docker 容器-OS(Docker 容器仅连接到默认 docker 桥接网络,即 172.17.0.0/16 和 172.17.0.2 是容器 IP)。现在尝试从同一网络(主机 Y IP:60.0.0.40)中未安装 docker 的另一个主机 Y 与 运行ning 容器进行通信。
我在 host-Y 中添加了基本路由,例如“ip route add 172.17.0.0/16 via 60.0.0.28 dev ens3”。
从容器我能够 ping 主机 Y & 在相反的情况下,我只能从主机 Y ping docker 网关“172.17.0.1”但无法到达容器。
假设您想在主机 X 上启动 Dockerized nginx。
你会 运行:
docker run --detach -p 8080:80 nginx
然后您可以使用 http://60.0.0.28:8080
.
在很多情况下 Docker-internal IP 地址都没有用;来自不同主机的呼叫就是其中之一。您应该完全忽略这些作为实现细节。
如果你把 Docker 去掉,运行 进程直接在主机上,这应该很简单:从主机 Y,你可以调用主机 X 上的进程给它服务器 运行 正在使用的 DNS 名称和端口。
hostY$ curl http://hostX:12345/
如果该进程实际上 运行 正在 Docker 容器中,您需要确保已使用已发布的端口启动容器。这不一定需要匹配进程正在侦听的端口。
hostX$ docker run -p 12345:12345 imagename
完成此操作后,可以通过主机的 DNS 名称或 IP 地址以及发布的端口访问该进程,与使用 non-container 服务器的方式相同。
在正常情况下,您不需要考虑 Docker-internal 个 IP 地址;您不需要像您显示的那样手动 ip
route-setup 命令,并且您不应该 docker inspect
或 docker run --ip
来查找或设置此详细信息。