• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > Flocker浅析与Docker插件(3),flockerdocker

Flocker浅析与Docker插件(3),flockerdocker

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含docker swarm flocker,flocker,meet the flocker,particle flocker,docker插件等服务器相关知识,网友希望可以进行参考

Flocker浅析与Docker插件(3),flockerdocker


..
声明:
本博客欢迎转发,但请保留原作者信息!
博客地址:http://blog.csdn.net/halcyonbaby
新浪微博:@寻觅神迹

内容系本人学习、研究和总结,如有雷同,实属荣幸!


写一个简单的docker volume Plugin

该插件只是个例子,卷实际上是host上的目录,但是由插件进行管理。
代码中使用了calavera写的docker volume plugin框架。
需要完成的只是上章所说的docker volume plugin的5个接口。
样例代码-创建一个叫fakeVol的plugin


package main

import (
        "flag"
        "fmt"
        "log"
        "os"
        "path/filepath"
        "sync"

        "github.com/calavera/dkvolume"
)

var (
        root = flag.String("root", "/var/lib/docker/fakevol", "fake volumes root directory")
)

type fakeVolDriver struct {
        root    string
        m       *sync.Mutex
        volumes map[string]string
}

func newFakeVolDriver(root string) fakeVolDriver {
        d := fakeVolDriver{
                root:    root,
                volumes: map[string]string{},
                m:       &sync.Mutex{},
        }
        return d
}

func (d fakeVolDriver) Create(r dkvolume.Request) dkvolume.Response {
        log.Printf("Creating volume %s\n", r.Name)
        d.m.Lock()
        defer d.m.Unlock()
        volPath := filepath.Join(d.root, r.Name)
        if _, err := os.Stat(volPath); os.IsNotExist(err) {
                os.Mkdir(volPath, 0755)
                d.volumes[r.Name] = volPath
        }

        return dkvolume.Response{}
}

func (d fakeVolDriver) Remove(r dkvolume.Request) dkvolume.Response {
        log.Printf("Removing volume %s\n", r.Name)
        d.m.Lock()
        defer d.m.Unlock()
        if _, err := os.Stat(d.volumes[r.Name]); os.IsNotExist(err) {
                os.Remove(d.volumes[r.Name])
                delete(d.volumes, r.Name)
        }

        return dkvolume.Response{}
}

func (d fakeVolDriver) Path(r dkvolume.Request) dkvolume.Response {
        return dkvolume.Response{Mountpoint: d.volumes[r.Name]}
}

func (d fakeVolDriver) Mount(r dkvolume.Request) dkvolume.Response {
        return dkvolume.Response{Mountpoint: d.volumes[r.Name]}
}

func (d fakeVolDriver) Unmount(r dkvolume.Request) dkvolume.Response {
        return dkvolume.Response{}
}

func main() {
        flag.Parse()

        d := newFakeVolDriver(*root)
        h := dkvolume.NewHandler(d)
        fmt.Println(h.ServeUnix("root", "fakeVol"))
}

运行、使用plugin管理容器的volume

备注:
由于volume plugin是docker的实验特性。因此正式的release中并未包含。需要使用编译了实验特性的版本。
可以在https://experimental.docker.com/builds/Linux/x86_64/docker-latest下载。


[root@localhost fake-volume]# ./fake-volume
[root@localhost fake-volume]# ls /run/docker/plugins/fakeVol.sock
/run/docker/plugins/fakeVol.sock
[root@localhost temp]# docker run -it --rm  -v test:/test --volume-driver=fakeVol busybox:latest /bin/sh
/ # ls /test/
/ # touch /test/a.txt
/ # echo "hello docker plugin" > /test/a.txt
[root@localhost calavera]# cat /var/lib/docker/fakevol/test/a.txt
hello docker plugin

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Flocker浅析与Docker插件(3),flockerdocker

相关文章

  • 1006-hive的自定义UDF函数,1006-hiveudf函数
  • Map/Reduce原理
  • 在Java程序中调用Salesforce REST API,salesforcerest
  • redis学习笔记之pipeline,redispipeline
  • MapReduce处理表的自连接,mapreduce处理表
  • 安装配置openstack 中的 Open vSwitch (OVS) service,openstackvswitch
  • RegionServer功能职责,regionserver职责
  • hadoop集群搭建之NFS服务,hadoop集群nfs
  • Name node is in safe mode.错误处理方式 hadoop,nodehadoop
  • kernel interrupt,interrupt

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • myeclipse2013 建的web项目没有web.xml,myeclipse中web.xml
    • 我的hadoop2.4安装过程,hadoop2.4安装过程
    • Hadoop之——数据类型,hadoop数据类型
    • The method getContextPath() from the type HttpServletRequest refers to the miss,getcontextpath
    • docker compose自定义网络实现固定容器ip地址
    • 超人学院Hadoop大数据资源分享,超人学院hadoop分享
    • hive schema详解,hiveschema
    • HDFS概述---namenode的设计详解,hdfs概述---namenode
    • 【解决】hive动态增加partitions不能超过100的问题,hivepartitions
    • hadoop 运行jar文件,

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有