宿主机无法访问docker容器中nginx服务怎么办
1.问题描述
在虚拟机中,部署好docker服务,并且安装了nginx。启动之后,宿主机无发访问容器中的nginx服务,一直转圈圈,但是虚拟机中使用 curl [虚拟机ip] 就可以访问到nginx的启动成功页面。


2.问题解决
2.1查看端口号是否映射正确
这里Nginx是主机80端口映射到docker中的80端口

2.2检查防火墙状态
1 2 3 4 5 6 | [root@localhost ~]
[root@localhost ~]
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded ( /usr/lib/systemd/system/firewalld .service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man :firewalld(1)
|
2.3需要进入docker下正在运行中的nginx容器内部启动nginx
1 2 3 4 | [root@localhost ~]
root@6fe8ede3eab4:/
root@6fe8ede3eab4:/
nginx is running.
|
2.4访问成功

2.5如果还没有访问成功,有可能你在内核优化的时候 禁止ip转发功能了
1 2 | [root@localhost ~]
net.ipv4.conf.all.forwarding = 1
|
这个允许ip转发只是暂时的,重启虚拟机后会失效
永久修改方法
1 2 3 4 5 6 7 8 | [root@localhost ~]
找到 net.ipv4.conf.all.forwarding = 0 把0修改成1即可
vim模式下 : /net .ipv4.ip_forward
[root@localhost ~]
-----
[root@localhost ~]
|
之后你会神奇的发现宿主机可以访问了!
