请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

桥接和host的问题

我遇到了一个现场的问题。
我在一个服务器上部署了一个docker  监听了一个端口,通过桥接的方式,把端口映射到宿主机的80端口。
然后在我办公室的机器去telnet这个端口,不通。
但是如果docker以host的模式启动,就能访问通,请问什么原因会导致这个问题呢?

正在回答

2回答

这种是很常见的网络问题。

  1. 先确保你的80在服务器本地是可以访问的,也就是127.0.0.1:80

  2. 检查服务器防火墙

  3. 检查你办公室机器到服务器之间的网络,一般是ping和trace route,看看中间是否有其他的防火墙设备等

1 回复 有任何疑惑可以回复我~
  • 提问者 code_bean #1
    老师本地(127.0.0.1:80)是可以访问的,而且如果以host模式启动,其他电脑也是可以访问的,防火墙是有开通的。
    用映射的方式本地也能访问,但是其他电脑就访问不通了
    回复 有任何疑惑可以回复我~ 2020-12-04 06:42:39
  • 提问者 code_bean #2
    感觉和iptables有关,但是不知道怎么弄
    回复 有任何疑惑可以回复我~ 2020-12-04 12:27:32
  • 麦兜搞IT 回复 提问者 code_bean #3
    那就查下iptables 吧,网上资料还是很多的 ,比如可以先强制把iptables关了,如果问题解决,那就定位到iptables,可以再研究下iptable的规则,开开iptables,并且允许80端口 
     https://www.jianshu.com/p/f7954a1f7bc9
    回复 有任何疑惑可以回复我~ 2020-12-04 17:23:14
麦兜搞IT 2020-12-04 21:23:25

关于docker bridge DNAT的解释,比如我把nginx的80映射到本地的8888

https://img1.sycdn.imooc.com//szimg/5fca37c209ba45b913221170.jpg

本地访问127.0.0.1的8888端口之所以能访问到nginx的80,是因为下面的这条DNAT转发,其中172.17.0.2就是nginx这个container的地址

https://img1.sycdn.imooc.com//szimg/5fca382f0982903e16120974.jpg

1 回复 有任何疑惑可以回复我~
  • 提问者 code_bean #1
    iptables --list -t nat  回头试试,谢谢老师~~~
    回复 有任何疑惑可以回复我~ 2020-12-04 21:29:29
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信