使用 Docker Volume 的功能 (二)

使用 Docker Volume 的功能 (二)

上篇已經介紹瞭如何使用在執行docker run 指令,把Volume Mount 起來使得Container 的文件夾路徑可以Mapping 到實體主機的文件夾路徑,今天要介紹的部份是透過撰寫Dockerfile 的方式使用Volume 的指令,這樣使用者就不用在執行docker run 指令時指定-v 參數,就可以把Volume Mount 起來。

另外今天還會 Demo 如何讓 Container 之間的資料共享

Example1:

撰寫一個Dockerfile 使用VOLUME 指令,把Docker的Image Build起來,然後啟動Docker Container,把資料寫進在Docker Container裡面,最後使用docker inspect 指令,找到Mapping 到實體主機的文件夾路徑,確認是否有看到之前寫在Container 裡面的檔案。

  1. Dockerfile 如下

使用 Docker Volume 的功能 (二)

另外在 VOLUME 指令的寫法可以寫成多個路徑,如下

使用 Docker Volume 的功能 (二)

Build Image 指令如下

使用 Docker Volume 的功能 (二)

輸入 docker build 指令時,文件夾要切換到和 Dockerfile 檔案同一層的文件夾路徑,Build 完 Image 之後的結果如下畫面

使用 Docker Volume 的功能 (二)

啟動 Docker Container 指令如下

使用 Docker Volume 的功能 (二)

因為 VOLUME 已經寫在 Dockerfile 裡,所以在使用 docker run 指令時沒有給 -v 參數

在 Container 裡面寫入一個檔案,如下畫面

使用 Docker Volume 的功能 (二)

在實體主機上使用 docker inspect 指令,找到 Volume 在實體主機的文件夾路徑

使用 Docker Volume 的功能 (二)

e2987aaab700 為 ContainerID,也可以使用指定 Container Name 的方式

使用 root 權限,切換到 Volume 的實體主機的文件夾路徑之後,可以看到在第4步驟在 Container 裡面寫的檔案,也可以在實體主機的文件夾看到 helloworld.txt 的檔案,畫面如下

使用 Docker Volume 的功能 (二)

Example2:

如何讓 Container 和 Container 之間的資料共享,可以使用以下的方式

啟動第一個 Container 指令如下

使用 Docker Volume 的功能 (二)

啟動第二個 Container 指令如下

使用 Docker Volume 的功能 (二)

--volumes-from 參數指定 Container Name 為 Container1 的 Volume 資料和Container2 做共享

測試二個 Container 之間資料是否能共享,畫面如下

使用 Docker Volume 的功能 (二)

左邊的Container1 切換到/data 資料夾之後建立一個helloworld.txt 的檔案,之後在右邊的Container2 切換到/data 資料夾之後查看helloworld.txt 的檔案內容為HELLOWORLD,這樣就代表了Container 之間的資料有做到共享的效果。

今天介紹了 Dockerfile Volume 的用法以及 Container 之間的資料做共享,不用另外的架設 file server 就可以分享資料,使資料在使用上更加的方便,對於在備份資料方面也更加的簡單。



分享到:


相關文章: