新聞中心
上篇文章給大家介紹過 ,今天給大家介紹Docker中數(shù)據(jù)卷(volume)管理的兩種方式,具體內(nèi)容如下所示:
曹縣網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,曹縣網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為曹縣千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的曹縣做網(wǎng)站的公司定做!
什么是數(shù)據(jù)卷數(shù)據(jù)卷( volume ):volume是存在于一個或多個容器中的特定文件或文件夾,這個目錄以獨立于聯(lián)合文件系統(tǒng)的形式在宿主機中存在,并為數(shù)據(jù)的共享與持久化提供便利。
為什么要用數(shù)據(jù)卷 Docker分層文件系統(tǒng)存在的問題:
Docker的鏡像是由一系列的只讀層組合而來的,當(dāng)啟動一個容器時, Docker加載鏡像的所有只讀層,并在最上層加入一個讀寫層。這個設(shè)計使得Docker可以提高鏡像構(gòu)建、存儲和分發(fā)的效率,節(jié)省了時間和存儲空間,然而也存在如下問題:
1、性能差。
2、多個容器之間的數(shù)據(jù)無法共享。
3、生命周期與容器相同。當(dāng)刪除容器時,容器產(chǎn)生的數(shù)據(jù)將丟失。數(shù)據(jù)卷機制的好處:
1、mount到主機中,繞開分層文件系統(tǒng)。
2、volume能在不同的容器之間共享和重用。
3、和主機磁盤性能相同。
4、對volume中數(shù)據(jù)的操作不會影響到鏡像本身。
5、volume的生存周期獨立于容器的生存周期,即使刪除容器,volume仍然會存在,沒有任何容器使用的volume也不會被Docker刪除。
Docker提供了volumedriver接口,通過實現(xiàn)該接口,我們可以為Docker容器提供不同的volume存儲支持。當(dāng)前官方默認實現(xiàn)了local這種volumedriver,它使用宿主機的文件系統(tǒng)為Docker容器提供volume。
Docker的volume的本質(zhì)是容器中一個特殊的目錄。在容器的創(chuàng)建過程中,Docker會將宿主機上的指定目錄(一個以volume ID為名稱的目錄,或者指定的宿主機目錄)掛載到容器中指定的目錄上(使用bing mount掛載方法),故掛載完成后的宿主機目錄和容器內(nèi)的目標(biāo)目錄表現(xiàn)一致。
1、綁定掛載bind mountbind mount是將主機上的目錄或文件mount到容器里。使用直觀高效,易于理解。
使用-v選項指定掛載路徑,格式
#前面是宿主機真實存在的路徑:后面是容器內(nèi)的路徑
調(diào)到前臺運行,分別查看宿主機和容器的指定的目錄下的內(nèi)容,是一樣的。這是因為這種方式掛載和我們平時使用mount方式是一樣的,原有數(shù)據(jù)隱藏,替換為宿主機的數(shù)據(jù)。
##/data目錄下這么多東西是因為docker默認數(shù)據(jù)目錄是/data
bind mount默認權(quán)限是讀寫rw,可以在掛載時指定只讀ro。
-v選項指定的路徑,如果不存在,掛載時會自動創(chuàng)建。docker run -it --name vm1 \ /etc/yum.repos.d/dvd.repo:/etc/yum.repos.d/dvd.repo:ro rhel7 bash2、docker managed volumebind mount必須指定host文件系統(tǒng)路徑,限制了移植性。
docker managed volume不需要指定mount源,docker自動為容器創(chuàng)建數(shù)據(jù)卷目錄。默認創(chuàng)建的數(shù)據(jù)卷目錄都在 /var/lib/docker/volumes 中。
如果掛載時指向容器內(nèi)已有的目錄,容器內(nèi)原有數(shù)據(jù)會被復(fù)制到volume中。
創(chuàng)建卷方式:
將創(chuàng)建的webdata卷掛載到容器的/usr…目錄下
進入docker默認創(chuàng)建的數(shù)據(jù)卷目錄查看卷里的內(nèi)容,我們可以看到上面只創(chuàng)建了卷,沒有寫入任何東西,但卷里有內(nèi)容是因為掛載時容器內(nèi)指定目錄里原本有東西,所以復(fù)制過來的
我們運行容器使用的是nginx鏡像,訪問一下,沒有問題
如果掛載時沒指定mount源,那么docker會自動隨機創(chuàng)建一個文件名很長的卷
我們使用docker inspect demo命令查看下卷的源目錄
得到路徑后就可以查看目錄下的內(nèi)容了
bind mount 與 docker managed volume 對比
相同點:兩者都是 host 文件系統(tǒng)中的某個路徑。
不同點如圖:
到此這篇關(guān)于Docker中的數(shù)據(jù)卷(volume)管理的兩種方式的文章就介紹到這了,更多相關(guān)Docker數(shù)據(jù)卷volume內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
網(wǎng)站名稱:Docker中數(shù)據(jù)卷(volume)管理的兩種方式
標(biāo)題URL:http://fisionsoft.com.cn/article/iddddp.html