在 OS X 上,透過 boot2docker 使用 docker 的 data volume
Docker 1.3 在 2014-10-16 釋出。其中,在方便性上最讓人注目的更新,除了 exec 指令以外,就是 boot2docker 在 Mac OS X 資料夾分享功能的改進,本文主要是針對後者去做講述。
前言
由於 Docker 只支持 Linux 作業系統,倘若要於 OS X 使用 Docker ,會使用 boot2docker 這個工具,在 VirtualBox 上建立一個 boot2docker-vm 的映像檔。然後,透過這個 Linux VM 去操作 Docker。
但是,在 Docker 1.3 之前,因為 boot2docker 的映像檔沒有支援 VirtualBox Guest Additions ,所以無法使用 Virtualbox 分享資料夾的功能,將 OS X 的資料夾掛載到虛擬機器裡。因此必須另外自行製作有支援該 VirtualBox Guest Additions 的映像檔(或是下載別人做好的),然後設定 Virtual Box ,把 OS X 的資料夾自動掛載到虛擬機器裡。
不過,隨著 Docker 1.3 釋出,boot2docker 也一併將這個功能引入。使用者可以直接透過 boot2docker 的映像檔使用這功能,而且它會自動把 /Users
資料夾掛載到虛擬機器裡,不需要另外設定!
下圖是在 OS X 上,使用 boot2docker 建立 data volume 的示意圖,希望能幫助各位了解運作原理。
前置作業
在開始前,必須先安裝或更新 docker 和 boot2docker 到 1.30 以上的版本,更新的方法在我前一篇文章 Upgrade Docker and Boot2docker on OS X 已經說明了,可以參考看看,這邊就不多贅述。
接著在 Terminal 下 $ boot2docker ssh 'ls -al /Users'
的指令,確認是否已經成功掛載。如果成功,應該會出現 /Users
的目錄。
1 2 3 4 5 6 |
|
Data Volume
本文利用 ubuntu 的 images 去做建立 data volume 的示範。開始前,再次強調,因為 boot2docker 只有把 OS X 的 /Users
資料夾掛載到虛擬機上,所以 data volume 的 host 資料夾必須在 /Users
底下。
首先
把想建立 data volume 的資料夾與檔案準備好。
1 2 3 4 5 6 7 |
|
接著
建立一個 Container 。
並且,將剛才建立的資料夾,透過 data volume 掛載到 /volume_test
的位置。並且確認是否成功。
1 2 3 4 5 6 7 8 9 10 |
|
最後
在 OS X 和 Container 中,都建立一個檔案,以測試同步與否。
1 2 3 4 5 |
|
看起來是成功了,歡呼囉!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
後記
Data Volume 是 docker 在應用 LXC 時,一個非常重要的功能。在初學 Docker 前,因為不懂 boot2docker 的運作原理,在這功能鬼打牆好多次,都無法成功。後來知道原理後,卻覺得在 OS X 實作這功能太麻煩了,改用 VPS 直接用 Linux 去玩 Docker 。還好,現在 boot2docker 已經做好這件事了,讓我們可以更快樂的在 OS X 上面玩 Docker ,尤其是進行開發啦!(rock)
剛好,這塊是我在 PHPConf 演講 裡,只有稍微帶過的部分,希望這篇文章能補足當時因為時間關係,而沒講明的部分。在之後,我也會把握空閒時間,多寫幾篇有關 Docker 的文章,補足演講的缺口,希望大家會喜歡。 =D
最後,祝各位在 OS X 上,愜意地 Docker 囉!