Docker之网络和Nginx浏览器访问

上一篇我们介绍了如果下载和运行第三方镜像,我们通过Nginx镜像,运行之后,进入容器内部,查看了文件的分布情况,这一篇我们介绍怎么在浏览器中访问docker容器内部的镜像Nginx,在本地浏览器访问就需要设置网络。

Docker 网络模式

Bridge 默认模式,有独立的namespace,会有独立的IP和端口

Host 和主机共同使用一个namespace,不需要分配IP

None  没有网络

net=bridge— 默认选项,用网桥的方式来连接docker容器。

net=hostdocker跳过配置容器的独立网络栈。

net=container:NAME_or_ID— 告诉docker让这个新建的容器使用已有容器的网络配置。

net=none— 告诉docker为新建的容器建立一个网络栈,但不对这个网络栈进行任何配置,所以只能访问本地网络,没有外网。


启动Nginx镜像

启动Nginx之前,我们需要在启动的时候设置好端口,通过端口映射访问服务。Docker默认的网络模式是Bridge模式。

查看运行端口设置

docker run --help

-p 是指定本机端口到容器端口

-P 是随机本机端口到容器端口

Docker之网络和Nginx浏览器访问

重新启动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是指容器的端口

Docker之网络和Nginx浏览器访问

我们先看一下端口的状态

netstat -na|grep 8080

或者通过docker port name 查看端口信息

Docker之网络和Nginx浏览器访问


浏览器访问:

Docker之网络和Nginx浏览器访问

特别注意:本文是在Windows下对docker端口进行映射,但是当你在主机的浏览器中,打开localhost:port无法访问对应的服务。

解决方案

  docker是运行在Linux上的,在Windows中运行docker,实际上还是在Windows下先安装了一个Linux环境,然后在这个系统中运行的docker。也就是说,服务中使用的localhost指的是这个Linux环境的地址,而不是我们的宿主环境Windows。我们可以通过命令:

docker-machine ip default

Docker之网络和Nginx浏览器访问

找到这个Linuxip地址,一般情况下这个地址是192.168.99.100,然后在Windows的浏览器中,输入这个地址,加上服务的端口即可启用了。

测试一下 随机端口使用方法:

docker run -d -P --net=bridge index.tenxcloud.com/docker_library/nginx

Docker之网络和Nginx浏览器访问

然后浏览器访问:

Docker之网络和Nginx浏览器访问