Docker网络&容器通信

docker网络

原生网络

bridge模式

docker的默认模式,docker进程第一次启动会创建一个docker0虚拟网桥,
此宿主机上启动的容器会默认连接到这个网桥上,容器通过这块网桥NAT访问外部网络, 当执行docker run 加入-p参数是,实际是在iptables中加入了对应的DNAT端口转发规则。

docker network ls
ip addr show
brctl show  ##查看桥接

docker run -d nginx
docker ps -a
docker inspect 容器ID

bridge模式下,容器没有一个公有ip,只有宿主机可以直接访问外网,而容器则是通过宿主机的NAT规则来访问外网
宿主机访问外网则需要打开内核路由转发功能:
net.ipv4.ip_forward = 1
创建容器时,系统自动生成虚拟网络对,使容器的eth0与docker0连接,则可以实现容器与docker0的互通,docker0通过ip地址转发,转发至真实的物理机网卡

在这里插入图片描述

host模式

host模式的容器跟宿主机共用一个namespace,拥有一样的IP和路由,因此容器内的服务端口不能跟宿主机相同,采用host模式,容器不经过docker0桥接与外部联系,而是直接连接至真实物理网卡

docker run -it --name vm1 --network host busybox
ip a

在这里插入图片描述

none模式

none模式创建的容器没有添加网卡,需要自行配置

禁止网络功能,只有lo回环接口,在容器创建时使用
–network=none指定;容器启动时没有ip地址,也没有网络接口,可以应用于容器内的文件比较敏感,不需要向外界传递,不需要网络支持

docker run -it --name vm2 --network none ubuntu  ##以none模式创建容器
ip addr  ##查看ip,仅有localhost,网络功能被禁

自定义网络

建议使用自定义网桥来控制哪些容器可以相互通讯,还可以自动DNS解析容器名称到ip地址。Docker提供了创建这些网络的默认网络驱动程序,你可以创建一个新的Bridge网络,Overlay或Macvlan网络,你可以创建一个网络插件或远程网络进行完善的自定义和控制。
你可以根据需要创建任意数量的网络,并且可以在任何给定的时间将容器连接到这些网络中的零个或多个网络。此外,您可以连接并断开网络中的容器,而无需重新启动容器,当容器连接到多个网络时,其外部连接通过第一个非内部网络以词法顺序提供。

Bridge

用户也可以自定义bridge网络,使用方式基本跟默认的bridge一样,映射出容器中应用或服务的端口供其他应用访问即可。

Container

Other Container网络为容器级的复用网络,实现多个容器共用一个网络配置。容器间共享Network
Namespace、IP地址和端口区间,其他相关的Namespace依然隔离。

Overlay

Overlay网络是在现有的网络架构之上构建一个不同主机容器间的二层虚拟网络,以实现容器跨主机的通信,多用于规模比较大的容器集群环境。

Docker的Overlay网络需要基于键值存储来实现,K-V存储里面存放了各个主机上容器和网络相关的信息。

Overlay将多主机中的容器划分到一个虚拟的二层网络中,以实现容器的跨主机通信。

Docker Overlay网络的构建支持VxLAN技术,将二层的MAC地址封装到4层的UDP数据包中,只要传输层端到端可达,则可以基于VxLAN隧道实现容器间大二层网络的构建,这也体现了Overlay网络与底层网络基础架构的相对无关性。

Macvlan

Macvlan网络虚拟化技术的引进让我们回到了熟悉的企业虚拟化环境中虚机网络的管理模式,即将容器连接到现有的二层网络中,每个容器都拥有一个跟宿主机同一VLAN的IP地址,从而实现容器跨主机的通信。

Macvlan的bridge模式,该模式跟我们平时接触的桌面版虚拟化软件的网络桥接模式类似,容器直接接入跟主机相同的二层网络并获得独立的IP地址。

Macvlan的Trunk模式,该模式跟企业虚拟化常用网络模式类似。主机网卡绑定了多个不同VLAN的IP地址,主机中的容器基于主机不同VLAN的网络获取对应VLAN的独立IP地址,实现容器跨主机通信的同时加强了网络层的安全性。

Macvlan的出现更多的将容器网络管理剥离出Docker本身,容器变得跟虚拟机一样基于现有的企业网络来获取所需要的网络配置信息,初探感觉比Overlay来得简单并易于理解,但具体是否这样还需实操证明。
Macvlan是一个新的尝试,是真正的网络虚拟化技术的转折点,Linux实现非常轻量化,因为与传统的Linux Briage隔离相比,他们只是简单地与一个Linux以太网接口与子接口相关联,以实现网络间的分离和物理网络的连接
Macvlan提供了许多独特的功能,并有充足的的空间进一步创新与各种模式,这个方法有两个高级的优点是绕过Linux网桥的正面性能以及移动部件少的简单性,删除传统上驻留在Docker和主机NIC和容器接口之间的网桥留下了一个非常简单地设置,包括容器接口,直接连接到Docker主机接口,由于这种情况没有端口映射,因此可以轻松的访问外部服务。
Macvlan Briage 模式每个容器都有唯一的MAC地址,用于跟踪Docker主机的MAC到端口映射。Macvlan驱动程序网络连接到父Docker主机接口,示例是物理接口,例如eth0,用于802.1q VLAN标记的子接口eth0.10(.10代表VLAN10)或甚至绑定的主机适配器,将两个以太网接口捆绑为一个以太网接口,指定的网关由网络基础设施提供的主机外部。每个Macvlan Bridge 模式的Docker网络彼此隔离,一次只能有一个网络连接到父节点,每个主机适配器有一个理论限制,每一个主机适配器可以连接一个Docker网络,同一个子网内的任何容器都可以没有相关网卡的同一网络的中的任何其他的容器进行通讯macvlan brid
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值