Docker 的两个 Container,无法通过 [主机 ip:port] 互相 curl

272 天前
 KratosOmega

我的 Docker 有两个运行中的 Container 容器:

  1. Jenkins:
    • ip:192.168.0.220:10240
    • 名称:myjenkins
  2. Gitlab:
    • ip:192.168.0.220:10082
    • 名称:mygitlab

(主机 ip 为:192.168.0.220)

经过一次 [公司的网络改造] 后,发现这两个容器无法通过 [主机 ip:port ] 的方式 curl ,但是可以 ping 得通。以下为一些表现,求大家帮忙找找问题。(注:网络改造前,完全是可以通过 [主机 ip:port ] 互相访问的)。

在 jenkins 容器上:

  1. ping gitlab ip: ping 192.168.0.220:10082。没有问题。
  2. curl gitlab ip: curl 192.168.0.220:10082。一直没反应。
  3. curl gitlab 容器名称+port:curl http://mygitlab:3000。没有问题。(由于 gitlab 与 Jenkins 容器处于同一个 bridge network 当中,所以可以通过容器名称访问。其中 3000 为 gitlab 自身的端口号)

在主机上:

  1. ping gitlab ip: ping 192.168.0.220:10082。没有问题。
  2. curl gitlab ip: curl 192.168.0.220:10082。没有问题。

麻烦大家帮忙看看,为什么这两个容器没法通过 [主机 ip:port ] 互相 curl ?

3326 次点击
所在节点    程序员
30 条回复
burby
271 天前
你先
telnet 192.168.0.220 10240

telnet 192.168.0.220 10082

看看是否能够正常连上吧...
zx900930
271 天前
创建一个 network 并划好网段
把这两个容器用这个 external 的 network 连起来并且固定 ip ,用 ip 通信就行了。

每当看到这个感觉还是 k8s 的 calico+coredns 舒服
klo424
271 天前
这办法太多了。

1. 容器间直接用容器名 myjenkins 、mygitlab 就能互相访问了。
2. 容器内部也是有内部 ip 的,你可以先 docker network create [网络名],在 docker run --network [网络名]的时候指定这个网络,这样两个容器就在一个内部的局域网了,通过 docker inspect [容器 ID]可以查看具体的内部 ip 地址,同时端口也要用内部端口。
3. 同 2 ,它其实也是一个外部网络。
cat1879
271 天前
你这个容器网络用的是 HOST 模式? 那两容器间用 127.0.0.1+端口方式试下
ns09005264
271 天前
先用 docker0 这个虚拟网卡的 ip 试试连通性吧,也就是 172.0.0.0/24 这个网段的 ip ,这个网段不用走路由器。
helleon
271 天前
两个 bridge 模式的内网 IP ,就是 172 的那个,能互通不?
hqt1021
270 天前
你应该使用 docker 内网 IP ,172 那个
可以 ping 通 192.168.0.200 并不代表路由到了另一个 docker 容器,这应该是到宿主机是通的
你映射了 port ,
hqt1021
270 天前
@hqt1021 打快了没打完,
你映射了 port ,或者使用 host 模式,才能够通过 192.168.0.200:对应端口访问容器
否则只能通过内网 IP
可以通过 docker network 查看
iblessyou
270 天前
用内部端口
KratosOmega
269 天前
@hqt1021 #28 感谢,内网和 host 模式都不满足我们的需求,我还是想使用 [主机 host:port] 的模式。
已经确认过了,10082 是我映射后的 Port ,没有问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1026187

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX