记一次docker-compose端口映射后localhost通,但内网不通的问题解决方案。
问题主机参数自建的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/Linuxdocker版本:1.13 ~ 1.19 均有发
·
问题主机参数
- 自建的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上。那么让防火墙信任这个新建的网络即可。
参考文档
总结
只能说我基础不足,恶补了防火墙相关知识。也算有些收获。
更多推荐
已为社区贡献2条内容
所有评论(0)