Docker 相关运维相关

Docker网络模型

2017-09-24  本文已影响230人  糙老爷们儿吃什么樱桃

概述

自从docker容器出现以来,容器的网络通信就一直是大家关注的焦点,也是生产环境的迫切需求。而容器的网络通信又可以分为两大方面:单主机容器上的相互通信和跨主机的容器相互通信。而本文将分别针对这两方面,对容器的通信原理进行简单的分析,帮助大家更好地使用docker。

docker单主机容器通信

host 模式

bridge 模式

docker run -tid –name db -p 3306:3306 mysql
在宿主机上,可以通过iptables -t nat -L -n,查到一条DNAT规则:
DNAT tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306 to:172.17.0.5:3306
上面的172.17.0.5即为bridge模式下,创建的容器IP。
很明显,bridge模式的容器与外界通信时,必定会占用宿主机上的端口,从而与宿主机竞争端口资源,对宿主机端口的管理会是一个比较大的问题。同时,由于容器与外界通信是基于三层上iptables NAT,性能和效率上的损耗是可以预见的。

none 模式

其他容器模式

用户定义网络模式

docker 跨主机容器通信

下面,本从网络通信模型的角度,对这些方案的通信原理做一个简单的比较,从中可以窥见各种方案在性能上的本质差别。

docker容器的CNM模型

docker 原生overlay 的网络通信模型

由于vxlan网络与宿主机网络默认不再同一网络环境下,为了解决宿主机
与容器的通信问题,docker为overlay网络中的容器额外增加了网卡eth1
作为宿主机与容器通信的通道。这样在使用容器服务时,就必须根据访
问性质的不同,选择不同的网卡地址,造成使用上的不便。
容器对外暴露服务仍然只能使用端口绑定的方式,外界无法简单地直接
使用容器IP访问容器服务。

weave 网络通信模型

内容来源

ju.outdofmemory.cn/entry/255894

上一篇 下一篇

猜你喜欢

热点阅读