日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

容器学习 之 共享数据(十六)

發(fā)布時(shí)間:2024/2/28 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 容器学习 之 共享数据(十六) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

容器與 host 共享數(shù)據(jù)

我們有兩種類型的 data volume,它們均可實(shí)現(xiàn)在容器與 host 之間共享數(shù)據(jù),但方式有所區(qū)別。

對(duì)于 bind mount 是非常明確的:直接將要共享的目錄 mount 到容器。具體請(qǐng)參考前面 httpd 的例子,不再贅述。

docker managed volume 就要麻煩點(diǎn)。由于 volume 位于 host 中的目錄,是在容器啟動(dòng)時(shí)才生成,所以需要將共享數(shù)據(jù)拷貝到 volume 中。請(qǐng)看下面的例子:

容器之間共享數(shù)據(jù)

第一種方法是將共享數(shù)據(jù)放在 bind mount 中,然后將其 mount 到多個(gè)容器。

第二種方法是用 volume container 共享數(shù)據(jù)

colume container 是專門為其他容器提供 volume 的容器。

我們將容器命名為 vc_data(vc 是 volume container 的縮寫)。注意這里執(zhí)行的是 docker create 命令,這是因?yàn)?volume container 的作用只是提供數(shù)據(jù),它本身不需要處于運(yùn)行狀態(tài)。容器 mount 了兩個(gè) volume:

通過 docker inspect 可以查看到這兩個(gè) volume。
docker inspect vc_data

"Mounts": [{"Source": "/root/htdocs","Destination": "/usr/local/apache2/htdocs","Mode": "","RW": true,"Propagation": "rprivate"},{"Name": "1b603669398d117e499449862636a56c4f4c804d447c680e7b3ba7c7f5e52205","Source": "/var/lib/docker/volumes/1b603669398d117e499449862636a56c4f4c804d447c680e7b3ba7c7f5e52205/_data","Destination": "/other/useful/tools","Driver": "local","Mode": "","RW": true,"Propagation": ""}],

其他容器可以通過 --volumes-from 使用 vc_data 這個(gè) volume container:

web1 容器使用的就是 vc_data 的 volume,而且連 mount point 都是一樣的。驗(yàn)證一下數(shù)據(jù)共享的效果:

第三種方法

volume container 的數(shù)據(jù)歸根到底還是在 host 里,有沒有辦法將數(shù)據(jù)完全放到 volume container 中,同時(shí)又能與其他容器共享呢?當(dāng)然可以,通常我們稱這種容器為 data-packed volume container。其原理是將數(shù)據(jù)打包到鏡像中,然后通過 docker managed volume 共享。

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

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:

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

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

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

總結(jié)

以上是生活随笔為你收集整理的容器学习 之 共享数据(十六)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。