docker数据卷插件
Posted gsls200808
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker数据卷插件相关的知识,希望对你有一定的参考价值。
在docker中,对接外部存储我们通常需要docker的数据卷插件。docker中简要可分为两类 docker卷插件和CSI插件,其中docker卷插件分为两个版本,旧版的传统插件(legacy plugin/non-managed plugin)和新版的托管插件(managed plugin)。下面分章节讨论这几个问题
一、传统插件(legacy plugin/non-managed plugin)
传统插件推出初期得到了各大厂商支持。也有一些开源支持。下面是常见的插件
根据官网整理
插件 | 说明 | 发展现状 |
允许您装载微软Azure的文件存储使用SMB 3.0协议将共享作为卷添挂载到Docker容器。 |
| |
一个开源卷插件,用于在BeeGFS并行文件系统中创建持久卷。 | 2018年停止更新 | |
提供对基于容器的持久存储选项的可扩展集合的访问的卷插件。它支持单主机和多主机Docker环境,具有租户隔离、自动配置、加密、安全删除、快照和QoS等功能。 |
| |
一个开源卷插件,提供多租户、持久性、分布式存储和基于意图的使用。它支持Ceph和NFS协议。 | 2016年停止更新 | |
用于各种存储后端(包括设备映射器和NFS)的卷插件。它是一个用Go语言编写的简单的独立可执行文件,提供了一个框架来支持特定于供应商的扩展,如快照、备份和恢复。 | 2018年停止更新 | |
DigitalOcean的块存储解决方案。通过自动将给定的块存储卷附加到DigitalOcean droplet,并使该卷的内容可用于在该droplet上运行的Docker容器,从而将数据导入Docker生态系统。 |
| |
通过DRBD副本提供高可用存储的卷插件,写入Docker卷的数据将在DRBD节点的群集中复制。 |
| |
为Docker提供多主机可移植卷的卷插件,使您能够运行数据库和其他有状态容器,并在计算机群集中移动它们。 |
| |
作为OpenStack Kuryr项目的一部分开发的卷插件,通过利用OpenStack块存储服务Cinder实现Docker卷插件API。 |
| |
一个能够附加、格式化和挂载谷歌GCE的持久化磁盘卷插件 |
| |
使用GlusterFS为Docker提供多主机卷管理的卷插件。 |
| |
一个用Go语言编写,支持SCP minio Amazon S3协议的插件,它允许按需,版本控制访问您的数据。它是一个开源插件, | 2017年停止更新 | |
支持HPE 3Par和StoreVirtual iSCSI存储阵列的卷插件。 |
| |
可以使用Docker轻松安装和管理Infinit卷的一个卷插件。 |
| |
一个运行挂载ipfs文件系统作为卷的开放源代码卷插件。 |
| |
使用Keywhiz作为中央存储库提供凭据和机密管理的插件。 |
| |
扩展默认的卷插件。它允许您在主机上的任何位置指定装载点,即使通过删除卷命令 docker volume rm删除卷,文件依然存在在主机上。 | 2016年停止更新 | |
一个卷插件,可为NetApp存储产品组合提供与Docker生态系统的直接集成。nDVP产品包支持从存储平台到Docker主机的存储资源调配和管理,并提供了一个强大的框架,可用于在将来添加其他平台。 |
| |
一个卷插件,为NFS 3/4、AWS EFS和CIFS文件系统提供卷管理。 | 2019年停止更新 | |
与Nimble Storage Unified Flash Fabric阵列集成的卷插件。该插件为Docker管理员提取阵列卷功能,以允许自行配置安全的多租户卷和克隆。 |
| |
支持群集的卷插件,可为文件和块存储解决方案提供卷管理。 它实现了一个供应商中立的规范,用于实现CoS、加密和快照等扩展。它有一些基于FUSE、NFS、NBD和EBS的示例驱动程序。 |
| |
一个卷插件,可将任何服务器转变为横向扩展的聚合计算/存储节点,使用可与任何Docker调度程序配合使用的无共享存储后端,跨任何节点提供容器粒度存储和高可用性卷。 | 2016年停止更新 | |
将Docker连接到的卷插件 Quobyte 配额的数据中心文件系统,这是一个通用的可扩展和容错存储平台。 |
| |
一个用Go语言编写的卷插件,为许多平台提供高级存储功能,包括VirtualBox、EC2、Google计算引擎、OpenStack和EMC。 | 2019年停止更新,依赖问题无法安装 | |
支持Virtuozzo Storage分布式云文件系统和ploop设备的卷插件。 |
| |
使客户能够满足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年没更新了。
搜索的弊端是,搜索选项里没有区分传统插件和托管插件,云厂商的插件比较难找,缺乏相关的使用案例。
三、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插件就支持,这个插件已经内置,不需要再安装。
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]
安装nfs客户端
apt install nfs-common
挂载
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数据卷插件的主要内容,如果未能解决你的问题,请参考以下文章