docker端口映射不生效的问题解决
问题
使用docker run -p 88848:8848后,显示容器启动正常,并且使用docker logs –f
xxx能够看到容器可以正常启用,docker ps 可以看到容器启动成功,并且端口已经映射,但是在浏览器访问相关地址,就是无法打开
问题检查:
- 杀了容器,重启容器-》观察是否是容器启动异常
- lsof -i:xxx 或者 netstat –nltp|grep xxx 来查看是否有端口冲突 或者查看对应端口是否有进程
- 查看主机是否开启防火墙,并检查防火墙是否将对应端口号放行(如果是腾讯云之类的,还要查看云主机是否有安全策略给阻挡了)
- 容器和主机是能够相互ping通的,检查是否能够ping通,若ping不同,请检查网络或者重启docker
- 查看主机有iptables规则是否允许相应端口访问
- ifconfig docker0 或者ip addr show docker0 查docker0的ip地址 是否和主机ip地址是否有冲突
问题解决:
-
我检测到第六个先贴一个别人类似的解决方案:
-
然后说下我问题 docker0 没有ip地址
-
排查问题
-
解决方案
cd /etc/NetworkManager
对原来的文件进行备份
cp NetworkManager.conf NetworkManager.confbak
vim NetworkManager.conf
先找到[main]部分(如果没有,可以添加)。在这个部分下面,添加以下行:
[keyfile]
unmanaged-devices=interface-name:docker0
注意:这里的 [keyfile] 是一个新的部分,用于定义 keyfile 类型的配置。unmanaged-devices 是这个部分的一个键,其值指定了要被 NetworkManager 忽略的设备。
保存关闭
然后
sudo systemctl restart NetworkManager
sudo systemctl restart docker
问题解决 docker0 已经有ip并且端口映射 ok