Docker之网络和Nginx浏览器访问
上一篇我们介绍了如果下载和运行第三方镜像,我们通过Nginx镜像,运行之后,进入容器内部,查看了文件的分布情况,这一篇我们介绍怎么在浏览器中访问docker容器内部的镜像Nginx,在本地浏览器访问就需要设置网络。Docker 网络模式Bridge 默认模式,有独立的namespace,会有独立的IP和端口Host 和主机共同使用一个namespace,不需要分配IPNone 没有网络–net=
上一篇我们介绍了如果下载和运行第三方镜像,我们通过Nginx镜像,运行之后,进入容器内部,查看了文件的分布情况,这一篇我们介绍怎么在浏览器中访问docker容器内部的镜像Nginx,在本地浏览器访问就需要设置网络。
Docker 网络模式
Bridge 默认模式,有独立的namespace,会有独立的IP和端口
Host 和主机共同使用一个namespace,不需要分配IP
None 没有网络
–net=bridge— 默认选项,用网桥的方式来连接docker容器。
–net=host— docker跳过配置容器的独立网络栈。
–net=container:NAME_or_ID— 告诉docker让这个新建的容器使用已有容器的网络配置。
–net=none— 告诉docker为新建的容器建立一个网络栈,但不对这个网络栈进行任何配置,所以只能访问本地网络,没有外网。
启动Nginx镜像
启动Nginx之前,我们需要在启动的时候设置好端口,通过端口映射访问服务。Docker默认的网络模式是Bridge模式。
查看运行端口设置
docker run --help
-p 是指定本机端口到容器端口
-P 是随机本机端口到容器端口
重新启动nginx,配置端口映射
docker run -d -p 8080:80 index.tenxcloud.com/docker_library/nginx
指定网络模式:--net=bridge 默认模式
docker run -d -p 8080:80 --net=bridge index.tenxcloud.com/docker_library/nginx
其中8080是指主机的端口,而80是指容器的端口
我们先看一下端口的状态
netstat -na|grep 8080
或者通过docker port name 查看端口信息
浏览器访问:
特别注意:本文是在Windows下对docker端口进行映射,但是当你在主机的浏览器中,打开localhost:port无法访问对应的服务。
解决方案
docker是运行在Linux上的,在Windows中运行docker,实际上还是在Windows下先安装了一个Linux环境,然后在这个系统中运行的docker。也就是说,服务中使用的localhost指的是这个Linux环境的地址,而不是我们的宿主环境Windows。我们可以通过命令:
docker-machine ip default
找到这个Linux的ip地址,一般情况下这个地址是192.168.99.100,然后在Windows的浏览器中,输入这个地址,加上服务的端口即可启用了。
测试一下 随机端口使用方法:
docker run -d -P --net=bridge index.tenxcloud.com/docker_library/nginx
然后浏览器访问:
更多推荐
所有评论(0)