问题主机参数
  • 自建的dell服务器,云服务器一般不会出现这种问题。人都给处理好了。
  • centos8、centos7 均有发生。
  • Linux localhost.localdomain 4.18.0-193.el8.x86_64 #1 SMP Fri May 8 10:59:10 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
  • docker版本:1.13 ~ 1.19 均有发生。

均有发生是因为我花了3天时间都一一尝试过了!

问题描述

docker端口映射后发现服务器localhost可以正常访问。但局域网内其他主机无法访问。
然后蛋疼的来了:
执行开放防火墙端口操作如下:

firewall-cmd --zone=public --add-port=8761/tcp --permanent
firewall-cmd --reload

没有任何效果!!真的没有任何效果!


依旧是localhost可以正常访问。但局域网内其他主机无法访问。
说的更详细点:我开放的8761端口,只有在本机访问http://127.0.0.1:8761时正常。其他机器无法通过 ip+端口 访问!!
.
然而此时端口已经通过docker-compose对外开放!!!
docker-compose截取部分配置如下:

 eureka:
    image: eureka:latest
    privileged: true
    ports:
      - "8761:8761"
    networks:
      uk:
        ipv4_address: 192.168.45.3
先说解决方案

原文如下:

Replying to my previous comment. The issue was our docker-compose specified another network ie

networks:
  default:
Therefore all our containers were not on the docker0 bridge but on a randomly generated bridge.

To fix this restructured our docker-compose.yml

networks:
  default:
  driver_opts:
  com.docker.network.bridge.name: "dockernet"
Next ran

firewall-cmd --permanent --zone=trusted --change-interface=dockernet
And worked like a charm

当然执行前先清理环境。

docker-compose stop
docker-compose rm
(如果配置了网络的话)
docker  network list
docker network rm xxx 

解决了。

这是为什么呢??????

我的 docker-compose指定了 另一个网络,所以生成的容器都在这个新建的网络上而不是 docker0上。那么让防火墙信任这个新建的网络即可。

参考文档
总结

只能说我基础不足,恶补了防火墙相关知识。也算有些收获。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐