Docker——容器卷管理

概述

为了能够实现容器数据的持久化,Docker提出了卷(volume)的概念。卷就是目录或者文件,由docker Daemon挂载到容器中,卷中的数据在容器被删除之后还是可以访问,从而实现持久化。

Docker提供了两种管理数据的方式,数据卷和数据卷容器。

基础管理

  • 数据卷
    在启动镜像的时候,通过-v标签来创建新卷或者挂载已有的数据卷。
  • 容器卷
    通过create命令创建新的容器卷,然后在启动应用镜像时,使用-volume-from来挂在容器卷。

Docker卷管理的问题:

  • 只支持本地数据卷,不能挂在远程服务器的卷。
  • 缺乏对数据卷生命周期的有效关系,例如不能使用Docker命令查看系统上的所有卷。会浪费空间。

卷插件

通过插件可以解决Docker卷自身的一些不足。

卷插件的工作原理:
Docker定义了一套标准的卷插件REST API,Docker自身实现了这套API的客户端,它会按照步骤发现、激活插件。当Docker需要完成创建、挂载、删除等操作的时候,它会向插件发送对应的REST API,然后由插件完成真在的数据底层工作。

在这里插入图片描述
本质上,卷插件就是一个服务器,接收Docker的命令,名给予相应的操作。因为它们通过REST API实现的,所以,可以进行远程主机的卷管理,也很灵活方便。

卷插件的API接口:

  • Plugin.Active:用于激活一个插件,是Docker与卷插件的握手报文。
  • VolumeDriver.Create:创建一个卷,Docker会发送卷的名称和参数给插件,然后插件在本地创建一个卷。
  • VolumeDriver.Mount:挂在一个卷到本机,Docker把卷的名称和参数发给插件,插件会返回一个本地路径给Docker,这个路径就是卷的位置,然后Docker就会将这个路径挂载到容器。
  • VolumeDriver.Path:一个卷创建成功之后,Docker调用这个API来获取卷的路径。
  • VolumeDriver.Unmount:卸载卷,Docker告诉插件这个卷不用了,插件就可能做相应的清理工作。
  • VolumeDriver.Remove:删掉特定的卷。

整个卷插件体系是通过卷的名称来管理的。

已有的卷插件:

  • Convoy:一种基于本地存储的单机版插件。
  • FLocker:支持多种后台驱动,包括OpenStack等,不支持卷共享,单点问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值