文章目录
(一)单主机通信:
不同network Namespace之间使用veth-pair技术,一端挂载在容器里,一端挂载在docker0网桥上。
一、bridg模式
默认模式,自动创建一个docker0网桥,所在网络容器都连接到网桥中,通信。
二、host模式
与宿主机使用同样ip地址、网卡。
三、container模式
与指定一个已存在的容器共享一个Network Namespace ,用同样ip地址、网卡。
四、none模式
拥有自己的Network Namespace ,但没配IP地址、网卡。
五、自定义模式
创建用户自定义的网络,如:bridge,macvlan,overlay网络。
六、实验
查看所有的网络类型:
创建一个docker网络,根据桥接模式 bridge创建网络,命名为mybridge:
带ip地址创建:
创建container时使用–network [network_name] 来指定网络:
尝试将容器连接到不同网络:
尝试同一网络不同容器之间的通信,使用两种方式(IP地址、容器名字),
创建box4,指定mybridge网络:
ping:
六、五种网络模式在相互网络通信方面的对比:
南北向通信指容器与宿主机外界的访问机制,东西向流量指同一宿主机上与其他容器相互访问的机制。
(二)跨主机通信
一、基于隧道的overly网络
overly网络:物理网络上构建一个虚拟网络。
基于vxlan隧道实现(vpn)。
二、基于包封装的overlay网络
UDP封装等数据包包装方式
基于三层实现SDN网络:
三、基于三层实现SDN网络
SDN:软件定义网络,网络虚拟化,将控制面与数据面分开。
四、docker容器的CNM模型
Network Sandbox相当于容器内部的网络栈,Endpoint是容器向外连接的出口,Network是容器间互相访问的通道。
(三)功能
容器间的相互通信及端口映射。
当ip发生变化时(如创建box1,box2后创建box3,删除box2后,box3ip地址会发生改变),宿主机可通过服务名称找到进程所在地。