版权声明:版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/lililuni/article/details/83269793
完整课程请点击: Docker入门课程
上一节: Docker学习(5)-docker运行nginx镜像
在上一节中,已经成功在docker运行nginx镜像以及进入进入容器内部,本节讲解 Docker网络以及 访问已运行的Nginx。
1:Docker网络
1 网络类型(共4种)
- Bridge1(默认)
bridge模式是Docker默认的网络设置,此模式会为每一个容器 分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上。 - Host
不会创建独立的network namespace。Docker容器中的进程处于宿主机的网络环境中,相当于Docker容器和宿主机共同用一个network namespace,使用宿主机的网卡、IP和端口等信息。
但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。 - None
没有网络,Docker不会和外界进行通讯。Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。 - Container2
Container模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。 - 端口映射
使容器的端口在主机上访问到,采用端口映射,Docker可以将容器里面的端口与主机的端口进行映射,这样就可以通过访问主机端口去访问容器端口。
一张图解释Docker的网络模式3
- Host模式:容器直接连接主机的网卡eth0,两者使用同一网卡,看到的网络环境一样。
- Bridge模式:首先创建一个docker0网桥,这个网桥和主机的eth0网卡相连;在启动容器时,容器这边则会产生一个虚拟网卡,也和网桥相连。这种模式下,容器会有自己独立的IP和端口。
- 其他两种模式请见链接docker理论
2:访问已运行的Nginx
- QuickStrat 终端执行
docker ps
,检测Nginx运行状态,如下图
- 执行
docker stop 23f
停止Nginx运行,23f
为容器id。
docker stop 容器ID或容器名
参数 -t:关闭容器的限时,如果超时未能关闭则用kill强制关闭,默认值10s,这个时间用于容器的自己保存状态
-
执行
docker run -d -p 8080:80 hub.c.163.com/library/nginx
运行Nginx镜像,如下图
解释:-d
表示后台运行,-p
为端口设置,8080
为本机端口,80
为Nginx容器开放的端口,hub.c.163.com/library/nginx
为容器名。
另记:上面语句中的-p
替代为-P
,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口4。然后使用docker ps 可以查看映射的端口号。如下图,表示本机端口32769映射到容器端口80。
-
我这里使用的本机端口,完成上面步骤后,浏览器访问 localhost:32768,会发现访问不到,原因请见 :Docker问题4-Window下无法对docker容器进行端口映射
-
浏览器正确输入
192.168.99.100:32768
,得下图,表示访问成功。其中,192.168.99.100
为本机Linux虚拟机的IP,32768
为上图圈出的本机端口。
至此,本节结束,下节开始讲解如何制作自己的镜像以及运行自己的容器
下一节:Docker学习(7)-创建镜像