Docker驱动原理差异性怎么理解

这篇文章主要介绍“Docker驱动原理差异性怎么理解”,在日常操作中,相信很多人在Docker驱动原理差异性怎么理解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Docker驱动原理差异性怎么理解”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

专注于为中小企业提供成都网站设计、成都网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业潢川免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

容器网络概念

  1. 首先了解下linux的网络构成概念

  • 命名空间: Linux在网络栈中引入网络命名空间,将独立的网络协议栈隔离到不同的命令空间中,彼此间无法通信;Docker利用这一特性,实现不容器间的网络隔离。

  • Veth设备对:实现不同命名空间通信

  • Iptables/Netfilter: Iptables/Netfilter:Netfilter负责在内核中执行各种挂接的规则(过滤、修改、丢弃等),运行在内核模式中;Iptables模式是在用户模式下运行的进程,负责协助维护内核中Netfilter的各种规则表;通过二者的配合来实现整个Linux网络协议栈中灵活的数据包处理机制。

  • 网桥:网桥是一个二层网络设备,通过网桥可以将linux支持的不同的端口连接起来,并实现类似交换机那样的多对多的通信

  • 路由:Linux系统包含一个完整的路由功能,当IP层在处理数据发送或转发的时候,会使用路由表来决定发往哪里。

  1. 运行Docker容器默认使用的是bridge网络,Docker还包含其他网络模型,容器网络模型主要包含了3个概念

  • network: 网络模型

    • 单主机网络模式(none、host、bridge,joined container)

    • 多主机网络模式(overlay、macvlan、flannel)

  • sandbox:沙盒,它定义了容器内的虚拟网卡、DNS和路由表,是network namespace的一种实现,是容器的内部网络栈

  • endpoint:端点,用于连接sandbox和network

  1. 这里我们先介绍下Docker常用的网络模式:

网络模式简介
Host容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
Bridge此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。
none该模式关闭了容器的网络功能,不分配子网跟ip
Container创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。
overlay容器在两个跨主机进行通信的时候,是使用overlay network这个网络模式进行通信
luxurong@hb13520 ~ % docker network ls
NETWORK ID          NAME                  DRIVER              SCOPE
5a9f0bc5a93a        bridge                bridge              local5239b7670d4f        composetest_default   bridge              local0487feea0278        host                  host                localddfec4c499d9        none                  null                local62e4405853d2        testcompose_default   bridge              local
  1. 如何创建并且使用自定义网络驱动?

#创建网络ocker network create --driver bridge my-net#my-net网络docker run --network=my-net ......

网络的创建是非常的简单,至此大家了解了几种常见的网络模型。

详解Docker驱动原理差异性

主机ip:

  1. Host网络

该模式与宿主机在同一个网络中,但没有独立IP地址。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。

Docker驱动原理差异性怎么理解

  1. Container网络

在理解了host模式后,这个模式也就好理解了。这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。kubernetes的pod就是使用的这一模式。

Docker驱动原理差异性怎么理解

5.overlay 网络

使用host也可以实现跨主机进行通信,直接使用这个物理的ip地址就可以进行通信。overlay它会虚拟出一个网络比如10.0.9.3这个ip地址,在这个overlay网络模式里面,有一个类似于服务网关的地址,然后把这个包转发到物理服务器这个地址,最终通过路由和交换,到达另一个服务器的ip地址。 Docker里实现采用会有一个服务发现consul,,会定义一个ip地址池,比如10.0.9.0/24之类的,上面会有容器,容器的ip地址会从上面去获取,获取完了后,会通过eth2进行通信,贼这实现跨主机的东西。

到此,关于“Docker驱动原理差异性怎么理解”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


本文标题:Docker驱动原理差异性怎么理解
本文路径:http://pwwzsj.com/article/jdpjdh.html