基於 rbd nbd 的支援搶鎖的 rbd docker volume plugin
阿新 • • 發佈:2018-12-31
1.注意
本plugin的master分支和 Luminous 一起配合,不需要下面的patch
本plugin 的 old-volume-helpers和jewel(10.2.2)一起測試過,需要apply 下面的patch:
ceph-patch/rbd-nbd-ceph-10.2.2.patch2. 編譯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 "# 6. --volume-driver 解釋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
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限定範圍是一個卷,不是全域性有效的。