Docker Volume Plugin的原理和机制分析?

支持这种模式的厂家有哪些?

参与15

2同行回答

GaryyGaryy系统工程师某保险
因为应用数据对安全,可用性,共享,性能等方面的要求和Root Image的要求完全不一样,所以Docker并不推荐采用Root Image的存储方式来存储应用数据,而是采用了Volume这样一个独立的数据访问接口。应用通过Volume去访问相关的数据,Volume的实现和CoW的分层文件系统完全独立,通过Volum...显示全部

因为应用数据对安全,可用性,共享,性能等方面的要求和Root Image的要求完全不一样,所以Docker并不推荐采用Root Image的存储方式来存储应用数据,而是采用了Volume这样一个独立的数据访问接口。应用通过Volume去访问相关的数据,Volume的实现和CoW的分层文件系统完全独立,通过Volume plugin机制可轻易驱动外部存储。

(1) Docker Daemon对Volume的管理
Docker Daemon结构中有个成员Volumes,类型是VolumeStore类型,包含一组管理Volume的函数:Create、Remove、List、Get、Refs ...。通过两个变量,管理Container和Volume的关系。 names : map结构,Key是Volume的name,value是实现Volume接口的结构对象。存储该Daemon内所有的Volume。 ReFS: map结构,key是volume的name,value是string数组保存引用该Volume的Container ID。 Docker Daemon通过Volumes变量,就可以管理所有的Volume。
(2) Docker Volume的管理
Docker提供两个接口Volume和Driver,所有提供给Docker使用的Volume必须实现Volume接口。后端驱动需要实现Driver接口。Driver是对提供出去的Volume进行管理。目前Docker实现了两种Volume &Drive。
(2.1)基于本地文件系统的Volume
可以在执行Docker create或Docker run时,通过-v参数将主机的目录作为容器的数据卷。这部分功能便是基于本地文件系统的volume管理。上图中蓝色部分LocalVolume和Root。这两个结构就是对主机目录和文件进行管理
(2.2)适配Plugin的volume
Docker为了支持第三方存储方案,在1.8版本引入Volume Plugin机制,Volume Adapter和Volume Driver Adapter分别实现了接口Volume和Driver接口,用于表示由Plugin提供的Volume和Plugin driver。
(3) Docker Plugin实现原理
Volume Driver Adapter : 实现Driver接口,用于抽象各种Plugin的驱动,该类型可以适配所有符合规范的Volume Plugin,对Plugin进行管理。 Volume Adapter : 实现Volume接口,用于抽象所有Plugin提供的Volume,该类型可以适配所有符合规范的Volume Plugin提供的类型,对Volume进行管理。 通过抽象,对于Plugin和其提供的Volume,Docker Daemon结构和Container结构使用上述两个适配类型,对Plugin和Volume进行管理和使用。
发现步骤: Docker Daemon首先会在/run/docker/plugins搜索对应的套接字文件,套接字文件名必须和Volume Driver名一致,如上述命令,便是搜索convoy.sock。 如果上一步搜索不到,则到/etc/docker/plugins和/usr/lib/docker/plugins两个目录搜索spec或json文件。文件中指定套接字文件的URL。如:unix:///var/run/convoy/convoy.sock 。 根据前面两步发现的Unix域套接字URL,构建Plugin对象,并将新建对象加入到全局变量storage的Plugins字段中。

收起
保险 · 2018-02-05
浏览2311
weiliang1216weiliang1216it技术咨询顾问IBM
Docker Plugin其实是一种API.包括Plugin的发现,描述,套接字,握手协议等。具体的细节在Docker的官网上有描述,可以参考(不过是英文的)支持的厂家有IBM,EMC,Netapp,Veritas等显示全部

Docker Plugin其实是一种API.
包括Plugin的发现,描述,套接字,握手协议等。
具体的细节在Docker的官网上有描述,可以参考(不过是英文的)
支持的厂家有IBM,EMC,Netapp,Veritas等

收起
IT咨询服务 · 2018-02-05
浏览2274

提问者

lxiaoch
系统安全工程师首创证券

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2018-02-05
  • 关注会员:3 人
  • 问题浏览:4899
  • 最近回答:2018-02-05
  • X社区推广