一、环境说明
二、环境构建rbd-docker-plugin 需要手动编译,Go 的开发环境构建这里不再说明。 go get github.com/yp-engineering/rbd-docker-plugin 完成之后编译的二进制路径为 $GOPATH/bin/rbd-docker-plugin,拷贝到相应测试主机即可。 安装必要的组件: yum install librados2-devel librbd1-devel ceph-common xfsprogs -y 如果你有现成的 ceph 环境直接测试即可,这里我使用 docker 创建本地 ceph 测试环境: docker run -d --net=host -e MON_IP=当前主机IP -e CEPH_NETWORK=当前主机所在网段 -v /etc/ceph:/etc/ceph -v /var/lib/ceph/:/var/lib/ceph ceph/demo
三、运行 rbd docker plugin# ceph osd pool create docker 128 pool 'docker' created # ceph auth get-or-create client.docker mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=docker' -o /etc/ceph/ceph.client.docker.keyring # RBD_DOCKER_PLUGIN_DEBUG=1 rbd-docker-plugin --create --user=docker --pool=docker rbd-volume-plugin: 2016/02/17 10:58:00 main.go:70: INFO: Setting up Ceph Driver for PluginID=rbd, cluster=, user=docker, pool=docker, mount=/var/lib/docker-volumes, config= rbd-volume-plugin: 2016/02/17 10:58:00 driver.go:83: INFO: newCephRBDVolumeDriver: setting base mount dir=/var/lib/docker-volumes/rbd rbd-volume-plugin: 2016/02/17 10:58:00 driver.go:496: INFO: connecting to Ceph and default pool context rbd-volume-plugin: 2016/02/17 10:58:00 main.go:82: INFO: Creating Docker VolumeDriver Handler rbd-volume-plugin: 2016/02/17 10:58:00 main.go:86: INFO: Opening Socket for Docker to connect: /run/docker/plugins/rbd.sock ... ...
# RBD_DOCKER_PLUGIN_DEBUG=1 rbd-docker-plugin --create 四、docker 挂载 rbd volume 测试# docker run --volume-driver=rbd --volume foo:/mnt/foo -it busybox sh / # df -Th | grep -w '/mnt/foo' # 显示设备 rbd0 挂载在 /mnt/foo 命令下,挂载成功 /dev/rbd0 xfs 20.0G 32.6M 20.0G 0% /mnt/foo rbd docker plugin driver 会做如下操作(前提是当前镜像不存在):
如果容器启动没有添加 --rm 选择则容器退出后,镜像依然可以被其它容器复用(除非 docker run 的时候添加了 --rm 选项并且 rbd-docker-plugin 添加了 --remove 选项才会执行删除操作,否则如果只是添加了 --rm 的选项,plugin driver 也只是 rename image 而并不是直接 rm)。
五、参考文档
|