1. 程式人生 > >data-packed volume container - 每天5分鐘玩轉 Docker 容器技術(43)

data-packed volume container - 每天5分鐘玩轉 Docker 容器技術(43)

docker 教程 容器

在上一節的例子中 volume container 的數據歸根到底還是在 host 裏,有沒有辦法將數據完全放到 volume container 中,同時又能與其他容器共享呢?

當然可以,通常我們稱這種容器為 data-packed volume container。其原理是將數據打包到鏡像中,然後通過 docker managed volume 共享。

我們用下面的 Dockfile 構建鏡像:

技術分享

ADD 將靜態文件添加到容器目錄 /usr/local/apache2/htdocs。
VOLUME 的作用與 -v 等效,用來創建 docker managed volume,mount point 為 /usr/local/apache2/htdocs,因為這個目錄就是 ADD 添加的目錄,所以會將已有數據拷貝到 volume 中。

build 新鏡像 datapacked:

技術分享

用新鏡像創建 data-packed volume container:

技術分享

因為在 Dockerfile 中已經使用了 VOLUME 指令,這裏就不需要指定 volume 的 mount point 了。啟動 httpd 容器並使用 data-packed volume container:

技術分享

容器能夠正確讀取 volume 中的數據。data-packed volume container 是自包含的,不依賴 host 提供數據,具有很強的移植性,非常適合 只使用 靜態數據的場景,比如應用的配置信息、web server 的靜態文件等。

容器數據共享就討論到這裏,下一節我們學習如何對 data volume 的生命周期進行管理

技術分享

data-packed volume container - 每天5分鐘玩轉 Docker 容器技術(43)