在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: volumesource: [volume-name]target: /nfsvolume: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

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

docker数据卷插件相关推荐

  1. Docker(七)--Docker数据卷管理及插件

    一.Docker 数据卷管理 在实际使用过程中,我们需要把容器和数据进行隔离,因为容器在使用过程中可能随时要进行销毁,但是数据要保留下来,所以我们要做数据的持久化. 为什么要用数据卷 docker分层 ...

  2. Docker 数据卷之进阶篇

    Docker 数据卷之进阶篇 原文:Docker 数据卷之进阶篇 笔者在<Docker 基础 : 数据管理>一文中介绍了 docker 数据卷(volume) 的基本用法.随着使用的深入, ...

  3. docker 数据卷 volume

    集群直接部署tomcat项目,可能项目在不同的服务器上,如何实现不同服务器上面的项目同步,可是使用docker数据卷的形式 首先我们来认识最为基础的docker数据卷 如何创建一个数据卷: 1.创建 ...

  4. Docker数据卷管理

    前言 docker数据卷 数据卷是目录或文件,不是块设备. 容器可以读写volume中的数据. volume数据可以持久化保存. docker提供了两种卷: bind mount 是将主机上的目录或文 ...

  5. Docker学习(六)-----Docker数据卷

    十.Docker数据卷 问题:通过镜像创建一个容器,容器一旦被销毁,则容器内的数据将一并被删除,但有些情况下,通过服务器上传的图片出会丢失.容器中的数据不是持久化状态的. 那有没有一种独立于容器,提供 ...

  6. 【2】Docker数据卷

    Docker数据卷 关键词 docker容器数据卷可以看成使我们生活中常用的u盘 cp命令:宿主机和容器互相拷贝数据(操作比较麻烦) -v 命令:宿主机和容器数据同步 一.测试案例 1.1 使用doc ...

  7. Docker学习总结(68)—— Docker 数据卷相关知识总结

    前言 在生产环境中使用 Docker,要想实现数据的持久化(所谓 Docker 的数据持久化即数据不随着 Container 的结束而结束)或者需要在多个容器之间进行数据共享,需要将数据从宿主机挂载到 ...

  8. docker数据卷容器卷_如何删除Docker映像,容器和卷

    docker数据卷容器卷 Docker备忘单 (A Docker Cheat Sheet) 介绍 (Introduction) Docker makes it easy to wrap your ap ...

  9. Docker数据卷—Volumes

    一.引入Docker数据卷的必然性 为了实现容器与主机之间.容器与容器之间共享文件,容器中数据的持久化,将容器中的数据备份.迁移.恢复等,Docker加入了数据卷(volumes)机制.简单的讲,就是 ...

最新文章

  1. C语言 string.h 中函数的实现
  2. 【产品功能】价格信息支持下载
  3. Uart接口的详细解释
  4. linux-搜索查找类
  5. 《对Java的分析总结》-Java中的垃圾回收机制中的标记-清除算法 (五)
  6. android 加载系统私有库,Android 搭建私有maven仓库及上传项目
  7. scrapy框架系列 (2) 一个简单案例
  8. android 左滑跳转_使用ViewPager实现左右循环滑动及滑动跳转
  9. 计量经济学第六版伍德里奇计算机答案,求伍德里奇计量经济学答案第六版
  10. Unity设置鼠标指针图片
  11. CHI到底是干嘛的 保证cache一致性 2.3 snoop
  12. 亲属卡额度是什么意思_2019信用卡权益总结之十二:附属卡
  13. php校花评比排名,投票|佛山“校花”颜值大比拼,快来选出你最爱的!
  14. (java中的super)不会飞还能叫Superman吗
  15. 练习:身高出现的频次
  16. 【C#】KPM算法解决字符串匹配问题
  17. numpy的squeeze函数
  18. java中实现方法重试机制
  19. QComboBox自定义(一)--类似QQ登陆界面的下拉框
  20. JAVA获取优酷、土豆、酷6等视频实例

热门文章

  1. php做万年历思路,使用PHP制作一个简单的万年历
  2. html上拉回弹效果,实现页面回弹滑动效果
  3. 【大一】一名普通大一学生对未来的简单的规划和想法
  4. 【嵌入式C语言】4.指针
  5. 解决Apache+PHP服务器提示HTTP 500问题
  6. 雷电模拟器python编程接口_python:编写登陆接口(day 1)
  7. 学习笔记 | PPT演讲
  8. python古诗词风格分析_2017年高考古诗词鉴赏技巧:分析语言风格题解题模式
  9. Linux文件管理-压缩和解压
  10. 测试小故事75:角色