基于 rbd nbd 的支持抢锁的 rbd docker volume plugin

基于 rbd nbd 的支持抢锁的 rbd docker volume plugin

1.注意

本plugin的master分支和 Luminous 一起配合,不需要下面的patch

本plugin 的 old-volume-helpers和jewel(10.2.2)一起测试过,需要apply 下面的patch:

ceph-patch/rbd-nbd-ceph-10.2.2.patch

2. 编译rpm包

$ git clone https://github.com/yanghonggang/rbd-docker-plugin-nbd.git rbd-docker-plugin
$ cd rbd-docker-plugin
$ make rpms
...
$ls rpmbuild/RPMS/x86_64/
rbd-docker-plugin-1.5.2-1.el7.centos.x86_64.rpm  rbd-docker-plugin-debuginfo-1.5.2-1.el7.centos.x86_64.rpm

3. 安装使用

rpm -ivh *.rpm
systemctl enable
systemctl start rbd-docker-plugin

需要重新启动使用了rbd卷的container 或者重启docker daemon

4. docker container 创建参数说明

# docker run --name disk22 --volume-driver rbd -v mpool/disk2@1000:/root/hehe -it anna /bin/bash

--volume-driver rbd // 表示要使用 rbd-docker-plugin作为volume的后端
-v 中 mpool 为用于创建 image 的 ceph pool
     disk2为image的名字
     1000为1000MB
/root/hehe 为container内部的映射目录

5.所有可配置条目

# rbd-docker-plugin -h
Usage of rbd-docker-plugin:
 -cluster string
    xtao ceph cluster (default "xtao")
 -config string
    Xtao ceph cluster config (default "/etc/ceph/xtao.conf")
 -create
    Can auto Create RBD Images (default true)
 -debug
    Debug output
 -fs string
    FS type for the created RBD Image (must be xfs now) (default "xfs")
 -go-ceph
    Use go-ceph library
 -logdir string
    Logfile directory (default "/var/log")
 -mount string
    Mount directory for volumes on host (default "/var/lib/docker-volumes")
 -name string
    Docker plugin name for use on --volume-driver option (default "rbd")
 -plugins string
    Docker plugin directory for socket (default "/run/docker/plugins")
 -pool string
    Default Ceph Pool for RBD operations (default "rbd")
 -remove value
    Action to take on Remove: ignore, delete or rename (default ignore)
 -size int
    RBD Image size to Create (in MB) (default: 20480=20GB) (default 20480)
 -use-nbd
    Use rbd-nbd to map RBD Image (default true)
 -user string
    Ceph user (default "admin")
 -version
    Print version
# 6. --volume-driver 解释


1. --volume-driver 影响所有 docker run/create 命令行中的 volume 也 影 响 image 的 Dockerfile 的 VOLUME指定的目录/卷
    简而言之,该参数是全局有效的。用于用户想用自己的volume-plugin完全 替 代docker 的默认 local driver的场景。
2. 如果想单独指定卷的driver有两种方法:
    - 命令行上依旧使用 --volume-driver rbd,但是Dockerfile中不能指定任 何VOLUME 命令
    -  docker run -v $(docker volume create --driver=rbd):/some/path <my-image>
       这里的 --driver限定范围是一个卷,不是全局有效的。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值