真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

docker中怎么掛載數(shù)據(jù)卷

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)docker中怎么掛載數(shù)據(jù)卷,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)主要從事網(wǎng)頁設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、成都響應(yīng)式網(wǎng)站建設(shè)公司、程序開發(fā)、網(wǎng)站優(yōu)化、微網(wǎng)站、小程序制作等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營銷、管理等多方位專業(yè)化運(yùn)作于一體。

一、創(chuàng)建和加載一個(gè)數(shù)據(jù)卷容器

1.創(chuàng)建一個(gè)數(shù)據(jù)卷容器

查看命令參數(shù):docker run --help

看到-v的命令幫助

docker中怎么掛載數(shù)據(jù)卷

這里我們可以看到-v相關(guān)命令一共有三個(gè)參數(shù)

--volume(等同于-v)

解釋:創(chuàng)建一個(gè)容器數(shù)據(jù)卷,要掛載容器數(shù)據(jù)卷首先要有容器數(shù)據(jù)卷,這個(gè)命令就是創(chuàng)建一個(gè)容器數(shù)據(jù)卷。

比如:

docker run -d --volume /var/volume --name DATA centos ls

上面的命令即從名為centos的鏡像啟動(dòng)(守護(hù)線程)一個(gè)容器,容器命名為DATA,啟動(dòng)之后執(zhí)行l(wèi)s命令。并且將容器中的/var/volume目錄(或文件)分享出去,這樣就創(chuàng)建了一個(gè)數(shù)據(jù)卷容器。上面的命令等價(jià)于:docker run -v /var/volume -name DATA centos

這里的/var/valume建議寫成絕對(duì)路徑,雖然相對(duì)路徑?jīng)]有報(bào)錯(cuò),但是很容易引起誤解。因?yàn)檫@里即使寫成相對(duì)路徑,docker也會(huì)當(dāng)成絕對(duì)路徑來處理。比如把這里的/var/valume寫成./var/volume或var/valume結(jié)果都一樣,這對(duì)于開發(fā)者來說很容易誤解,所以建議寫成絕對(duì)路徑。

我們注意到上面查詢出來的--volume命令的參數(shù)類型是list,所以我們可以在一個(gè)容器中創(chuàng)建多個(gè)數(shù)據(jù)卷。

比如:

docker run -d --volume /var/volume1 --volume /var/volume2 --name DATA centos ls

這樣我們就在DATA 容器中創(chuàng)建了兩個(gè)數(shù)據(jù)卷

除了上面的創(chuàng)建數(shù)據(jù)卷容器外,我們還可以在Dockerfile中創(chuàng)建數(shù)據(jù)卷,使用 VOLUME 命令。

比如:

# BUILD-USING:        docker build -t data .
# RUN-USING:          docker run -name DATA data
FROM          base-image
VOLUME        ["/var/volume1", "/var/volume2"]
CMD           ["ls"]

注:這里的ls命令并不是必須的,因?yàn)槿萜鲉?dòng)后要執(zhí)行一個(gè)命令,這個(gè)命令可以寫在docker啟動(dòng)命令行的最后,也可以寫在Dockerfile的CMD命令中,且命令行中的命令會(huì)覆蓋Dockerfile中的CMD命令

2.加載數(shù)據(jù)卷

--volumes-from

解釋:從指定容器安裝數(shù)據(jù)卷

當(dāng)我們已經(jīng)創(chuàng)建好一個(gè)數(shù)據(jù)卷容器后或者已經(jīng)存在一個(gè)數(shù)據(jù)卷容器,我們?nèi)绾稳ゼ虞d這個(gè)數(shù)據(jù)卷容器到另一個(gè)容器呢?這就需要用到--volumes-from命令。

這個(gè)命令就是從指定的一個(gè)或多個(gè)數(shù)據(jù)卷容器加載數(shù)據(jù)卷到當(dāng)前的容器中。加載的意思就是如果當(dāng)前容器如果存在數(shù)據(jù)卷的目錄結(jié)果則被覆蓋,如果沒有則直接加載。

比如:

docker run -d --volumes-from DATA:rw --name client centos ls

上面的命令即從名為centos的鏡像中啟動(dòng)(守護(hù)線程)一個(gè)容器,容器命名為client,并且從名為DATA的容器中加載數(shù)據(jù)卷(讀寫),啟動(dòng)后執(zhí)行l(wèi)s命令。這樣DATA中的數(shù)據(jù)卷(/var/volume)就和client中的加載的數(shù)據(jù)卷(/var/volume)共享了,只要任意一方對(duì)數(shù)據(jù)卷做出更改都會(huì)同步到另一方。值得注意的時(shí)這里并不是利用類似復(fù)制粘貼的功能實(shí)現(xiàn)的同步數(shù)據(jù),而是直接修改數(shù)據(jù),這對(duì)于超大文件很有用。

這里的--volumes-from命令的參數(shù)類型同樣是list,所以也是可以指定多個(gè)數(shù)據(jù)卷容器的。

比如:

docker run -d --volumes-from DATA1:ro --volumes-from DATA2:ro --name client centos ls

注:--volumes-from加載的數(shù)據(jù)卷可以賦予讀寫權(quán)限[rw|ro],也就是read write和read only,只讀和讀寫。默認(rèn)使用數(shù)據(jù)卷相同的權(quán)限。

--volume-driver

解釋:為容器選擇數(shù)據(jù)卷驅(qū)動(dòng)

此命令不在此次討論范圍內(nèi),讀者有興趣可自行查閱相關(guān)資料。

二、掛載主機(jī)目錄作為容器卷

上面講了如何把容器作為一個(gè)數(shù)據(jù)卷,在容器之間共享數(shù)據(jù)的方法。但其實(shí)更多的時(shí)候我們是把主機(jī)中的目錄作為一個(gè)數(shù)據(jù)卷加載到容器中,容器中的目錄“外掛”,以方便運(yùn)維人員維護(hù)和修改項(xiàng)目配置。

--volume [host-dir]:[container-dir]:[rw|ro]

上面的命令等價(jià)于:-v [host-dir]:[container-dir]:[rw|ro]

解釋:將主機(jī)的目錄(host-dir)作為數(shù)據(jù)卷加載到容器(container-dir)中,并指定讀寫權(quán)限默認(rèn)使用數(shù)據(jù)卷的權(quán)限

比如:

docker run -d --volume /var/logs:/var/host_logs:ro tomcat

上面的命令即從名為tomcat的鏡像(守護(hù)線程)啟動(dòng)一個(gè)容器,容器名隨機(jī)。掛載主機(jī)目錄/var/logs作為數(shù)據(jù)卷,并加載到當(dāng)前啟動(dòng)的容器/var/host_logs,指定只讀權(quán)限。這樣的話就把主機(jī)的logs目錄和容器的host_logs目錄數(shù)據(jù)共享,當(dāng)容器(數(shù)據(jù)卷)中或主機(jī)(數(shù)據(jù)卷)數(shù)據(jù)更改會(huì)同步。實(shí)際的以些應(yīng)用場景有項(xiàng)目的配置文件掛載、日志文件掛載等,因?yàn)檫@些文件都是經(jīng)常查看和修改的,如果每次都進(jìn)入容器修改和查看十分麻煩,所以直接掛載一個(gè)主機(jī)數(shù)據(jù)卷就可以通過修改和查看主機(jī)的數(shù)據(jù)卷同步容器中的數(shù)據(jù),簡化的操作步驟。

這里有幾個(gè)點(diǎn)需要注意:

主機(jī)目錄和容器目錄需要絕對(duì)路徑,如果不指定絕對(duì)路徑啟動(dòng)會(huì)報(bào)錯(cuò),錯(cuò)誤提示為invalid mount path,mount path must be abstract。

如果主機(jī)目錄不存在則會(huì)自動(dòng)創(chuàng)建,創(chuàng)建的目錄權(quán)限為docker容器中對(duì)應(yīng)的目錄權(quán)限。

如果容器目錄不存在則會(huì)自動(dòng)創(chuàng)建,創(chuàng)建的權(quán)限為宿主機(jī)對(duì)應(yīng)的目錄權(quán)限,用戶和用戶組為1000(貌似默認(rèn)的)

如果主機(jī)目錄和容器目錄都存在,則主機(jī)目錄的內(nèi)容會(huì)覆蓋掉容器目錄的內(nèi)容,但目錄名不會(huì)改變。

容器內(nèi)部無法刪除掛載的數(shù)據(jù)卷(目錄),但主機(jī)可以刪除掛載的數(shù)據(jù)卷,刪除后容器內(nèi)的目錄依舊存在但內(nèi)容為空。刪除失敗 Device or resource busy

容器停止和刪除都不影響主機(jī)數(shù)據(jù)卷,即使容器已經(jīng)刪除了,主機(jī)數(shù)據(jù)卷內(nèi)容任然存在。

掛載數(shù)據(jù)卷的操作是在容器執(zhí)行啟動(dòng)成功后的命令之前完成的,也就是在Dockerfile的CMD命令之前。所以你可能會(huì)在掛載數(shù)據(jù)卷后進(jìn)容器查看數(shù)據(jù)卷內(nèi)容發(fā)現(xiàn)與進(jìn)容器之前看到的主機(jī)數(shù)據(jù)卷不一致,其實(shí)數(shù)據(jù)卷已經(jīng)被容器啟動(dòng)后做了數(shù)據(jù)數(shù)據(jù)更改了,當(dāng)你退出容器查看主機(jī)數(shù)據(jù)卷已經(jīng)同步。

上述就是小編為大家分享的docker中怎么掛載數(shù)據(jù)卷了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


本文名稱:docker中怎么掛載數(shù)據(jù)卷
文章來源:http://weahome.cn/article/pspipd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部