docker数据卷插件

在docker中,对接外部存储我们通常需要docker的数据卷插件。docker中简要可分为两类 docker卷插件和CSI插件,其中docker卷插件分为两个版本,旧版的传统插件(legacy plugin/non-managed plugin)和新版的托管插件(managed plugin)。下面分章节讨论这几个问题

一、传统插件(legacy plugin/non-managed plugin)

传统插件推出初期得到了各大厂商支持。也有一些开源支持。下面是常见的插件

根据官网整理

插件

说明

发展现状

Azure File Storage plugin

允许您装载微软Azure的文件存储使用SMB 3.0协议将共享作为卷添挂载到Docker容器。

 

BeeGFS Volume Plugin

一个开源卷插件,用于在BeeGFS并行文件系统中创建持久卷。

2018年停止更新

Blockbridge plugin

提供对基于容器的持久存储选项的可扩展集合的访问的卷插件。它支持单主机和多主机Docker环境,具有租户隔离、自动配置、加密、安全删除、快照和QoS等功能。

 

Contiv Volume Plugin

一个开源卷插件,提供多租户、持久性、分布式存储和基于意图的使用。它支持Ceph和NFS协议。

2016年停止更新

Convoy plugin

用于各种存储后端(包括设备映射器和NFS)的卷插件。它是一个用Go语言编写的简单的独立可执行文件,提供了一个框架来支持特定于供应商的扩展,如快照、备份和恢复。

2018年停止更新,明确停止维护

DigitalOcean Block Storage plugin

DigitalOcean的块存储解决方案。通过自动将给定的块存储卷附加到DigitalOcean droplet,并使该卷的内容可用于在该droplet上运行的Docker容器,从而将数据导入Docker生态系统。

 

DRBD plugin

通过DRBD副本提供高可用存储的卷插件,写入Docker卷的数据将在DRBD节点的群集中复制。

 

Flocker plugin

为Docker提供多主机可移植卷的卷插件,使您能够运行数据库和其他有状态容器,并在计算机群集中移动它们。

 

Fuxi Volume Plugin

作为OpenStack Kuryr项目的一部分开发的卷插件,通过利用OpenStack块存储服务Cinder实现Docker卷插件API。

 

gce-docker plugin

一个能够附加、格式化和挂载谷歌GCE的持久化磁盘卷插件

 

GlusterFS plugin

使用GlusterFS为Docker提供多主机卷管理的卷插件。

 

Horcrux Volume Plugin

一个用Go语言编写,支持SCP minio Amazon S3协议的插件,它允许按需,版本控制访问您的数据。它是一个开源插件,

2017年停止更新

HPE 3Par Volume Plugin

支持HPE 3Par和StoreVirtual iSCSI存储阵列的卷插件。

 

Infinit volume plugin

可以使用Docker轻松安装和管理Infinit卷的一个卷插件。

 

IPFS Volume Plugin

一个运行挂载ipfs文件系统作为卷的开放源代码卷插件。

 

Keywhiz plugin

使用Keywhiz作为中央存储库提供凭据和机密管理的插件。

 

Local Persist Plugin

扩展默认的卷插件。它允许您在主机上的任何位置指定装载点,即使通过删除卷命令 docker volume rm删除卷,文件依然存在在主机上。

2016年停止更新

NetApp Plugin (nDVP)

一个卷插件,可为NetApp存储产品组合提供与Docker生态系统的直接集成。nDVP产品包支持从存储平台到Docker主机的存储资源调配和管理,并提供了一个强大的框架,可用于在将来添加其他平台。

 

Netshare plugin

一个卷插件,为NFS 3/4、AWS EFS和CIFS文件系统提供卷管理。

2019年停止更新

Nimble Storage Volume Plugin

与Nimble Storage Unified Flash Fabric阵列集成的卷插件。该插件为Docker管理员提取阵列卷功能,以允许自行配置安全的多租户卷和克隆。

 

OpenStorage Plugin

支持群集的卷插件,可为文件和块存储解决方案提供卷管理。 它实现了一个供应商中立的规范,用于实现CoS、加密和快照等扩展。它有一些基于FUSE、NFS、NBD和EBS的示例驱动程序。

 

Portworx Volume Plugin

一个卷插件,可将任何服务器转变为横向扩展的聚合计算/存储节点,使用可与任何Docker调度程序配合使用的无共享存储后端,跨任何节点提供容器粒度存储和高可用性卷。

2016年停止更新

Quobyte Volume Plugin

将Docker连接到的卷插件 Quobyte 配额的数据中心文件系统,这是一个通用的可扩展和容错存储平台。

 

REX-Ray plugin

一个用Go语言编写的卷插件,为许多平台提供高级存储功能,包括VirtualBox、EC2、Google计算引擎、OpenStack和EMC。

2019年停止更新,依赖问题无法安装

Virtuozzo Storage and Ploop plugin

支持Virtuozzo Storage分布式云文件系统和ploop设备的卷插件。

 

VMware vSphere Storage Plugin

使客户能够满足vSphere环境中Docker容器的持久存储要求。

 

在自建集群里,一般考虑支持的存储协议为nfs、s3、cephfs

上述符合条件的开源项目如Rex-Ray、Netshare几乎都停止更新好几年了。现在再用这些插件也不太现实。

二、托管插件(managed plugin)

官网对于这个新插件的介绍非常简陋,实例里的插件也就只有vieux/sshfs和sample-volume-plugin两个无关痛痒的插件

从dockerhub搜索nfs插件:https://hub.docker.com/search?q=nfs&type=plugin

结果第一条为trajano/nfs-volume-plugin 这是一个托管插件。star数比较高,不过已经3年没更新了。

搜索的弊端是,搜索选项里没有区分传统插件和托管插件,云厂商的插件比较难找,缺乏相关的使用案例。

插件

说明

发展现状

vieux/sshfs

支持协议sshfs

rclone/docker-volume-rclone

支持Amazon S3 FTP HDFS SFTP SMB WebDAV等

仍在维护

sapk/plugin-rclone

支持Amazon S3 FTP HDFS SFTP SMB WebDAV等

仍在维护

三、CSI插件

目前docker 23.0.0开始支持CSI插件,目前功能还没有完善。目前几乎还不支持docker swarm集群使用CSI插件。

相关的使用demo可以参考:https://github.com/olljanat/csi-plugins-for-docker-swarm

传统插件、托管插件和CSI插件的安装命令都是


docker plugin install [插件tag]

四、nfs挂载和使用

在自建集群中,nfs是最常用的挂载方式。

目前docker是支持nfs卷的挂载和使用的,默认的local driver插件就支持,这个插件已经内置,不需要再安装。注意这个内置的插件不是传统插件里的Local Persist Plugin,传统插件里的Local Persist Plugin比内置的local driver功能强大。

1.docker volume create方式

创建命令


docker volume create --driver local \
  --opt type=nfs \
  --opt o=addr=[ip-address],rw \
  --opt device=:[path-to-directory] \
  [volume-name]

如果需要指定版本可通过"volume-opt=o=addr=10.0.0.10,rw,nfsvers=4,async"指定。

安装nfs客户端


#ubuntu 执行
sudo apt install nfs-common
#centos 执行
yum install -y nfs-utils

挂载卷


docker run -d -it \
  --name [container-name] \
  --mount source=[volume-name],target=[mount-point]\
  [image-name]

2.yaml文件方式

编辑docker-compose.yml


version: "3.2"
services:
  [service-name]:
    image: [docker-image]
    ports:
      - "[port]:[port]"
    volumes:
      - type: volume
        source: [volume-name]
        target: /nfs
        volume:
          nocopy: true
volumes:
  [volume-name]:
    driver_opts:
      type: "nfs"
      o: "addr=[ip-address],nolock,soft,rw"
      device: ":[path-to-directory]"

运行


docker-compose up -d

五、smbcifs卷创建

跟nfs类型类似,dockercreate命令为


docker volume create \
    --driver local \
    --opt type=cifs \
    --opt device=//uxxxxx.your-server.de/backup \
    --opt o=addr=uxxxxx.your-server.de,username=uxxxxxxx,password=*****,file_mode=0777,dir_mode=0777 \
    --name cif-volume

如果是dockercompose,可以在yml中配置

version: "2.1"
services:
  wxy:
    image: onething1/wxedge:latest
    container_name: wxy
    restart: always
    privileged: true
    network_mode: "host"
    tmpfs:
      - /tmp
      - /run
    volumes:
      #引用数据卷
      - cifs-volume:/storage:rw
volumes:
  cifs-volume:
    driver: local
    driver_opts:
      type: cifs 
      device: //192.168.11.16/share/wxedge_storage
      o: "user=Admin,password=Since@1998"

由于协议文件名缺陷,不推荐使用smb协议作为存储。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值