標籤:flocker docker plugin volume
..
聲明:
本部落格歡迎轉寄,但請保留原作者資訊!
部落格地址:http://blog.csdn.net/halcyonbaby
新浪微博:@尋覓神跡
內容系本人學習、研究和總結,如有雷同,實屬榮幸!
====================================
Docker的Plugin機制
Flocker目前採用了Docker的plugin機制,從而與Docker對接。這裡先總結下Docker的Plugin
機制。
Docker1.7開始以experiment特性的方式提供了volume/network外掛程式機制。
volume外掛程式機制,主要便於第三方的儲存管理能夠與docker對接,從而為有狀態的應用提供
(比如database、key-value store)資料卷。
使用者使用方法如下:
$ docker run -v volume_name:/data --volume-driver=flocker your_stateful_container
Driver需要實現以下介面:
/VolumeDriver.Create/VolumeDriver.Remove/VolumeDriver.Mount/VolumeDriver.Path/VolumeDriver.Unmount
Plugin還需要一個handshake API。在Docker daemon初次使用時,會通過該API啟用Plugin。
/Plugin.Activate
Plugin發現:
Plugin目錄下會有如下三種檔案:
.sock unix socket file.spec 文字檔,包含一個URL,例如“unix:///other.sock".json 文字檔,包含一個json定義。
.sock檔案通常在/run/docker/plugins下放置,spec、json檔案則在/etc/docker/plugins或者
/usr/lib/docker/plugins下。
Docker會先嘗試在/run/docker/plugins下尋找sock檔案,如果找不到則會在/etd/docker/plugins
或者/usr/lib/docker/plugins下找spec、json檔案。
json檔案的例子:
{ "Name": "plugin-example", "Addr": "https://example.com/docker/plugin", "TLSConfig": { "InsecureSkipVerify": false, "CAFile": "/usr/shared/docker/certs/example-ca.pem", "CertFile": "/usr/shared/docker/certs/example-cert.pem", "KeyFile": "/usr/shared/docker/certs/example-key.pem", }}
參考:
https://github.com/docker/docker/tree/master/docs/extend
Flocker的Docker plugin實現
是與容器配合的Flocker架構。Flocker volume manager由Control service和Flocker agent組成,由Docker觸發進行控制。
Docker使用者可以這樣使用:
docker run -v name:path --volume-driver=flocker
Flocker的外掛程式也很簡單,總共不過200行。
https://github.com/ClusterHQ/flocker-docker-plugin/blob/master/flockerdockerplugin
def getAdapter(): root = resource.Resource() root.putChild("Plugin.Activate", HandshakeResource()) root.putChild("VolumeDriver.Create", CreateResource()) root.putChild("VolumeDriver.Remove", RemoveResource()) root.putChild("VolumeDriver.Path", PathResource()) root.putChild("VolumeDriver.Mount", MountResource()) root.putChild("VolumeDriver.Unmount", UnmountResource()) site = server.Site(root) return site
其他
看完之後,感覺nova-docker未來也可以考慮使用類似於Flocker的方式與Cinder對接。
從而為Docker提供豐富的儲存能力。
唯一欠缺的是,目前Docker不支援運行時掛卷、卸卷操作。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Flocker初探(2)