Docker原生网络技术简介
http://www.dockerinfo.net/2973.html
docker 手册;http://c.biancheng.net/view/3118.html
1、默认网络
在宿主机部署好Docker Engine后会默认创建三种网络:bridge,host和none。
# docker network ls NETWORK ID NAME DRIVER SCOPE 93dab79cdb5a bridge bridge local c920c9c10e62 host host local d2a11ea1c70a none null local
在创建容器时可使用–network=bridge/host/none来指定容器所在的网络。
Bridge
默认的bridge网络是我们比较熟悉的docker0,它在安装完Engine后自动创建,并且在创建容器不指定network参数的时候默认就是该网络。

如上图,Docker的bridge网络和虚拟化的NAT网络模式很相似。容器通过docker0分配到各自的IP地址并可以通过eth0与外界通信(outbound)。若要实现容器中应用的跨主机访问,则需要将容器的端口映射到主机端口,客户端通过访问主机的IP和Port来访问容器应用(inbound)。该模式是单节点或小规模Docker环境的常用模式,易于理解,使用成本也不高。
Host
Host网络让容器直接使用宿主机的网络,简单理解就是Host网络的容器使用的IP地址等网络配置信息和宿主机一样。

如上图,Host网络中的容器使用的是主机的网络配置。容器中的应用可直接通过主机IP+端口的方式进行访问而无需映射。该模式下每个容器的端口不能重复,否则会出现冲突。而且容器和主机网络没做隔离,得注意安全方面的考量。
None
None网络将容器加网入到容器自有网络,有自己的Network Namespace,但没有网卡等网络相关的配置信息,无法和宿主机通信或外部主机通信。

如上图,None网络中的容器没有网络配置信息(仅一个lo0,无其他网卡和IP配置)。该模式将容器的网络管理从Docker中剥离出来,用户可根据自己的需求自定义容器的网络(如使用ovs来管理)。看似最简单,实则最复杂。
2、用户定义网络
Bridge
用户也可以自定义bridge网络,使用方式基本跟默认的bridge一样,映射出容器中应用或服务的端口供其他应用访问即可。

Container
Other Container网络为容器级的复用网络,实现多个容器共用一个网络配置。容器间共享Network Namespace、IP地址和端口区间,其他相关的Namespace依然隔离。

如上图,容器A和容器B共用网络,有点类似kubernetes的Pod,跟之前提到的Host模式也有点像。只不过一个是容器和主机共用,一个是容器和容器共用。容器A和B之间的通信基于localhost进行,提升了网络传输效率。
以上介绍的几种网络主要适用于单节点或者小规模的容器环境,在规模比较大的容器集群环境中,实现多主机容器间的通信和调度是非常必要的。下面介绍一下Docker原生的多主机网络。
Overlay
Overlay网络是在现有的网络架构之上构建一个不同主机容器间的二层虚拟网络,以实现容器跨主机的通信,多用于规模比较大的容器集群环境。
Docker的Overlay网络需要基于键值存储来实现,K-V存储里面存放了各个主机上容器和网络相关的信息。

如上图,Overlay将多主机中的容器划分到一个虚拟的二层网络中,以实现容器的跨主机通信。
Docker Overlay网络的构建支持VxLAN技术,将二层的MAC地址封装到4层的UDP数据包中,只要传输层端到端可达,则可以基于VxLAN隧道实现容器间大二层网络的构建,这也体现了Overlay网络与底层网络基础架构的相对无关性。
Macvlan
Macvlan网络虚拟化技术的引进让我们回到了熟悉的企业虚拟化环境中虚机网络的管理模式,即将容器连接到现有的二层网络中,每个容器都拥有一个跟宿主机同一VLAN的IP地址,从而实现容器跨主机的通信。

上图为Macvlan的bridge模式,该模式跟我们平时接触的桌面版虚拟化软件的网络桥接模式类似,容器直接接入跟主机相同的二层网络并获得独立的IP地址。

上图为Macvlan的Trunk模式,该模式跟企业虚拟化常用网络模式类似。主机网卡绑定了多个不同VLAN的IP地址,主机中的容器基于主机不同VLAN的网络获取对应VLAN的独立IP地址,实现容器跨主机通信的同时加强了网络层的安全性。
Macvlan的出现更多的将容器网络管理剥离出Docker本身,容器变得跟虚拟机一样基于现有的企业网络来获取所需要的网络配置信息,初探感觉比Overlay来得简单并易于理解,但具体是否这样还需实操证明。
Docker原生网络技术简介的更多相关文章
- docker的网络-单主机(三种原生网络)none、host、bridge
docker的网络分为:单主机.跨主机 这篇先说:单主机 我们先说一下docker的原生网络模式 网络模式 简介 优点 使用场景 none 空网络,没有网络 此网络与外界隔离,安全度非常高 适合公司内 ...
- Docker核心实现技术(命名空间&控制组&联合文件系统&Linux网络虚拟化支持)
作为一种容器虚拟化技术,Docker深度应用了操作系统的多项底层支持技术. 早期版本的Docker是基于已经成熟的Linux Container(LXC)技术实现的.自Docker 0.9版本起,Do ...
- Web技术的发展 网络发展简介(三)
在上一篇文章中,对TCP/IP通信协议进行了简单的介绍 通信协议是通信的理论基石,计算机.操作系统以及各种网络设备对通信的支持是计算机网络通信的物质基础 而web服务则是运行于应用层,借助于应用层的协 ...
- 五、docker网络技术
五 docker网络技术 1.本章环境: 源码文件目录: 2.网络基础回顾 通道: NAT将私有地址和端口号翻译成公有的地址和端口号项某网站发出数据包.某网站根据数据表查出私有ip和端口号返回数据. ...
- Kube-OVN:大型银行技术团队推荐的金融级云原生网络方案
近日,由TWT社区主办的2021容器云职业技能大赛团队赛的冠军作品:<适用于大中型银行的云原生技术体系建设方案>中,Kube-OVN成为银行技术团队推荐的金融级云原生网络最佳实践.本文部分 ...
- 5.云原生之Docker容器网络介绍与实践
转载自:https://www.bilibili.com/read/cv15185166/?from=readlist 例如, 当在一台未经过特殊网络配置的centos 或 ubuntu机器上安装完d ...
- 云原生网络代理(MOSN)的进化之路
本文系云原生应用最佳实践杭州站活动演讲稿整理.杭州站活动邀请了 Apache APISIX 项目 VP 温铭.又拍云平台开发部高级工程师莫红波.蚂蚁金服技术专家王发康.有赞中间件开发工程师张超,分享云 ...
- docker——核心实现技术
作为一种容器虚拟化技术,Docker深度应用了操作系统的多项底层支持技术. 早期版本的Docker是基于已经成熟的Linux Container(LXC)技术实现的.自从0.9版本起,Docker逐渐 ...
- 026.[转] 基于Docker及Kubernetes技术构建容器云平台 (PaaS)
[编者的话] 目前很多的容器云平台通过Docker及Kubernetes等技术提供应用运行平台,从而实现运维自动化,快速部署应用.弹性伸缩和动态调整应用环境资源,提高研发运营效率. 本文简要介绍了与容 ...
随机推荐
- ArcGIS 10安装及破解
1.下载 ArcGIS 10 安装程序及破解文件后面提供电驴的下载地址(可以使用迅雷.QQ旋风等下载工具下载),下载文件是一个光盘镜像文件:? ArcGIS_Desktop10_122519.iso. ...
- Nginx入门安装升级
1).Nginx ("engine x") 是一个高性能HTTP 和 反向代理 服务器.IMAP.POP3.SMTP 服务器. Nginx特点是占有内存少,并发能力强,事实上Ngi ...
- 历届试题 对局匹配-(dp)
问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起.如果两人分差 ...
- php yii 命令
php yii 敲回车 This is Yii version 2.0.11. The following commands are available: - asset Allows you to ...
- css图标库 font-awesome.min.css
下载font-awesome-4.4.0 同时引入font-awesome-4.4.0.min.css 通过<i class='fa fa-sign-out'></i>生成图片 ...
- 常见三种字符编码的区别:ASCII、Unicode、UTF-8
什么是字符编码? 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255( ...
- 2018面向对象程序设计(Java)第15周学习指导及要求
2018面向对象程序设计(Java)第15周学习指导及要求 (2018.12.6-2018.12.9) 学习目标 (1) 掌握Java应用程序打包操作: (2) 了解应用程序存储配置信息的两种方法 ...
- table tr 加入背景色之后 去掉td之间的空隙
给table加样式 border-collapse:collapse;
- Push API
[Push API] The Push API gives web applications the ability to receive messages pushed to them from a ...
- 在project窗口中快速定位文件
[在project窗口中快速定位文件] 点击带圆圈的小叉叉按钮,这个时候Project中就会定位到当前文件目录下了. 参考:http://blog.csdn.net/hyr83960944/artic ...