用戶在使用 Docker 的過程中,往往需要能查看容器內(nèi)應用產(chǎn)生的數(shù)據(jù),或者需要把容器內(nèi)的數(shù)據(jù)進行備份,甚至多個容器之間進行數(shù)據(jù)的共享,這必然涉及容器的數(shù)據(jù)管理操作。容器中管理數(shù)據(jù)主要有兩種方式:數(shù)據(jù)卷(Data Volumes),數(shù)據(jù)卷容器(Data Volume Containers)。
專業(yè)領(lǐng)域包括成都網(wǎng)站設(shè)計、做網(wǎng)站、商城網(wǎng)站制作、微信營銷、系統(tǒng)平臺開發(fā), 與其他網(wǎng)站設(shè)計及系統(tǒng)開發(fā)公司不同,成都創(chuàng)新互聯(lián)的整合解決方案結(jié)合了幫做網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,為客戶提供全網(wǎng)互聯(lián)網(wǎng)整合方案。
數(shù)據(jù)卷
數(shù)據(jù)卷是一個可供容器使用的特殊目錄,它繞過文件系統(tǒng),可以提供很多有用的特性:
1.數(shù)據(jù)卷可以在容器之間共享和重用。
2.對數(shù)據(jù)卷的更改會立即生效。
3.對數(shù)據(jù)卷的更新不會影響鏡像。
4.數(shù)據(jù)卷會一直存在,直到?jīng)]有容器使用。
數(shù)據(jù)卷的使用,類似于 linux 下對目錄或文件進行 mount 操作。
在容器內(nèi)創(chuàng)建一個數(shù)據(jù)卷
在用 docker run 命令的時候,使用 -v 標記可以在容器內(nèi)創(chuàng)建一個數(shù)據(jù)卷。多次使用 -v 標記可以創(chuàng)建多個數(shù)據(jù)卷。
下面的例子中我們使用 myimg/webapp 鏡像創(chuàng)建一個 web 容器,并創(chuàng)建一個數(shù)據(jù)卷掛載到容器的 /webdata 目錄。
$ sudo docker run -d -P –name web -v /webdata myimg/webapp python app.py
掛載一個主機目錄作為數(shù)據(jù)卷
使用 -v 標記也可以指定掛載一個本地的已有目錄到容器中去作為數(shù)據(jù)卷:
$ sudo docker run -d -P –name web -v /var/data:/opt/webdata myimg/webapp python app.py
上面的命令掛載主機的 /var/data 目錄到容器的 /opt/webdata 目錄。
這個功能在接下測試的時候特別方便,比如用戶可以放置一些程序或數(shù)據(jù)到本地目錄中,然后在容器中使用。另外,本地目錄的路徑必須是絕對路徑,如果目錄不存在,Docker 會自動創(chuàng)建。
Docker 掛載數(shù)據(jù)卷的默認權(quán)限是可讀寫(rw),用戶也可以通過 ro 標記指定為只讀:
加了 :ro 之后,容器內(nèi)掛載的數(shù)據(jù)卷內(nèi)的數(shù)據(jù)就變成只讀的了。
掛載一個本地主機文件作為數(shù)據(jù)卷
-v 標記也可以掛載一個主機中的文件到容器中作為數(shù)據(jù)卷,但是這樣做會帶來一些問題。建議還是掛載文件所在的目錄。
數(shù)據(jù)卷容器
如果用戶需要在容器之間共享一些持續(xù)更新的數(shù)據(jù),最簡單的方式是使用數(shù)據(jù)卷容器。數(shù)據(jù)卷容器其實就是一個普通的容器,專門用它提供數(shù)據(jù)卷供其他容器掛載。下面簡單介紹其使用方法。
首先要創(chuàng)建一個數(shù)據(jù)卷容器 mydata,并在其中創(chuàng)建一個數(shù)據(jù)卷掛載到 /data 目錄。
$ sudo docker run -it -v /data –name mydata ubuntu
然后在其他容器中使用 --volumes-from 來掛載 mydata 容器中的數(shù)據(jù)卷。例如創(chuàng)建兩個容器 mycon1 和 mycon2,并從 mydata 容器掛載數(shù)據(jù)卷:
$ sudo docker run -it --volumes-from mydata –name mycon1 ubuntu $ sudo docker run -it --volumes-from mydata –name mycon2 ubuntu
(注意,命令中沒有指定數(shù)據(jù)卷的信息,也就是說新容器中掛載數(shù)據(jù)卷的目錄和源容器中是一樣的。)
此時容器 mycon1 和 mycon2 都掛載同一個數(shù)據(jù)卷到相同的目錄 /data。三個容器任何一個在該目錄下寫入數(shù)據(jù)其他容器都能看到。
可以多次使用 --volumes-from 參數(shù)來從多個容器掛載多個數(shù)據(jù)卷。還可以從其他已經(jīng)掛載了容器的容器來掛載數(shù)據(jù)卷。并且使用 --volumes-from 參數(shù)所掛載數(shù)據(jù)卷的容器自身并不需要保持在運行狀態(tài)。
但刪除掛載了數(shù)據(jù)卷的容器時,數(shù)據(jù)卷并不會被自動刪除。如果要刪除一個數(shù)據(jù)卷,必須在刪除最后一個還掛載著它的容器時顯式的使用 docker rm -v 命令來指定同時刪除關(guān)聯(lián)的容器。
使用數(shù)據(jù)卷容器可以讓用戶在容器之間自由的升級和移動數(shù)據(jù)卷,下面會進行詳細的介紹。
利用數(shù)據(jù)卷容器遷移數(shù)據(jù)
可以利用數(shù)據(jù)卷容器對其中的數(shù)據(jù)卷進行備份、恢復,以實現(xiàn)數(shù)據(jù)的遷移。
備份
使用下面的命令來備份 mydata 數(shù)據(jù)卷容器內(nèi)的數(shù)據(jù)卷:
這個命令首先利用 Ubuntu 鏡像創(chuàng)建了一個容器 worker。又使用 --volumes-from mydata 參數(shù)來讓 worker 容器掛載 mydata 容器的數(shù)據(jù)卷。接下來使用 -v $(pwd):/backup 參數(shù)來掛載本地的當前目錄到 worker 容器的 /backup 目錄。
在 worker 容器啟動后,使用了 tar cvf /backup/backup.tar /data 命令來將 /data 下內(nèi)容備份為容器內(nèi)的 /backup/backup.tar,即宿主主機的當前目錄下的backup.tar。
恢復
如果要恢復數(shù)據(jù)到一個容器,可以按照下面的操作。首先創(chuàng)建一個帶有數(shù)據(jù)卷的容器 mydata2:
$ sudo docker run -v /data –name mydata2 ubuntu /bin/bash
然后創(chuàng)建另一個新的容器,掛載 mydata2 的數(shù)據(jù)卷,并使用 tar 解壓縮備份文件到所掛載的容器卷中:
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
網(wǎng)站欄目:淺談Docker基礎(chǔ)之數(shù)據(jù)管理
分享網(wǎng)址:http://www.2m8n56k.cn/article4/ggdgoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計、企業(yè)建站、營銷型網(wǎng)站建設(shè)、域名注冊、標簽優(yōu)化、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)