详解: Docker原生网络和主流优化方案

本文详细介绍了Docker的网络原理,包括Docker原生网络的实现,如veth pair、docker0网桥,以及容器间的通信机制。此外,文章还探讨了针对Docker网络的优化方案,如Libnetwork、Pipework、Socketplane、Weave、Flannel和Tinc,阐述了它们各自的特点和应用场景,旨在提供更高效、安全的容器网络解决方案。
摘要由CSDN通过智能技术生成

640?wx_fmt=jpeg

640?wx_fmt=gif

       在云计算架构设计中,最复杂且最重要的组件就是网络,Docker作为云计算追捧的新宠儿也不会例外,尤其是当使用Docker容器构建分布式服务时,通信和网络变得非常重要。


开篇之前,先给读者分享下笔者对容器知识总结: 容器技术架构、网络和生态详解,内容涉及容器技术的方方面面,感兴趣的读者可通文末“阅读原文”过了解详情。


第1章 容器演进和关键技术介绍 4

第2章 为什么是Docker引领主流 13

第3章 详谈Docker的生态系统 34

  • 3.1 Docker的生态系统导图 35

  • 3.2 Docker的挑战者Rocket 37

第4章 详解Docker AUFS技术 38

第5章 Docker技术架构详细分析 44

  • 5.1 Docker关键技术回顾 44

  • 5.2 Docker实现持续部署 45

  • 5.3 Docker总架构图 46

  • 5.3.1 Docker Client模块 48

  • 5.3.2 Docker Daemon模块 49

  • 5.3.3 Docker Server子模块 50

  • 5.3.4 Engine子模块 52

  • 5.3.5 Job任务子模块 52

  • 5.3.6 Docker Registry模块 53

  • 5.3.7 Graph模块 53

  • 5.3.8 Driver模块 54

  • 5.3.9 Libcontainer模块 58

  • 5.3.10 Docker container模块 60

第6章 容器定义存储(CDS)技术分析 61

第7章 Portworx容器定义存储(CDS)详解 70

  • 7.1 Portworx架构和原理 71

  • 7.2 存储控制面 72

  • 7.3 数据面访问 73

  • 7.4 生命周期管理 74

  • 7.5 Portworx应用场景 75

第8章 Diamanti容器融合存储基础架构 78

  • 8.1 容器的内建基础架构 79

  • 8.2 容器与其网络互联 80

  • 8.3 容器的存储持久化 81

  • 8.4 简化容器管理 81

  • 8.5 集成流行的容器开源架构 82

  • 8.6 Diamanti产品特点 83

第9章 Docker原生网络和实现原理 84

第10章 Openstack如何实现与容器对接 88

第11章 Docker网络技术方案详解 94

  • 11.1 Libnetwork方案介绍 95

  • 11.2 Pipework方案介绍 97

  • 11.3 Socketplane方案介绍 98

  • 11.4 Weave方案介绍 99

  • 11.5 Flannel方案介绍 100

  • 11.6 Tinc方案介绍 101

第12章 细说Docker发展和生态 102

  • 12.1 Docker发展历程 102

  • 12.2 Docker的推动者 103

  • 12.3 Docker镜像仓库 103

  • 12.4 Docker的生态环境 104

  • 12.5 Docker的优势 104

  • 12.6 Docker的跨平台特性 106

  • 12.7 Docker容器云 106

  • 12.8 Docker改名Moby浅析 107


接下来,我们将从Docker原生网络架构出发,讨论目前活跃的多种针对Docker提出的网络优化方案。

 

      Docker的网络是基于Linux的网络命名空间和虚拟网络设备(特别是veth pair)来实现。在Docker中,网络接口默认都是虚拟的接口,可以充分发挥数据在不同Docker间或Docker与宿主机转发效率。这是因为Linux通过在内核中通过数据复制实现虚拟接口之间的数据转发,即发送接口的发送缓存中的数据包将被直接复制到接收接口的接收缓存中,而无需通过外部物理网络设备进行交换。

 

      Docker容器创建网络时,会在本地主机和容器内分别创建一个虚拟接口,并让它们彼此连通,形成一对虚拟网络接口,这样的一对接口叫做veth pair。


640?wx_fmt=jpeg
 

     当Docker进程启动之后,它会配置一个叫docker0的虚拟网桥在宿主机上。这个网桥接口允许Docker去分配虚拟的子网给即将启动的容器。这个网桥在容器内的网络和宿主机网络之间将作为网络接口的主节点呈现。


      当Docker容器启动后,创建一对虚拟接口,分别放到本地主机和新容器的命名空间中。本地宿主机一端的虚拟接口连接到默认的docker0网桥或指定网桥上,并具有一个以veth开头的唯一名字。容器一端的虚拟接口将放到新创建的容器中,并修改名字作为eth0,这个接口只在容器的命名空间可见。

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值