首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从另一个主机Y(而不是从主机Y中的容器)与主机X中运行的Docker容器进行通信

如何从另一个主机Y(而不是从主机Y中的容器)与主机X中运行的Docker容器进行通信
EN

Stack Overflow用户
提问于 2020-08-27 22:56:29
回答 2查看 56关注 0票数 1

我正在尝试Docker网络,我已经设置了一个场景,如下所示,

在通过网络(host-X IP: 60.0.0.28)连接的主机-X中安装docker,并运行ubuntu-OS的基本docker容器(Docker container仅连接到默认docker网桥网络,即172.17.0.0/16和172.17.0.2是容器IP)。现在尝试从另一个主机-Y与同一网络(主机-Y IP: 60.0.0.40)中的运行容器进行通信,但该网络中没有安装docker。

我在host-Y中添加了基本路由,如"ip route add 172.17.0.0/16 via 60.0.0.28 dev ens3“。

从容器我可以ping通Host-Y &在相反的情况下,我只能从Host-Y ping docker网关"172.17.0.1“,但不能到达容器。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-27 23:33:30

在很多情况下,Docker内部的IP地址都没有用处;从不同的主机进行呼叫就是其中之一。作为实现细节,您应该完全忽略这些。

如果您将Docker排除在外,并直接在主机上运行进程,这应该很简单:在主机Y上,您可以在给定主机X的DNS名称和运行服务器的端口的情况下调用主机X上的进程。

代码语言:javascript
运行
复制
hostY$ curl http://hostX:12345/

如果进程实际上是在Docker容器中运行的,则需要确保已使用已发布的端口启动容器。这不一定需要与进程正在侦听的端口相匹配。

代码语言:javascript
运行
复制
hostX$ docker run -p 12345:12345 imagename

完成此操作后,可以通过主机的DNS名称或IP地址以及发布的端口访问该进程,方法与非容器服务器相同。

在正常情况下,您不需要考虑Docker内部IP地址;您不需要像所显示的那样手动执行ip路由设置命令,也不应该使用docker inspectdocker run --ip来查找或设置此详细信息。

票数 0
EN

Stack Overflow用户

发布于 2020-08-27 23:20:03

假设您想要在主机X上启动Dockerized nginx。

你会运行:

代码语言:javascript
运行
复制
docker run --detach -p 8080:80 nginx

然后,您可以使用http://60.0.0.28:8080访问您的nginx实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63618760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档