ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

docker 网络

2021-09-15 15:05:36  阅读:199  来源: 互联网

标签:ipvlan 宿主机 网络 网卡 macvlan docker


这里主要介绍docker官方提供的网络模型.

docker官方主要提供bridge, macvlan, ipvlan,overlay,host. 在这里说明一下,docker提供的这些网络模型都是linux内核实现的技术.docker容器是封装的自己网络命名空间实现了与宿主机网络的隔离,还有其他的命名空间,综合在一起实现了容器的封装, 而这些技术都是linux内核实现的.docker使用的网络模型首先需要Linux内核的支持才行,比如ipvlan需要内核版本4.2+才能使用.

bridge :

桥接模式,实际是在宿主机上创建了一个桥, 然后使用Linux 提供的veth-pair技术实现了docker容器与宿主机之间的通讯.veth-pair 相当于一根网线,一端连接桥,一端在docker容器的网络命名空间内(就是所见的eth0...),只要网络数据帧到达一端,另一端也就收到了.而桥又相当与一个交换机(工作在网络模型的三层ip层).

在docker 内部访问外部网络是通过宿主机防火墙的NET转发实现的,外部不可以看到docker 的IP地址. 在docker 内对外提供服务的时候只能与宿主机进行端口绑定来提供服务(需要注意,这个时候外部通过此端口到达的数据帧都不转到docker容器内,此端口被docker容器独占), 外部访问服务的时候直接访问宿主的ip:port,实现方式也是通过防火墙的NET转发.所以当你使用iptables命令查看的时候会发现多很多条规则

macvlan:

macvlan是Linux内核实现的一种网卡虚拟化技术, 能够将一张网卡虚拟出多张网卡. macvlan在Linux内核的实现中有四种通信模式,private 模式, vepa(virtual ethernet port aggregator)模式, bridge 模式, passthru 模式. 而 docker只支持 bridge 模式.

macvlan 网络会独占物理网卡, 也就是说一张物理网卡只能创建一个macvlan 网络, 如果想创建多个macvlan网络就要使用多张物理网卡. macvlan 网络也支持VLAN 子接口, 所以可以通过VLAN技术将一个网口划分出多个子网口

通过macvlan 虚拟化出的网卡会有真实的mac和ip,利于外部直接访问dockerr容器,效率高.

ipvlan:

ipvlan 和 macvlan 类似,都是从一个物理网卡上虚拟出多个虚拟网卡的技术,区别是macvlan 有自己的mac和ip, 而 ipvlan 和父接口工用mac地址, 拥有自己独立的ip

在docker 中创建ipvlan网络模型的时候,选择ipvlan_mode=l2 的时候和macvlan 一样可有自己的mac地址, 选择ipvlan_mode=l3 的时候会和父接口共享mac地址.

overlay:

overlay(多机覆盖网络) 指的是一种网络架构上叠加的虚拟化技术模式.

在docker 中用于多个机器上的docker 容器互相访问. 

使用这用技术首要条件是多个机器之间本来就可以互相访问. overlay是使用VXLAN的隧道技术, 对docker中发出的数据包进行二次封装,然后在网络中传播,到达目的地后再解包,再发送至目的地docker 容器内.在多个机器的docker内部来看就是直接连接的.

host:
host 模式非常简单,就是docker 容器使用宿主的网络命名空间,看到的也是宿主机的网络,在docker 内修改网络,宿主机也会更改.非常不安全

 

标签:ipvlan,宿主机,网络,网卡,macvlan,docker
来源: https://blog.csdn.net/guang9527/article/details/120305349

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有