在Docker Toolbox和Boot2Docker中使用Volume Plugins
來自: http://dockone.io/article/1089
【編者的話】本文詳細講解了如何在你的筆記本上完成生產環境的搭建,對于存儲有一個初步的介紹,非常適合自己動手,完成簡單的集群環境搭建。
你曾經嘗試過運行Docker Toolbox或者Volume Plugings嗎?請跟著下面的步驟一步一步運行它們。
Docker Toolbox是一個能讓你在你的電腦上擁有一個完整的Docker運行環境的小的工具集合。對于Docker 1.9來說,通過Toolbox來建立并運行一個完整的容器客戶端或服務端同時利用輕量級的Linux發行版Boot2Docker漸漸的成為了主流的運行方式。下載Toolbox,然后安裝和配置Docker Client、Machine、Compose、Kitematic和VirtualBox。
在Toolbox中,Docker Machine是向VirtualBox提供虛擬機實例的工具。這個虛擬機實例掛載了一個可以從包含的Boot2Docker(B2D)引導的鏡像文件。就其本身而言,B2D是一個可以在幾秒鐘啟動,關注Docker Daemon運行狀況,占用資源少的超輕量級Linux ISO。這可以讓你利用很少的資源通過多個由多個B2D實例組成的集群做測試。
什么是Volume Plugins?這里有一篇Docker的文章介紹了它們。簡單來說它們允許我們在容器之外建立額外的存儲空間,將存儲內容與容器的文件系統分開。這里要著重說明的是最近我們發表了一篇關于VirtualBox和Volume Plugins的文章。與這篇文章的不同是我們今天使用Docker Machine和B2D代替在Vagrant中的CentOS來部署和運行環境。在前一篇文章擴展了一些關于應用發現和volume pre-emption的內容,非常值得閱讀。
對Docker Toolbox感興趣嗎?請繼續閱讀,我們會向你展示在Boot2Docker和VirtualBox中使用Volume Plugins的好處。 感謝 @tianon 和 @akihirosuda 為了支持這個用例而更新到Boot2Docker。
我們將下面的內容拆分成三個部分:安裝、部署和使用。
安裝
第一步是從這里下載并安裝Docker Toolbox。這樣可以確保你擁有一個能夠運行你的容器的運行環境。對Volume Plugin功能的一般要求是Boot2Docker能夠和潛在的VirtualBox實例通過我們下文描述的HTTP SOAP API通信。
為了啟動SOAP Web Service需要在終端運行下面這個命令。命令'vbowebsv'加參數'-b'可以在后臺運行。
$ VBoxManage setproperty websrvauthlibrary null$ /Applications/VirtualBox.app/Contents/MacOS/vboxwebsrv -H 0.0.0.0 -v</pre>
部署
繼續,我們準備從頭開始部署新機器,來確保我們有一個可重復的步驟。請打開一個新的終端窗口輸入以下命令:
$ docker-machine create --driver=virtualbox testing12你可以指定'virtualbox-boot2docker-url'參數來使用預發行版或者特定的boot2docker鏡像。例如,我們在下面使用v.1.10.0-rc4版本。
$ docker-machine create --driver=virtualbox --virtualbox-boot2docker-url=https://github.com/boot2docker/boot2docker/releases/download/v1.10.0-rc4/boot2docker.iso testing12注意:如果你重啟了實例,你需要用下面的步驟重新配置Volume Plugin。
如果你使用了Boot2Docker 1.10+版本,為了確保volume正常工作你需要將補丁放到正確路徑下。運行下面的指令來安裝補丁。如果是Boot2Docker 1.10版,這就不需要了。
$ docker-machine ssh testing12 "wget http://tinycorelinux.net/6.x/x86_64/tcz/udev-extra.tcz && tce-load -i udev-extra.tcz && sudo udevadm trigger"下一步是安裝為容器組織volumes的Volume Plugin。下面的命令是一條簡單的安裝REX-RAY的curl-bash命令。因為REX-RAY是無狀態的、易于安裝、有一個VirtualBox驅動,所以它在Boot2Docker中運行很好。點擊這里獲取關于REX-RAY的更多信息 here 。
$ docker-machine ssh testing12 "curl -sSL https://dl.bintray.com/emccode/rexray/install | sh -"請按照下面的指導新建一個簡單的配置文件。volumePath這個參數必須設定為一個你操作系統(如OS X)上的一個可用的路徑。這個參數定義了最終由VirtualBox在哪創建新的volume files即vmdk。
$ docker-machine ssh testing12 "sudo tee -a /etc/rexray/config.yml << EOFrexray:
storageDrivers:
- virtualbox
volume:
mount:
preempt: false
virtualbox:
endpoint: http://10.0.2.2:18083
tls: false
volumePath: /Users/clintonkitson/VirtualBox Volumes
controllerName: SATA
"</pre>
啟動Volume Plugin服務的最后一步是啟動REX-Ray服務。如果這個服務啟動失敗,你需要利用'sudo rexray start -l debug'來獲取更多的失敗信息。
$ docker-machine ssh testing12 "sudo rexray start"

如上所示,現在你擁有了一個配置了VirtualBox和它的Virtual Media提供額外的volume入口的Volume Plugin的Boot2Docker實例。盡管有一點超出了本篇文章的范圍,但是下一步可以通過配置Docker Swarm來部署集群。我們將通過配置Docker CLI來操控Docker。
使用
$ eval $(docker-machine env testing12)
現在讓我們了解一些Volume的基礎功能。注意下面如何通過'docker volume'這個子命令來利用Docker CLI管理volumes。考慮到我們使用'-opt'標志來設置參數的大小這樣是非常有力的。
$ docker volume create --driver=rexray --name=test100 --opt=size=1
下面這個圖描述了這個過程。在這個示例中VirtualBox Virtual Media被用來創建能夠在VirtualBox VM或其他B2D實例的單獨的volumes。
現在讓我們繼續了解如何運行一個有著穩定volume的容器。下面的圖描述了這個過程。首先Docker Engine向Volume Plugin發出請求。從那里VirtualBox的REX-Ray驅動利用SOAP Web服務來接收消息。這個接口用來完成添加設備到虛擬機、在系統中發現設備、格式化設備和掛載設備到系統整個流程。最后一步是綁定掛載路徑到容器內。
$ docker run -ti --volume-driver=rexray -v test100:/test100 busybox

如果上述過程都成功了,你將看到如下所示的提示信息。最后的一個命令'df /test100'是用來驗證我們掛載的額外volume '/dev/sdb'。
另一個你可以查看的位置是在VirtualBox Manager中你可以看到'SATA Port2'對應我們創建的test100硬盤卷。
如果你對整個生命周期感興趣,可以通過運行'exit'命令來觀察卸載volume和從SATA端口檢測硬盤的過程。
結束語
下一步該做什么?退出,重復,通過管理存儲可以創建一些共享volumes的實例。最棒的是你現在可以輕松的啟動這些輕量級的Boot2Docker實例。通過這你可以你可以使用Docker平臺的其他工具如Swarm。通過上面展示的Volume Plugins,你可以利用容器來部署一些需要存儲的應用。
你還在想什么?你可以像使用服務器那樣使用你的筆記本。
原文鏈接: Volume Plugins with Docker Toolbox and Boot2Docker (翻譯:邢毅勛)
===============================================================
譯者介紹
邢毅勛,亞信研發工程師,熱愛開源好青年。
</div>