在虚拟机(Linux)中Docker中部署Nginx成功,但是在宿主机无法访问Nginx站点?

发布时间 2023-11-03 12:57:42作者: DawnTraveler

1.问题

本文是基于黑马程序员Docker基础--常见命令一课中部署Nginx时遇到的问题作出解答。

在虚拟机(Linux)中Docker中部署Nginx成功,但是在宿主机无法访问Nginx站点
如图,Nginx服务已经启动成功

但是我们在宿主机的浏览器试图访问的时候却总是报错:
image

2.解决思路

2.1 查看端口号是否映射正确

这里Nginx是主机80端口映射到docker中的80端口,经检查并没有错误

2.2 检查防火墙状态

systemctl status firewalld
参考下图,此时Active一栏,已经是关闭状态,不会影响我们的步骤,跳过
image

2.3 在Linux中测试直连Nginx

1.先查看Nginx于docker中的ip地址

docker inspect nginx
image
经查看后得知是172.17.0.1
image

2.尝试直连

curl 172.17.0.1
发现返回的html代码正是Nginx的欢迎界面,说明这里的Nginx服务是没有问题的
image

2.4 正在运行的nginx容器需要进入内部启动nginx

经查阅博客:虚拟机CENTOS中DOCKER启动容器NGINX后,网页打不开,无法访问80端口,或被拒
这里正在运行的nginx容器需要进入内部启动nginx后才能使用

1.先通过Docker进入nginx容器内部

docker exec -it nginx bash

image

2.启动服务

root@409d25d8add2:/# service nginx start
image
我这里并没有显示具体开启过程,但是博客中提供的过程大概如下:

[root@localhost ~]# docker exec -it nginx(此处是你的容器name) bash #进入容器内部

root@c431554b3059:/# service nginx start #开启nginx

2022/05/09 03:35:02 [notice] 21#21: using the "epoll" event method

2022/05/09 03:35:02 [notice] 21#21: nginx/1.21.6

2022/05/09 03:35:02 [notice] 21#21: built by gcc 10.2.1 20210110 (Debian 10.2.1-6)

2022/05/09 03:35:02 [notice] 21#21: OS: Linux 3.10.0-1160.62.1.el7.x86_64

2022/05/09 03:35:02 [notice] 21#21: getrlimit(RLIMIT_NOFILE): 1048576:1048576

root@c431554b3059:/# 2022/05/09 03:35:02 [notice] 22#22: start worker processes

2022/05/09 03:35:02 [notice] 22#22: start worker process 23

root@c431554b3059:/# exit #退出容器

3.访问成功

image