问题描述:创建docker容器的时候,做了端口映射到宿主机, 防火墙已关闭, 但是外部始终无法访问宿主机端口。
原因分析:
这种情况基本就是因为宿主机没有开启ip转发功能,从而导致外部网络访问宿主机对应端口是没能转发到 Docker Container 所对应的端口上。
解决办法:
Linux 发行版默认情况下是不开启 ip 转发功能的。这是一个好的做法,因为大多数人是用不到 ip 转发的,但是如果架设一个 Linux 路由或者VPN服务我们就需要开启该服务了。
在 Linux 中开启 ip 转发的内核参数为:net.ipv4.ip_forward,查看是否开启 ip转发:
- # cat /proc/sys/net/ipv4/ip_forward // 0:未开启,1:已开启
- ==============================
- 打开ip转发功能, 下面两种方法都是临时打开ip转发功能!
- # echo 1 > /proc/sys/net/ipv4/ip_forward
- # sysctl -w net.ipv4.ip_forward=1
- ==============================
- 永久生效的ip转发
- # vim /etc/sysctl.conf
- net.ipv4.ip_forward = 1
- # sysctl -p /etc/sysctl.conf // 立即生效
Linux 系统中也可以通过重启网卡来立即生效 (修改sysctl.conf文件后的生效)
- # service network restart //CentOS 6
- # systemctl restart network //CentOS 7
以上便是本次Docker 端口映射到宿主机后, 外部无法访问对应宿主机端口的解决方法。如遇其他情况欢迎在文章下方留言。接下来波波为朋友们分享Docker端口映射的常用方法汇总。