国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Managing Data in Containers

darkbug / 2515人閱讀

摘要:如果你想刪除包含掛載數(shù)據(jù)卷的容器,甚至是初始化的容器,或者是由擴(kuò)展的和,容器會(huì)刪除,但是數(shù)據(jù)卷會(huì)留下。數(shù)據(jù)恢復(fù)創(chuàng)建一個(gè)新的容器,解壓文件到新的容器的數(shù)據(jù)卷。

  

前面已經(jīng)介紹了許多基礎(chǔ)的知識(shí),現(xiàn)在我們來(lái)一起學(xué)習(xí)如何管理Docker容器里面以及容器之間的數(shù)據(jù)

先介紹兩種原始的方法來(lái)管理Docker中的應(yīng)用:

Data volumes

Data volume container

Data volumes
  

data volumns是專門設(shè)計(jì)的工具,它繞過(guò)了UFS直接工作于一個(gè)或多個(gè)容器。它為數(shù)據(jù)持久和分享提供了許多功能:

容器被創(chuàng)建時(shí),卷(volumn)被初始化。如果基礎(chǔ)鏡像在指定的掛載點(diǎn)包含數(shù)據(jù),這些數(shù)據(jù)也會(huì)被復(fù)制到新容器的卷中。

數(shù)據(jù)卷可以在多個(gè)容器間分享和復(fù)用

可以直接更改卷里面的數(shù)據(jù)

更新鏡像時(shí)對(duì)容器數(shù)據(jù)卷的更改將不會(huì)被包含到新的鏡像中

即使容器被刪除,數(shù)據(jù)卷依然存在

數(shù)據(jù)卷的設(shè)計(jì)被用來(lái)持久化數(shù)據(jù),讓數(shù)據(jù)能夠獨(dú)立于容器的生命周期。因此當(dāng)刪除容器時(shí)Docker也不會(huì)自動(dòng)刪除數(shù)據(jù)卷。

Adding a data volume
  

增加數(shù)據(jù)卷

docker create -vdocker run -v中的-v標(biāo)記來(lái)給容器添加數(shù)據(jù)卷,我們可以在一條命令中多次使用-v標(biāo)記來(lái)添加多個(gè)數(shù)據(jù)卷,下面的例子掛載了一個(gè)數(shù)據(jù)卷在我們的web應(yīng)用容器中。

languagedocker run -d -P --name web -v /webapp training/webapp python app.py

這條命令執(zhí)行后會(huì)在容器中創(chuàng)建一個(gè)新的卷webapp

Mount a Host Directory as a Data Volume
  

為數(shù)據(jù)卷掛在主機(jī)目錄

除了使用-v標(biāo)記來(lái)創(chuàng)建卷之外,你還可以掛載Docker守護(hù)進(jìn)程主機(jī)的目錄到容器中。

  

注意:如果你使用Boot2Docker,那么你的Docker守護(hù)進(jìn)程只能被限制訪問(wèn)OSX/windows特定的文件目錄。Boot2Docker會(huì)努力自動(dòng)分享OSX中的/users目錄和windows中的C:users目錄。因此你可以通過(guò)docker run -v /Users/:/ ... (OSX)或者docker run -v /c/Users/:/(Windows).來(lái)掛在文件或目錄。所有的其它路徑(不是/users和C:users)都來(lái)自Boot2Docker虛擬機(jī)中的文件系統(tǒng)。

languagedocker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py

上述命令會(huì)把主機(jī)的/src/webapp目錄掛在到容器中的/opt/webapp

  

注意:如果/opt/webapp目錄已經(jīng)存在與容器的鏡像中,那么/opt/webapp中的內(nèi)容會(huì)被主機(jī)上的/src/webapp中的數(shù)據(jù)替換,這個(gè)和mount命令是一致的。

數(shù)據(jù)卷掛在數(shù)據(jù)對(duì)測(cè)試非常有用,比如我們可以把源代碼掛在到容器中,然后修改代碼看看應(yīng)用會(huì)發(fā)生什么。主機(jī)上的目錄必須是絕對(duì)路徑,如果這個(gè)目錄不存在Docker會(huì)自動(dòng)去創(chuàng)建1個(gè)。

  

注意:不能在Dockerfile中來(lái)配置掛載目錄,因?yàn)?b>Dockerfile的目的是更方便的來(lái)一直和分享鏡像,而主機(jī)目錄依賴于主機(jī),(對(duì)于一個(gè)目錄,在不同的主機(jī)上可能絕對(duì)路徑不一致)所以Dockerfile中目錄掛載不會(huì)適用于所有的主機(jī)

掛載的數(shù)據(jù)卷默認(rèn)是可讀寫的,當(dāng)然我們可以通過(guò)命令標(biāo)記來(lái)讓它只讀

languagedocker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py

上述命令中我們通過(guò)ro選項(xiàng)來(lái)讓數(shù)據(jù)卷只讀

Mount a Host File as a Data Volume
  

掛載主機(jī)文件作為數(shù)據(jù)卷

-v標(biāo)記還可以用來(lái)掛在來(lái)自主機(jī)的文件,而不僅僅是目錄

languagedocker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash

上述命令會(huì)帶你到一個(gè)新容器的shell界面,你會(huì)有來(lái)自主機(jī)的bash歷史。因?yàn)槿萜骱椭鳈C(jī)共享了一個(gè).bash_history文件,所以你在容器中的命令歷史和主機(jī)中的歷史都會(huì)記錄到.bash_history中,這樣當(dāng)你退出容器中時(shí),你在容器中的命令歷史被保存下來(lái)了,在主機(jī)的shell歷史記錄中仍然能夠看到容器中的歷史。

  

注意:人們會(huì)使用很多工具來(lái)編輯文件,vised --in-place,這些都會(huì)導(dǎo)致文件的索引節(jié)點(diǎn)改變。Docker 1.1.0之前,文件修改會(huì)報(bào)如sed: cannot rename ./sedKdJ9Dy: Device or resource busy這樣的錯(cuò)誤。但是在Docker 1.1.0之后,掛載文件讓文件修改變得非常簡(jiǎn)單而不需要再去掛在包含這個(gè)文件的父目錄了。

Creating and mounting a Data Volume Container
  

創(chuàng)建一個(gè)專門防數(shù)據(jù)的數(shù)據(jù)卷容器

如果你有一些持久化的數(shù)據(jù)需要在容器之間共享,或者想從非持久化容器使用持久化數(shù)據(jù)。最好的辦法是創(chuàng)建名為Data的卷容器,把數(shù)據(jù)都掛在到Data容器里
我們創(chuàng)建一個(gè)能分享數(shù)據(jù)的命名容器,他不運(yùn)行任何應(yīng)用,它重復(fù)使用training/postgres鏡像以便所有的容器使用同一個(gè)層,這樣可以節(jié)省磁盤空間。

languagedocker create -v /dbdata --name dbdata training/postgres /bin/true

我們使用--volumes-from標(biāo)記來(lái)綁定/dbdata卷到另一個(gè)容器

languagedocker run -d --volumes-from dbdata --name db1 training/postgres

或者

languagedocker run -d --volumes-from dbdata --name db2 training/postgres

在是上述的例子中,我們?cè)谌萜髦袙煸诹?b>/dbdata卷,如果恰巧鏡像training/postgres中也有/dbdata這個(gè)目錄,那么容器會(huì)隱藏鏡像的目錄,而讓容器中的/dbdata目錄可見(jiàn),新建多個(gè)數(shù)據(jù)容器同樣是隱藏鏡像的文件而顯示容器中的文件,這種機(jī)制實(shí)現(xiàn)了數(shù)據(jù)卷的數(shù)據(jù)共享。
你可以在一條命令中使用多個(gè)--volumes-from標(biāo)記參數(shù)把多個(gè)容器的數(shù)據(jù)卷綁定在一起。
上述的代碼中db1和db2是掛載dbdata這個(gè)容器來(lái)擴(kuò)展的,你也可以掛載db1或者db2來(lái)擴(kuò)展你的數(shù)據(jù)卷。

language docker run -d --name db3 --volumes-from db1 training/postgres

如果你想刪除包含掛載數(shù)據(jù)卷的容器,甚至是初始化的容器dbdata,或者是由dbdata擴(kuò)展的db1和db2,容器會(huì)刪除,但是數(shù)據(jù)卷會(huì)留下。使用docker rm -v來(lái)刪除容器的數(shù)據(jù)卷。

  

注意:當(dāng)你刪除容器沒(méi)有使用-v標(biāo)記的時(shí)候,Docker不會(huì)提示警告。沒(méi)有使用-v標(biāo)記刪除容器,會(huì)讓殘留的volumns變得“無(wú)家可歸”(就是沒(méi)有容器再引用這個(gè)數(shù)據(jù)卷)。這樣的卷很難刪除而且會(huì)占用很多空間,我們正在努力改善數(shù)據(jù)卷的管理,你可以通過(guò)pull request #8484來(lái)跟進(jìn)我們的進(jìn)程。

Backup, restore, or migrate data volumes
  

我們可以利用數(shù)據(jù)卷來(lái)有效的備份、恢復(fù)和遷移數(shù)據(jù)

languagedocker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata

命令中我們啟動(dòng)了一個(gè)新的容器,它共享了來(lái)自dbdata容器的數(shù)據(jù)卷。然后我們掛在了一個(gè)本地主機(jī)的目錄/backup。最后我們使用tar命令把/dbdata中的數(shù)據(jù)壓縮成dbdata.jar放到/backup中。執(zhí)行結(jié)束我們就完成了數(shù)據(jù)卷的數(shù)據(jù)備份工作。

數(shù)據(jù)恢復(fù)

languagedocker run -v /dbdata --name dbdata2 ubuntu /bin/bash
docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar

創(chuàng)建一個(gè)新的容器dbdata2,解壓文件到新的容器的數(shù)據(jù)卷。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/26414.html

相關(guān)文章

  • SegmentFault 技術(shù)周刊 Vol.5 - Docker丨Build, Ship, Run,

    摘要:此刻的后手指依舊飛速地敲打鍵盤,絲毫沒(méi)有要停不下來(lái)意思。閱讀本期技術(shù)周刊,你不光能弄明白什么是,使用的意義何在,還將被傳授秘籍,以達(dá)的境界。周刊篩選的每篇內(nèi)容,是作者的獨(dú)到見(jiàn)解,踩坑總結(jié)和經(jīng)驗(yàn)分享。 showImg(https://segmentfault.com/img/bVC5qJ?w=900&h=385); 啪嗒啪嗒,啪嗒啪嗒,聽到后排動(dòng)感十足的清脆鍵盤響,我就能猜到公司程序員定...

    Panda 評(píng)論0 收藏0
  • JAVA服務(wù)器概述

    摘要:盡管大多數(shù)的服務(wù)器有支持腳本語(yǔ)言的插件,通過(guò)這些腳本語(yǔ)言,比如,,,可以產(chǎn)生動(dòng)態(tài)的內(nèi)容,但是服務(wù)器大多數(shù)旨在為靜態(tài)頁(yè)面服務(wù)。 Java服務(wù)器 ??作為Java工程師,服務(wù)器對(duì)于我們的開發(fā)工作很重要,將我們開發(fā)好的項(xiàng)目放到服務(wù)器上用戶才可以使用。我們常用到的服務(wù)器有Tomcat、Apache、Nginx等等。對(duì)于我們所開發(fā)的應(yīng)用,如何選擇合適的服務(wù)器是個(gè)問(wèn)題。下面簡(jiǎn)單的介紹Web服務(wù)器、...

    付永剛 評(píng)論0 收藏0
  • JAVA服務(wù)器概述

    摘要:盡管大多數(shù)的服務(wù)器有支持腳本語(yǔ)言的插件,通過(guò)這些腳本語(yǔ)言,比如,,,可以產(chǎn)生動(dòng)態(tài)的內(nèi)容,但是服務(wù)器大多數(shù)旨在為靜態(tài)頁(yè)面服務(wù)。 Java服務(wù)器 ??作為Java工程師,服務(wù)器對(duì)于我們的開發(fā)工作很重要,將我們開發(fā)好的項(xiàng)目放到服務(wù)器上用戶才可以使用。我們常用到的服務(wù)器有Tomcat、Apache、Nginx等等。對(duì)于我們所開發(fā)的應(yīng)用,如何選擇合適的服務(wù)器是個(gè)問(wèn)題。下面簡(jiǎn)單的介紹Web服務(wù)器、...

    Wildcard 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<