帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:  plugin  Drive  DOCK  DOC  Docker  CEPH  CEP  
Ceph RBD docker volume driver plugin.

  • 源代码名称:rbd-docker-plugin
  • 源代码网址:http://www.github.com/yp-engineering/rbd-docker-plugin
  • rbd-docker-plugin源代码文档
  • rbd-docker-plugin源代码下载
  • Git URL:
    git://www.github.com/yp-engineering/rbd-docker-plugin.git
  • Git Clone代码到本地:
    git clone http://www.github.com/yp-engineering/rbd-docker-plugin
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/yp-engineering/rbd-docker-plugin
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • 简单的Ceph RBD Docker VolumeDriver插件
    • 用例:单个 Docker 容器的持久存储

      • 一次只能由一个 Docker 容器使用一个RBD图像
    • 插件是一个独立于 Docker 守护进程的进程

      • 插件可以为单个Ceph用户配置
      • 为不同的配置( ceph用户,默认池,默认大小) 运行多个插件实例
      • 可选:通过卷 NAME 传递额外的配置来覆盖默认池和创建大小:
        • Docker 运行 --volume-driver rbd -v poolname/imagename@size:/mnt/disk1.。
    • 插件支持所有 Docker VolumeDriver插件API命令( 音量插件 API v1.12.x )

      • 创建- 可以在特定大小的池中提供 Ceph RBD图像
        • --create 布尔标志控制( 默认 false )
        • 来自 --size 标志的默认大小( 默认 20480 = 20 )
      • 挂载- 锁定。映射RBD映像到主机系统
      • 卸载- 取消挂载,取消取消并取消对RBD映像的请求
      • 删除- 在请求时删除( 销毁) RBD图像
        • 只为 docker run --rm -v.. . 或者 docker rm -v.. .
        • 由插件标志 --remove 控制的操作,它可以是以下三个值之一:
          • ''忽略''忽略删除 ceph rbd卷的调用( 默认)
          • ''重命名''- 将使图像被重命名为 zz 前缀,以便以后进行删除
          • ''删除''实际上将删除 ceph rbd图像( 破坏性)
      • 获取。列出可以访问RBD卷的信息

    插件插件设置

    插件是独立进程,在已知位置放置套接字文件;需要在 Docker 之前启动。 在默认情况下,它不是守护进程,因此如果你在后台需要它,那么使用普通的shell 进程控制( & ) 。

    驱动程序有一个 NAME,用于 NAME,用于通过 --volume-driver=name Docker CLI选项引用插件,允许不同的默认配置。

    对于默认 NAME的"rbd",请使用 Docker 中的--volume-driver rbd

    常规生成/运行要求:

    • 用于操作 Ceph RBD图像的/usr/bin/rbd
    • 创建fs的/usr/sbin/mkfs.xfs ( 默认 fstype )
    • /usr/bin/mount 和/usr/bin/umount
    • golang/dep工具

    使用 Docker 1.12在 Centos 7.1主机上测试 0.94.2版

    构建 rbd-docker-plugin

    克隆 repo 并使用生成文件:

    make

    获取 dist/rbd-docker-plugin 二进制文件。

    或者等效的shell 命令:

    go get -u github.com/golang/dep/cmd/dep
    dep ensure
    go build -v -x -o dist/rbd-docker-plugin. 

    如果任何依赖项都没有改变(),你可以能会得到以下消息:?

    go get github.com/porcupie/rbd-docker-plugin

    命令行命令行选项

    Usage of./rbd-docker-plugin:
     --ceph-user="admin": Ceph user to use for RBD
     --create=false: Can auto Create RBD Images (default: false)
     --fs="xfs": FS type for the created RBD Image (must have mkfs.type)
     --logdir="/var/log": Logfile directory for RBD Docker Plugin
     --mount="/var/lib/docker/volumes": Mount directory for volumes on host
     --name="rbd": Docker plugin name for use on --volume-driver option
     --pool="rbd": Default Ceph Pool for RBD operations
     --remove=false: Can Remove (destroy) RBD Images (default: false, volume will be renamed zz_name)
     --size=20480: RBD Image size to Create (in MB) (default: 20480=20GB

    启动插件

    从默认选项开始:

    • 套接字 name=rbd,pool=rbd,user=admin,logfile=/var/log/rbd-docker-plugin.log

    • 没有创建或者删除卷

      rbd-docker-plugin

    调试:将日志发送到 STDERR:

    sudo RBD_DOCKER_PLUGIN_DEBUG=1 rbd-docker-plugin

    使用不同的套接字 NAME 和Ceph池

    sudo rbd-docker-plugin --name rbd2 --pool liverpool
    # docker run --volume-driver rbd2 -v.. .

    要允许创建新的RBD图像,请执行以下操作:

    sudo rbd-docker-plugin --create

    若要允许创建和删除:

    sudo rbd-docker-plugin --create --remove

    那么你就可以通过 Docker CLI来使用RBD卷了:

    docker run --volume-driver rbd -v.. .

    测试

    可以使用 Docker 引擎 1.8 + 进行测试,该引擎具有 --volume-driver 支持。

    或者,你可以将json发布到套接字以手动测试。 如果curl是新的( v7.40 + ),那么可以使用 --unix-socket 选项和语法。 你还可以使用这里版本的来替代:

    go get github.com/Soulou/curl-unix-socket

    一旦你有了你可以发布json到插件:

    % sudo curl-unix-socket -v -X POST unix:///run/docker/plugins/rbd.sock:/Plugin.Activate
    > POST/Plugin.Activate HTTP/1.1
    > Socket:/run/docker/plugins/rbd.sock
    > Content-Length: 0
    >
     <HTTP/1.1 200 OK
     <Content-Type: appplication/vnd.docker.plugins.v1+json
     <Date: Tue, 28 Jul 2015 18:52:11 GMT
     <Content-Length: 33
    {"Implements": ["VolumeDriver"]}
    # Plugin started without --create:
    % sudo curl-unix-socket -v -X POST -d '{"Name":"testimage"}' unix:///run/docker/plugins/rbd.sock:/VolumeDriver.Create
    > POST/VolumeDriver.Create HTTP/1.1
    > Socket:/run/docker/plugins/rbd.sock
    > Content-Length: 21
    >
     <HTTP/1.1 500 Internal Server Error
     <Content-Length: 62
     <Content-Type: appplication/vnd.docker.plugins.v1+json
     <Date: Tue, 28 Jul 2015 18:53:20 GMT
    {"Mountpoint":"","Err":"Ceph RBD Image not found: testimage"}
    # Plugin started --create turned on will create unknown image:
    % sudo curl-unix-socket -v -X POST -d '{"Name":"testimage"}' unix:///run/docker/plugins/rbd.sock:/VolumeDriver.Create
    > POST/VolumeDriver.Create HTTP/1.1
    > Socket:/run/docker/plugins/rbd.sock
    > Content-Length: 21
    >
     <HTTP/1.1 200 OK
     <Content-Length: 27
     <Content-Type: appplication/vnd.docker.plugins.v1+json
     <Date: Fri, 14 Aug 2015 19:47:35 GMT
    {"Mountpoint":"","Err":""}

    示例

    如果你需要应用程序容器的持久存储,那么可以使用Rados块设备( RBD ) 作为持久磁盘。

    你可以先提供块设备和 文件系统,或者允许一个足够配置的插件实例为你创建它。 这个插件可以用 XFS 文件系统 创建RBD图像。

    • ( 可选) 自己置备RBD存储器
    • sudo rbd create --size 1024 foo
    • sudo rbd map foo =>/dev/rbd1
    • sudo mkfs.xfs/dev/rbd1
    • sudo rbd unmap/dev/rbd1
    • 或者使用 --create 选项标志运行 RBD Docker 插件,只需请求一个
    • sudo rbd-docker-plugin --create
    • 请求和使用卷
    • docker run --volume-driver=rbd --volume foo:/mnt/foo -it ubuntu/bin/bash
    • 卷"foo"将被锁定,映射并安装到主机并绑定到 /mnt/foo 上的容器
    • 当容器退出时,卷将被卸载,未映射和解锁
    • 你可以使用以下语法来控制RBD池和初始大小:
      • foo@1024 => pool=rbd ( 默认值),image=foo,大小 1 GB
      • 深/foo => pool=deep,image=foo和默认 --size ( 20GB )
      • 深/foo@1024 => pool=deep,image=foo,大小 1 GB
      • 池必须已经存在

    • 创建RBD快照: sudo rbd snap create --image foo --snap foosnap
    • 调整RBD音量:
      • 设置最大大小: sudo rbd resize --size 2048 --image foo
      • 映射/挂载然后修复 XFS: sudo xfs_growfs -d/mnt/foo

    链接

    封装

    使用 tpkg插件分发和指定本机软件包依赖项。 使用 Centos 7.1和 yum/rpm软件包测试。

    许可证

    这里项目正在使用MIT许可证( MIT ),请参阅许可证文件。

    版权所有( c ) 2015有限责任公司



    文章标签:plugin  DOC  Drive  Docker  DOCK    CEP  CEPH  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语