Docker原生网络技术简介

Docker原生网络技术简介

默认网络

在宿主机部署好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

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来管理)。看似最简单,实则最复杂。

用户定义网络

Bridge

用户也可以自定义Bridge网络,使用方式基本跟默认的Bridge一样,映射出容器中应用或服务的端口供其他应用访问即可。

Container

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来得简单并易于理解,但具体是否这样还需实操证明。

本文就到这里,概念性的东西比较多,原理性的东西比较少,不足之处也请各位看官留言指导。

#Network

时间: 2024-12-15 01:56:27

Docker原生网络技术简介的相关文章

docker原生网络的特点即使用场景,即使用测试

docker的3个原生网络的特点即使用场景docker网络,原生网络:Docker netwwork ls1.None网络 特点:PS:用到None网络的容器,会发现他只有一个Loopback回环的网络,没有Mac地址,IP等信息,意味着他不能跟外界通信,是被隔离起来的网络.使用场景:隔离,意味着安全,所以,此网络可以运行关于安全方面的验证码,效验码等服务.[[email protected] ~]# docker network lsNETWORK ID NAME DRIVER SCOPEc8

GPRS 网络技术简介及应用

GPRS是通用分组无线业务的简称,它是有英文名称:General Packet Radio Service的缩写.它是GSM移动通信为基础的数据传输技术,突破了GSM网只能提供电路交换的思维方式,可以说GPRS是GSM的延续.只通过增加相应的功能实体和对现有的基站系统进行部分改造来实现分组交换.GPRS和以往连续在频道传输的方式不同,是以封包(Packet)式来传输,并非使用其整个频道,理论上较为便宜.GPRS的传输速率可提升至56甚至114Kbps.而且,因为不再需要现行无线应用所需要的中介转

虚拟化技术—docker容器—网络模式

Docker作为目前最火的轻量级容器技术,有很多令人称道的功能,如Docker的镜像管理.然而,Docker同样有着很多不完善的地方,网络方面就是Docker比较薄弱的部分.因此,我们有必要深入了解Docker的网络知识,以满足更高的网络需求.这里先介绍Docker自身的4种网络工作方式. 1. Docker的4种网络模式 我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: § host模式,使用--net=host指定

使用docker 原生overlay网络部署夸宿主机访问

要使用docker 原生的overlay,要满足任意的2个条件:1,docker 运行在swarm 模式2,使用键值存储docker 主机集群 这里使用consul 键值存储来部署节点1/键值存储(Server):192.168.1.198节点2(Client):192.168.1.1991,下载consul二进制包 进行部署(下载到server节点) wget https://releases.hashicorp.com/consul/0.9.2/consul_0.9.2_linux_amd6

Kubernetes & Docker 容器网络终极之战(十四)

目录 一.单主机 Docker 网络通信 1.1.host 模式 1.2 Bridge 模式 1.3 Container 模式 1.4.None 模式 二.跨主机 Docker 网络通信分类 2.1 通信方案 2.2.容器网络规范 2.3.网络通信实现方案 2.4.Kubernetes 网络模型 三.跨主机 Docker 网络 3.1 Flannel 网络方案 3.2.Calico 网络方案 3.3.Canal 网络方案 3.4.Docker overlay 网络方案 3.5.Docker ma

Docker for Windows使用简介

在上一篇文章中,通过演练指导的方式,介绍了在Docker中运行ASP.NET Core Web API应用程序的过程.本文将介绍Docker for Windows的使用. 先决条件 前两周时间,Docker发布了Docker for Windows的正式版,于是就可以在Windows下运行Docker容器了.要在Windows下运行Docker,需要满足以下先决条件: 64位Windows 10 Pro.Enterprise或者Education版本(Build 10586以上版本,需要安装1

[转载] Google数据中心网络技术漫谈

原文: http://www.sdnlab.com/12700.html?from=timeline&isappinstalled=0#10006-weixin-1-52626-6b3bffd01fdde4900130bc5a2751b6d1&sukey=fc78a68049a14bb247c537e229e9301ea4dca80236df4f4e775535c08f0a24420a9ac4d726c99dad63a9f6e4c88271ed 真羡慕 google 强大的网络基础设施啊,

AJAX技术简介及入门实例

最近在学校参加暑期实习,参与的是一个社交网站项目,学长那边分配给的任务是前端开发,需要学习AJAX技术. 对于一个像我一样刚刚接触Web开发且无多少实际项目经验的新手而言,AJAX技术显得复杂而又深奥.经过两天的baidu.google,我对AJAX的基本原理有了一个大致的认识,在此总结一下. 1. 什么是AJAX? AJAX全称是异步的JavaScript和XML,是Asynchronous JavaScript and XML的缩写.AJAX技术用于创建交互式网页应用的网站开发,至于何为异步

可穿戴技术简介

可穿戴技术简介 ---把科技穿在身上 1简介 可穿戴技术主要探索和创造能直接穿在身上.或是整合进用户的衣服或配件的设备的科学技术. 2目的 通过“内在连通性”实现快速的数据获取.通过超快的分享内容能力高效地保持社交联系.摆脱传统的手持设备而获得无缝的网络访问体验. 3技术产品 (1)Google Glass(谷歌眼镜) 2012年6月28日,谷歌通过I/O产品发布会发布了这款穿戴式IT产品.谷歌眼镜结合了声控.导航.照相与视频聊天等功能,预示了未来世界可能的样貌.一块右眼侧上方的微缩显示屏,一个