我正在尝试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“,但不能到达容器。
发布于 2020-08-27 23:33:30
在很多情况下,Docker内部的IP地址都没有用处;从不同的主机进行呼叫就是其中之一。作为实现细节,您应该完全忽略这些。
如果您将Docker排除在外,并直接在主机上运行进程,这应该很简单:在主机Y上,您可以在给定主机X的DNS名称和运行服务器的端口的情况下调用主机X上的进程。
hostY$ curl http://hostX:12345/如果进程实际上是在Docker容器中运行的,则需要确保已使用已发布的端口启动容器。这不一定需要与进程正在侦听的端口相匹配。
hostX$ docker run -p 12345:12345 imagename完成此操作后,可以通过主机的DNS名称或IP地址以及发布的端口访问该进程,方法与非容器服务器相同。
在正常情况下,您不需要考虑Docker内部IP地址;您不需要像所显示的那样手动执行ip路由设置命令,也不应该使用docker inspect或docker run --ip来查找或设置此详细信息。
发布于 2020-08-27 23:20:03
假设您想要在主机X上启动Dockerized nginx。
你会运行:
docker run --detach -p 8080:80 nginx然后,您可以使用http://60.0.0.28:8080访问您的nginx实例。
https://stackoverflow.com/questions/63618760
复制相似问题