Docker中的网络详解以及与OpenStack网络对比
Docker由于它出众的资源占有率和秒级启动等优势在PaaS层大行其道。那OpenStack是作为IaaS层服务的。他们的网络有什么共同点和区别呢?
创建Docker用一句话概括就是“使用Docker创建一个进程,为这个进程创建隔离的环境,这样的环境可以称为Docker Container(容器),然后再在容器内部运行用户应用进程。”
那么namespace和cgroup就不介绍了,都是Linux内核的知识,一个是隔离资源,一个是对资源的限制。这些实现了Docker网络的底层依赖(OpenStack也是一样的)。但是通过这几天的学习,觉得Docker的网络比OpenStack的更加简单。
这张图是经典的OpenStack Neutron结构图(Juno),分析docker网络的时候可以跟这张图进行对比。
Docker网络主流几种方法如下:
1、bridge桥接模式网络
Docker通过宿主机上的网桥(docker0)来连通容器内部的网络栈与宿主机的网络栈,实现容器与宿主机乃至外界的网络通信。
文章开头的图是OpenStack Neutron的架构图。其实是利用了相同的知识。VM对应的是Container,veth就是Neutron中的vnet,是一个虚拟的接口。然