Docker学习(6)-Docker网络以及访问已运行的Nginx

文章目录

    • 1:Docker网络
      •   1 网络类型(共4种)
    • 2:访问已运行的Nginx

   完整课程请点击: 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
Docker学习(6)-Docker网络以及访问已运行的Nginx_第1张图片

  • Host模式:容器直接连接主机的网卡eth0,两者使用同一网卡,看到的网络环境一样。
  • Bridge模式:首先创建一个docker0网桥,这个网桥和主机的eth0网卡相连;在启动容器时,容器这边则会产生一个虚拟网卡,也和网桥相连。这种模式下,容器会有自己独立的IP和端口。
  • 其他两种模式请见链接docker理论

2:访问已运行的Nginx

  1. QuickStrat 终端执行docker ps,检测Nginx运行状态,如下图
    在这里插入图片描述
  2. 执行docker stop 23f停止Nginx运行,23f为容器id。

docker stop 容器ID或容器名
参数 -t:关闭容器的限时,如果超时未能关闭则用kill强制关闭,默认值10s,这个时间用于容器的自己保存状态

  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为容器名。

    在这里插入图片描述
    另记:上面语句中的-p替代为-P,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口4。然后使用docker ps 可以查看映射的端口号。如下图,表示本机端口32769映射到容器端口80。
    在这里插入图片描述

  2. 我这里使用的本机端口,完成上面步骤后,浏览器访问 localhost:32768,会发现访问不到,原因请见 :Docker问题4-Window下无法对docker容器进行端口映射

  3. 浏览器正确输入192.168.99.100:32768 ,得下图,表示访问成功。其中,192.168.99.100为本机Linux虚拟机的IP,32768为上图圈出的本机端口。
    Docker学习(6)-Docker网络以及访问已运行的Nginx_第2张图片


至此,本节结束,下节开始讲解如何制作自己的镜像以及运行自己的容器
下一节:Docker学习(7)-创建镜像


  1. “深入浅出”来解读Docker网络核心原理 ↩︎

  2. Docker学习笔记 — Docker网络总结 ↩︎

  3. docker理论 ↩︎

  4. 外部访问docker容器(docker run -p/-P 指令) ↩︎

你可能感兴趣的:(Docker)