Windows中无法访问Docker中Nginx的解决方案

(1)执行

 docker run -d -p 8080:80 hub.c.163.com/library/nginx

运行Nginx容器
解释:-d表示后台运行,-p为端口设置,8080为本机端口,80为Nginx容器开放的端口,hub.c.163.com/library/nginx为容器名。
容器成功启动


(2)执行

docker ps

查看容器运行的详细情况

可以发现,本机(windows)中的8080端口已经可以映射到虚拟机中的80端口


(3)测试虚拟机中是否可以正常访问localhost:80端口

执行

docker exec -it bash

进入虚拟机中。

接着执行

curl http://localhost:80

如果出现 curl command not found 的情况

请先为虚拟机安装curl服务

先执行
apt-get update
然后执行
apt-get install curl

接着可以查看虚拟机中80端口的html源代码

可以发现,虚拟机中已经可以正常访问80端口了。


(4)测试Windows端口是否映射成功

在Windows浏览器中输入localhost:8080后,出现访问失败的情况。

原因:

docker是运行在linux虚拟机上的,我们在Windows系统中运行docker,实际上是先在Windows下先安装了一个Linux环境,然后在这个环境中运行的docker。所以,访问服务中使用的localhost指的是这个Linux环境的地址,而不是我们的Windows。

解决方案:

查询虚拟机的地址

执行以下命令

docker-machine ip defalut

则使用该地址的8080端口进行访问

访问结果:

可以看到访问成功了。