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端口进行访问
访问结果:
可以看到访问成功了。