这篇文章主要介绍“Docker驱动原理差异性怎么理解”,在日常操作中,相信很多人在Docker驱动原理差异性怎么理解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Docker驱动原理差异性怎么理解”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
首先了解下linux的网络构成概念
命名空间
: Linux在网络栈中引入网络命名空间,将独立的网络协议栈隔离到不同的命令空间中,彼此间无法通信;Docker利用这一特性,实现不容器间的网络隔离。
Veth设备对
:实现不同命名空间通信
Iptables/Netfilter
: Iptables/Netfilter:Netfilter负责在内核中执行各种挂接的规则(过滤、修改、丢弃等),运行在内核模式中;Iptables模式是在用户模式下运行的进程,负责协助维护内核中Netfilter的各种规则表;通过二者的配合来实现整个Linux网络协议栈中灵活的数据包处理机制。
网桥
:网桥是一个二层网络设备,通过网桥可以将linux支持的不同的端口连接起来,并实现类似交换机那样的多对多的通信
路由
:Linux系统包含一个完整的路由功能,当IP层在处理数据发送或转发的时候,会使用路由表来决定发往哪里。
运行Docker容器默认使用的是bridge网络,Docker还包含其他网络模型,容器网络模型主要包含了3个概念
network: 网络模型
单主机网络模式(none、host、bridge,joined container)
多主机网络模式(overlay、macvlan、flannel)
sandbox:沙盒,它定义了容器内的虚拟网卡、DNS和路由表,是network namespace的一种实现,是容器的内部网络栈
endpoint:端点,用于连接sandbox和network
这里我们先介绍下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
如何创建并且使用自定义网络驱动?
#创建网络ocker network create --driver bridge my-net#my-net网络docker run --network=my-net ......
网络的创建是非常的简单,至此大家了解了几种常见的网络模型。
主机ip:
Host网络
该模式与宿主机在同一个网络中,但没有独立IP地址。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
Container网络
在理解了host模式后,这个模式也就好理解了。这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。kubernetes的pod就是使用的这一模式。
5.overlay 网络
使用host也可以实现跨主机进行通信,直接使用这个物理的ip地址就可以进行通信。overlay它会虚拟出一个网络比如10.0.9.3这个ip地址,在这个overlay网络模式里面,有一个类似于服务网关的地址,然后把这个包转发到物理服务器这个地址,最终通过路由和交换,到达另一个服务器的ip地址。 Docker里实现采用会有一个服务发现consul,,会定义一个ip地址池,比如10.0.9.0/24之类的,上面会有容器,容器的ip地址会从上面去获取,获取完了后,会通过eth2进行通信,贼这实现跨主机的东西。
到此,关于“Docker驱动原理差异性怎么理解”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。