Docker集群(一) —— Docker网络及flannel介绍

本文详细介绍了Docker的网络原理,包括网络命名空间、Veth设备对和网桥,探讨了Docker的四种网络模式,特别是Bridge模式的运作细节。此外,文章着重讲解了Flannel在解决Docker集群网络问题中的作用,包括其如何实现跨主机容器通信和IP地址规划。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【摘要】本文介绍docker网络原理和设置,以及在docker集群中需要解决的问题。最后介绍flannel在解决docker网络问题中的作用。

1   基础

在介绍docker的网络之前,必须先认识docker所依赖的几个linux技术,这对理解docker的网络有帮助。因水平有限这一节仅简单介绍,对linux网络原理感兴趣的TX可以继续深入研究。

1.1 网络命名空间:

Linux Namespaces机制提供一种资源隔离方案。PID,IPC,Network等系统资源不再是全局性的,而是属于特定的Namespace。每个Namespace里面的资源对其他Namespace都不可见。Linux提供6中命名空间, 现在讲的网络命名空间是其中的一种。

一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。一个Docker容器“通常”会分配一个独立的NetworkNamespace。“通常”的意思是如果dockerhost模式启动则与主机在同一个命名空间,后面还会讲到。

这样每个docker容器就好像拥有了一套独立的网络环境,甚至以为自己霸占了全部的主机,也许这也是使人们经常认为容器就是虚机的原因之一吧~~~

1.2 Veth设备对

Veth设备对可以在不同的网络命名空间之间通信,用他们可以连接两个网络命名空间。一对veth设备就像网线的两头一样。

1.3 网桥

简单来说,桥接就是把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。类似交换机。

linux内核支持网口的桥接与交换机有一点点不同不同,交换机只是一个二层设备,对于接收到的报文,要么转发、要么丢弃。而运行着linux内核的机器本身就是一台主机,有可能就是网络报文的目的地。其收到的报文除了转发和丢弃,还可能被送到网络协议栈的上层(网络层),从而被自己消化。

docker启动时,会在主机上创建一个docker0网桥。通过docker0在同一个主机上的容器之间都可以通信,外部的消息也可以经过docker0进入容器。后面还会讲到。

het@het:~$  ifconfig

docker0   Link encap:以太网  硬件地址 02:42:df:66:95:96 

          inet 地址:172.17.0.1  广播:0.0.0.0  掩码:255.255.0.0

          inet6 地址: fe80::42:dfff:fe66:9596/64 Scope:Link

          UP  BROADCAST RUNNING MULTICAST   MTU:1500  跃点数:1

2   Docker网络模式

Docker有以下4种网络模式:

  host模式,使用--net=host指定。

  container模式,使用--net=container:NAME_or_ID指定。

  none模式,使用--net=none指定。

  bridge模式,使用--net=bridge指定,默认设置。

2.1 Bridge模式

2.1.1  模式介绍

我们重点讲这个模式。Bridge是默认模式,正常docker启动时都已这个模式启动。在这个模式下Docker server启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。Docker0拥有一个自己的ip地址,有的书上说是172.17.42.1,但是我的机器上是172.17.0.1。总之是个172段的内部地址,机器外是访问不了的。

het@het:~$ ifconfig

docker0    Link encap:以太网  硬件地址  02:42:df:66:95:96 

           inet 地址:172.17.0.1  广播:0.0.0.0  掩码:255.255.0.0

           inet6 地址:  fe80::42:dfff:fe66:9596/64 Scope:Link

           UP BROADCAST MULTICAST   MTU:1500  跃点数:1

           接收数据包:7 错误:0 丢弃:0  过载:0 帧数:0

           发送数据包:30 错误:0 丢弃:0  过载:0 载波:0

           碰撞:0 发送队列长度:0

           接收字节:480 (480.0  B)  发送字节:4909  (4.9 KB)

eth0       Link encap:以太网  硬件地址  08:00:27:02:6c:8b 

           inet 地址:10.43.86.110  广播:10.43.86.255  掩码:255.255.255.0

           inet6 地址:  fe80::a00:27ff:fe02:6c8b/64 Scope:Link

           UP BROADCAST RUNNING MULTICAST   MTU:1500  跃点数:1

           接收数据包:140296 错误:0 丢弃:0  过载:0 帧数:0

           发送数据包:30286 错误:0 丢弃:0  过载:0 载波:0

           碰撞:0 发送队列长度:1000

           接收字节:9847208 (9.8  MB)  发送字节:2946052  (2.9 MB)

lo         Link encap:本地环回 

           inet 地址:127.0.0.1  掩码:255.0.0.0

           inet6 地址: ::1/128  Scope:Host

           UP LOOPBACK RUNNING   MTU:65536&

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值