1. 程式人生 > >基於 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/[email protected]:/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限定範圍是一個卷,不是全域性有效的。