Dcoker入門之存儲卷-創(chuàng)新互聯(lián)

Dcoker 入門之存儲卷

首發(fā):arppinging.com

站在用戶的角度思考問題,與客戶深入溝通,找到婺源網站設計與婺源網站推廣的解決方案,憑借多年的經驗,讓設計與互聯(lián)網技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網站建設、做網站、企業(yè)官網、英文網站、手機端網站、網站推廣、主機域名、網頁空間、企業(yè)郵箱。業(yè)務覆蓋婺源地區(qū)。

Docker 入門之存儲卷一、Docker中的文件二、存在的問題和解決方案1)存在的問題2)解決方案三、什么是docker存儲卷?1)概述2)卷(volume)的特點3)卷的類型(volume types)四、使用docker存儲卷(volume)1)docker-managed volume2)bind mount volume3)復制使用其他容器的卷

Docker 入門之存儲卷

一、Docker中的文件

首先我們需要回顧一下之前的內容:
1、docker鏡像由多個層疊加而成,啟動容器時,docker會加載只讀鏡像層,并在鏡像棧頂部添加一個讀寫層。

2、如果運行中的容器修改了現(xiàn)有的一個已經存在的文件,那該文件會從只讀層復制到讀寫層,該文件的只讀版本仍然存在,只是已經被讀寫層中該文件的副本所隱藏,此即“寫時復制(COW)”機制。

通俗來講:容器是分層的,最上面一層是可讀寫層,對所有數(shù)據(jù)的修改,都是保存在最上層的;在運行容器之后,所有的操作都不會影響到鏡像本身,如果是編輯操作,那么docker只會從只讀層將文件復制(非移動)到讀寫層給用戶進行編輯。

Dcoker 入門之存儲卷docker中的文件

二、存在的問題和解決方案

1)存在的問題

1、當用戶關閉和重啟容器時,容器中的數(shù)據(jù)不受影響,但刪除容器,則其數(shù)據(jù)會全部丟失。

2、數(shù)據(jù)存儲在聯(lián)合文件系統(tǒng)中,不易于宿主機訪問。

3、容器間數(shù)據(jù)共享不便

4、容器寫入和更改數(shù)據(jù)效率低,部分文件需要從底層復制,不適合IO較高的應用。

2)解決方案

“卷”是容器一個或多個“目錄”,此次類目錄可繞過聯(lián)合文件系統(tǒng),于宿主機上的目錄“綁定(關聯(lián))”

Dcoker 入門之存儲卷目錄綁定

三、什么是docker存儲卷?

1)概述

將宿主機的目錄直接于容器中的目錄進行綁定,容器向目錄寫入數(shù)據(jù)時,可以直接寫入宿主機的目錄中。這樣容器內的數(shù)據(jù)保存時就能繞過容器內部文件系統(tǒng)的限制,與宿主機的文件系統(tǒng)建立關聯(lián)關系,實現(xiàn)數(shù)據(jù)共享,容器被停止或者刪除時,數(shù)據(jù)不會丟失。

2)卷(volume)的特點

1、volume于容器初始化之時即會創(chuàng)建,由base image提供的卷中的數(shù)據(jù)會在此期間完成復制。(例:將宿主機上/data/docker/b1 和 容器b1中的/etc/綁定,那么會將容器中/etc/的內容復制到宿主機/dta/docker/b1/目錄中)

2、volume的初衷是獨立于容器的生命周期實現(xiàn)數(shù)據(jù)持久化,因此刪除容器之時即不會刪除卷,也不會對哪怕未被引用的卷做垃圾回收操作。

3、volume為docker提供了獨立于容器的數(shù)據(jù)管理機制
(可以把”鏡像“想象為靜態(tài)文件,例如”程序“,把”卷“類比為動態(tài)內容,例如”數(shù)據(jù)“;于是,鏡像可以被重用,而卷可以被共享;卷實現(xiàn)了”程序(鏡像)“和”數(shù)據(jù)(卷)“的分離,用戶制作鏡像時無需再考慮鏡像運行的容器所在的環(huán)境)

Dcoker 入門之存儲卷docker 卷
3)卷的類型(volume types)

docker 有兩種類型的卷,每種類型都在容器中存在一個掛載點,但其在宿主機上的位置有所不同

3.1 bind mount volume(綁定掛載卷)

a volume that points to a user-specified location on the host file system

3.2 docker-manged volume(docker 管理卷)

the docker daemon creates managed volumes in a portion of the host's file system that's system that's owned by docker

Dcoker 入門之存儲卷兩種類型的卷

bind mount volume:指定綁定的路徑

docker-managed volume:宿主機的路徑由docker daemon定義

四、使用docker存儲卷(volume)

無論是哪種類型的卷,都使用docker run的-v參數(shù)。

1)docker-managed volume

1.1 創(chuàng)建容器b1,指定b1的/data/目錄使用存儲卷

[root@localhost ~]# docker run --name b1 -it -v /data busybox
/ # cd /data/
/data # ls
/data # 

1.2 查看關聯(lián)的宿主機目錄

[root@localhost b1]# docker inspect -f {{.Mounts}} b1
[{volume 4e1f3596768357e009da8df6d38c4339df04b64dee2d80e262609f83b87d4177 /var/lib/docker/volumes/4e1f3596768357e009da8df6d38c4339df04b64dee2d80e262609f83b87d4177/_data /data local  true }]
[root@localhost b1]# 

1.3 在宿主機目錄中寫入文件

[root@localhost b1]# cd /var/lib/docker/volumes/4e1f3596768357e009da8df6d38c4339df04b64dee2d80e262609f83b87d4177/_data/
[root@localhost _data]# echo 'welcome to arppinging.com' >> test.txt
[root@localhost _data]# cat test.txt 
welcome to arppinging.com
[root@localhost _data]# 

1.4 在容器b1中查看是否有test.txt文件

/data # cat /data/test.txt 
welcome to arppinging.com
/data # 
2)bind mount volume

使用綁定掛載卷的時候,如果宿主機的目錄不存在,那么會自動創(chuàng)建該目錄。

1.1 創(chuàng)建容器b2,配置宿主機的/data/docker/b2/與容器b2的/data/關聯(lián)

[root@localhost ~]# docker run --name b2 -it -v /data/docker/b2:/data busybox
/ # ls /data/
/ # 

1.2 查看b2的關聯(lián)目錄

[root@localhost _data]# docker inspect -f {{.Mounts}} b2
[{bind  /data/docker/b2 /data   true rprivate}]
[root@localhost _data]# 

1.3 在b2的/data/中創(chuàng)建一個文件,

/ # cd /data/
/data # echo 'welcome to b2.arppinging.com' > b2.html
/data # 

1.4 在宿主機的/data/docker/b2中是否能看到b2創(chuàng)建的文件?

[root@localhost /]# cd /data/docker/b2/
[root@localhost b2]# ls
b2.html
[root@localhost b2]# cat b2.html 
welcome to b2.arppinging.com
[root@localhost b2]# 

1.5 刪除容器b2,查看宿主機的目錄文件是否還存在

[root@localhost ~]# docker rm b2
b2
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
ec2ff6aeb48a        busybox             "sh"                10 minutes ago      Exited (0) 4 minutes ago                       b1
[root@localhost ~]# 
[root@localhost ~]# cd /data/docker/b2/
[root@localhost b2]# cat b2.html 
welcome to b2.arppinging.com
[root@localhost b2]# 
3)復制使用其他容器的卷

復制和使用其他容器的卷,使用的是--volumes-from選項
創(chuàng)建一個容器b3,使用b1的存儲卷

[root@localhost b2]# docker run --name b3 -it --volumes-from b1 busybox
/ # cat /data/test.txt 
welcome to arppinging.com
/ # 

查看映射卷

[root@localhost b2]# docker inspect -f {{.Mounts}} b1
[{volume 4e1f3596768357e009da8df6d38c4339df04b64dee2d80e262609f83b87d4177 /var/lib/docker/volumes/4e1f3596768357e009da8df6d38c4339df04b64dee2d80e262609f83b87d4177/_data /data local  true }]

[root@localhost b2]# docker inspect -f {{.Mounts}} b3
[{volume 4e1f3596768357e009da8df6d38c4339df04b64dee2d80e262609f83b87d4177 /var/lib/docker/volumes/4e1f3596768357e009da8df6d38c4339df04b64dee2d80e262609f83b87d4177/_data /data local  true }]
[root@localhost b2]# 

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

文章題目:Dcoker入門之存儲卷-創(chuàng)新互聯(lián)
文章地址:http://www.muchs.cn/article42/dppdec.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站建設、營銷型網站建設、手機網站建設、網站維護網站排名、軟件開發(fā)

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)