容器虚拟网卡与网桥docker0虚拟网卡的veth pair的配对
一)基本知识:
Docker 安装时会自动在 host 上创建三个网络:none,host,和bridge;详细说明可参考其它文档。我们可用 docker network ls 命令查看:

基于DRIVER是bridge的网络都会有一个对应的linux bridge被创建:
在默认环境中,一个名为docker0的linux bridge自动被创建好了,其上有一个 docker0 内部接口,IP地址为172.17.0.1/16:

再用docker network inspect指令查看bridge网络:其Gateway就是网卡/接口docker0的IP地址:172.17.0.1。

总结起来:network的名字是bridge,而对应的linux bridge的名字是docker0。
二)容器创建时IP地址的分配:
Docker 创建一个容器的时候,会执行如下操作:
• 创建一对虚拟接口/网卡,也就是veth pair,分别放到本地主机和新容器中;
 • 本地主机一端桥接到默认的 docker0 或指定网桥上,并具有一个唯一的名字,如 vetha596da4;
 • 容器一端放到新容器中,并修改名字作为 eth0,这个网卡/接口只在容器的名字空间可见;
 • 从网桥可用地址段中(也就是与该bridge对应的network)获取一个空闲地址分配给容器的 eth0,并配置默认路由到桥接网卡 vetha596da4。
完成这些之后,容器就可以使用 eth0 虚拟网卡来连接其他容器和其他网络。
如果不指定--network,创建的容器默认都会挂到 docker0 上,使用本地主机上 docker0 接口的 IP 作为所有容器的默认网关。

当有多个容器创建后,容器网络拓扑结构如下:

这时就会出现如何识别docker0的虚拟网卡和容器的对应关系,例如,图示中有两个容器和docker0中的两个接口:

三)容器和docker0的虚拟网卡的配对:
先在host中查看接口IP地址信息:

并没有IP地址,但接口名字后面有@ifxx的后缀。
再进入容器26ce9efe0412(镜像 ubuntu-with-iptool)中查看IP地址信息:

eth0中出现了编号4和后缀@if5的信息,隐约与主机中编号5和if4的接口有对应关系。
可以利用ethtool来确认这种对应关系:分别在host和container中运行指令"ethtool -S <interface>":

可以清楚地看出来:
host中index=5的接口/网卡vetha596da4的peer inferface index是4;
container中index=4的网卡eth0的peer interface index是5。
注:
1) 该方法同样适用于建立在其它bridge上的容器。
2) ethtool -S <interface>中如果interface名字带上后缀就会报错:
root@Ubuntu01:~# ethtool -S vetha596da4@if4
Cannot get stats strings information: No such device
3) ethtool -i <interface>可查看interface的详细信息。
参考链接:
https://www.cnblogs.com/CloudMan6/p/6220469.html
https://github.com/moby/moby/issues/14666
https://backreference.org/2013/06/20/some-notes-on-veth-interfaces/
容器虚拟网卡与网桥docker0虚拟网卡的veth pair的配对的更多相关文章
- 单网卡绑定多个ip,     多个网卡绑定成一块虚拟网卡
		
Linux网卡配置与绑定 Redhat Linux的网络配置,基本上是通过修改几个配置文件来实现的,虽然也可以用ifconfig来设置IP,用route来配置默认网关,用hostname来配置主机 ...
 - MAC地址获取,有线网卡与无线网卡、物理网卡与虚拟网卡的区分
		
获取当前活跃状态的网卡MAC地址.物理地址 Wmic命令:Win32_NetworkAdapter和Win32_NetworkAdapterConfiguration. 其中cmd命令行执行: 1. ...
 - ubuntu server 16.04(amd 64) 配置网桥,多网卡使用激活
		
安装了Ubuntu16.04的server版本,结果进入系统输入ifconfig后发现,只有一个网卡enp1s0,还有一个网络回路lo,ifconfig -a 发现其实一共有四个网卡,enp1s0,e ...
 - Linux中为XEN网桥绑定物理网卡
		
XEN虚拟机会默认将可以连通外网的网卡绑定到xenbr0上, 因此如果需要切换到其他物理网卡上时,需要自己配置脚本或执行命令. 1.添加脚本绑定 a.编写一个脚本,指定网卡与网桥绑定的关系 # vim ...
 - Openstack的删除错误网桥,虚拟网络
		
在实验openstack的各种网络模式时,可能会产生一些错误的网络指向,需要删除那些网桥. 执行前 [root@node-9 ~]# ifconfig br40 Link encap:Ethernet ...
 - linux网卡桥接问题与docker网卡桥接问题
		
一.linux网卡桥接问题 在linux上创建桥接网卡,与真实的物理网卡进行绑定,相当于在linux中创建了一个虚拟的交换机,以linux网卡地址为源地址的数据,从桥接网卡br0进入,从实际的物理网卡 ...
 - 网卡也能虚拟化?网卡虚拟化技术 macvlan 详解
		
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 01 macv ...
 - centos7中的网卡一致性命名规则、网卡重命名方法
		
一致性网络设备命名(Consistent Network Device Naming) 背景介绍: 在centos5的时候,我们习惯了eth0这样的网络设备命名,在centos6发现网络设备变成了em ...
 - vbox中虚拟ubuntu增加新的虚拟硬盘
		
vbox中虚拟ubuntu增加新的虚拟硬盘 在virtualbox中装好Ubuntu后,发现硬盘空间不够使用 了.以下是搜集整理的解决办法: 1. 添加新硬盘 设置 -> ...
 
随机推荐
- 用HTML5+原生js实现的推箱子游戏
			
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
 - js中的this指向问题(小计)
			
this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定,this最终指向调用它的对象. 1.函数调用模式 当一个函数并非一个对象的属性时,那么它就是被当做函数来调用的.在此种模式下,t ...
 - Unity 利用UGUI打包图集,动态加载sprite资源
			
今天做了一个UI界面,这个界面是好友界面,该界面上有若干个好友item. 需要对每个tem的头像对象(image)动态显示对应的头像.尝试利用UGUI的图集来加载,具体实现如下: 1.首先,需要知道S ...
 - 接口自动化测试持续集成--Soapui接口功能测试数据传递
			
做接口测试经常会遇到如下两种情况需要处理数据传递 接口间的数据依赖,A接口请求的参数需要用到B接口的返回值 接口请求通常要用到鉴权的接口获取Token,Token通常会跟其他接口构成一对多的关系,这种 ...
 - Windows下的Python安装与环境变量的配置
			
Windows下的Python安装与环境变量的配置 第一步:python下载: Python安装包下载地址:http://www.python.org/ 第二步:python安装: 双击下载包,进入P ...
 - Oracle树查询及相关函数
			
Oracle树查询的最重要的就是select...start with... connect by ...prior 语法了.依托于该语法,我们可以将一个表形结构的中以树的顺序列出来.在下面列述了Or ...
 - sys模块
			
#python run_case.py #在terminal中执行.py文件 在terminal中执行.py文件: 注: 无法使用terminal来打开那个文件 会显示如下:python: can't ...
 - Vue入门:Vue项目创建及启动
			
1. 创建Vue项目存放地址 用于存放Vue项目,找个自己处理方便的地方.本人地址:D:\Program Files\Workspace\Vue 2. 创建项目 进入cmd窗口 进入项目存放地址 执行 ...
 - [Python数据挖掘]第4章、数据预处理
			
数据预处理主要包括数据清洗.数据集成.数据变换和数据规约,处理过程如图所示. 一.数据清洗 1.缺失值处理:删除.插补.不处理 ## 拉格朗日插值代码(使用缺失值前后各5个未缺失的数据建模) impo ...
 - 国际空间站直播 ISS直播
			
b站:https://live.bilibili.com/9196015 斗鱼:https://www.douyu.com/543816 欢迎大家 (ฅ´ω`ฅ)