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

當(dāng)然可以,通常我們稱這種容器為 data-packed volume container。其原理是將數(shù)據(jù)打包到鏡像中,然后通過(guò) docker managed volume 共享。

我們用下面的 Dockfile 構(gòu)建鏡像:

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

ADD 將靜態(tài)文件添加到容器目錄 /usr/local/apache2/htdocs。
VOLUME 的作用與 -v 等效,用來(lái)創(chuàng)建 docker managed volume,mount point 為 /usr/local/apache2/htdocs,因?yàn)檫@個(gè)目錄就是 ADD 添加的目錄,所以會(huì)將已有數(shù)據(jù)拷貝到 volume 中。

build 新鏡像 datapacked:

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

用新鏡像創(chuàng)建 data-packed volume container:

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

因?yàn)樵?Dockerfile 中已經(jīng)使用了 VOLUME 指令,這里就不需要指定 volume 的 mount point 了。啟動(dòng) httpd 容器并使用 data-packed volume container:

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

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

容器數(shù)據(jù)共享就討論到這里,下一節(jié)我們學(xué)習(xí)如何對(duì) data volume 的生命周期進(jìn)行管理。

http://www.cnblogs.com/CloudMan6/p/7203285.html