Docker网络实现

众所周知,docker网络是它薄弱的地方!

Docker的网络实现:

利用linux的网络命名空间和虚拟网络设备(特别是veth pair)

1、基本原理
实现网络通信:机器需要至少一个网络接口:物理的或者虚拟的

不同子网通信:额外路由机制

docker:默认是虚拟的接口

虚拟接口速率:转发效率极高

虚拟接口速率极高的原理:linux通过在内核中进行数据复制来实现虚拟接口之间的数据转发。
通俗的将:发送接口的发送缓存的数据直接复制到接收接口的接收缓存,不用外部设备转换。

2、网路创建
docker创建一个容器会做什么(网络相关)
1、创建一对虚拟接口,分别放到宿主主机和新容器的 命名空间里

2、宿主主机一端的虚拟接口会链接到默认的docker0网桥或着你指定的网桥上,
而且有一个以veth开头的唯一名字

3、容器里的虚拟接口放到容器里,修改名字作为eth0

4、从网桥可用地址段中获取一个空闲地址分配给容器的eth0,网关则是docker0的ip

然后就可以访问外部和连接其它容器了!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,560评论 0 120
  • 转自:http://ju.outofmemory.cn/entry/255894 概述自从docker容器出现以来...
    dleyanlin阅读 1,522评论 0 7
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 1,806评论 0 7
  • 概述 自从docker容器出现以来,容器的网络通信就一直是大家关注的焦点,也是生产环境的迫切需求。而容器的网络通信...
    糙老爷们儿吃什么樱桃阅读 3,660评论 1 5
  • Now the time downs the end of a day, And all myself is su...
    Enchante阅读 506评论 1 2