您好,登錄后才能下訂單哦!
一、存儲(chǔ)卷簡(jiǎn)介
1、什么是存儲(chǔ)卷(volume)
就將一個(gè)容器的目錄和一個(gè)宿主機(jī)的目錄同步起來(lái)了,就稱(chēng)之為volume,也就是存儲(chǔ)卷。
當(dāng)在容器中產(chǎn)生數(shù)據(jù)的時(shí)候,這個(gè)數(shù)據(jù)就會(huì)直接寫(xiě)入到了物理磁盤(pán),就解決了性能的問(wèn)題
使用存儲(chǔ)卷,還實(shí)現(xiàn)了數(shù)據(jù)的持久存儲(chǔ)
通過(guò)使用存儲(chǔ)卷,還可以實(shí)現(xiàn)分布式
2、存儲(chǔ)卷的類(lèi)型
Bind mount volume:
Docker managed volume
Bind mount volume
這種類(lèi)型是指在創(chuàng)建容器的時(shí)候,需要同時(shí)指定容器中的掛載點(diǎn)和宿主機(jī)的一個(gè)目錄,這樣來(lái)完成掛載
Docker managed volume
這種類(lèi)型是在創(chuàng)建容器的時(shí)候,僅僅需要同指定容器中的掛載點(diǎn),不需要指定宿主機(jī)中的目錄就可以完成掛載。
宿主機(jī)中的目錄會(huì)由docker自動(dòng)生成,而且是隨機(jī)生成,默認(rèn):/var/lib/docker/vfs/dir/xxxx
案例1:創(chuàng)建一個(gè)docker管理的卷
[root@host1?~]#?docker?run?--name?httpd1?-it?--rm?-v?/data?busybox /?#? /?#?echo?"test?message">>/data/test.txt /?#
[root@host1?~]#?docker?inspect?httpd1 "Mounts":?[ ????????????{ ????????????????"Type":?"volume", ????????????????"Name":?"636a1967c63705161f941550edf4b0ced1584bf71087596ad61a49df4cd6ae4c", ????????????????"Source":?"/var/lib/docker/volumes/636a1967c63705161f941550edf4b0ced1584bf71087596ad61a49df4cd6ae4c/_data", ????????????????"Destination":?"/data", ????????????????"Driver":?"local", ????????????????"Mode":?"", ????????????????"RW":?true, ????????????????"Propagation":?"" ????????????} ????????],
[root@host1?~]#?cd?/var/lib/docker/volumes/636a1967c63705161f941550edf4b0ced1584bf71087596ad61a49df4cd6ae4c/_data [root@host1?_data]#?cat?test.txt? test?message [root@host1?_data]#
案例2:創(chuàng)建容器,使用宿主機(jī)的/disk目錄掛載到容器中
[root@host1?~]#?docker?run?--name?httpd1?-it?--rm?-v?/disk:/data?busybox /?#? /?#?echo?"test?message">/data/t.txt /?#
[root@host1?..]#?cat?/disk/t.txt? test?message
宿主機(jī)上的/disk如果不存在,會(huì)自動(dòng)創(chuàng)建
我們?cè)谠O(shè)置容器所用的存儲(chǔ)卷的時(shí)候,還可以設(shè)置容器所用的存成卷和另一個(gè)容器的存儲(chǔ)卷相同
案例3:比如前面我們做好了容器httpd1,這里我們?cè)僮鲆粋€(gè)httpd2,讓2和1用相同的存儲(chǔ)卷
[root@host1?..]#?docker?run?--name?httpd2?--rm?-it?--volumes-from?httpd1?busybox /?#? /?#?ls?/data/ t.txt /?#
3、基礎(chǔ)架構(gòu)容器使用舉例
首先我們可以先做個(gè)容器,這個(gè)容器不需要運(yùn)行,而是僅僅作為一個(gè)基礎(chǔ)架構(gòu)支撐容器
新建容器的卷復(fù)制于這個(gè)容器,比如,復(fù)制三個(gè)容器出來(lái),第一個(gè)是nginx作為反向代理,第二個(gè)是apache出來(lái)靜態(tài)請(qǐng)求,第三個(gè)是php處理php請(qǐng)求:
? ??
這個(gè)基礎(chǔ)架構(gòu)支撐容器,還可以提供一個(gè)公共的名稱(chēng)空間,這樣上面的三個(gè)容器就有了相同的IP,主機(jī)名,而且也可以基于127進(jìn)行通信了
案例:基于基礎(chǔ)架構(gòu)容器制作容器
1)先創(chuàng)建基礎(chǔ)架構(gòu)容器
[root@host1?~]#?docker?run?--name?base1?-it?--rm?-v?/disk:/data?busybox
2)創(chuàng)建nginx容器,復(fù)制基礎(chǔ)架構(gòu)的卷,并使用基礎(chǔ)架構(gòu)名空間
[root@host1?..]#?docker?run?--name?nginx1?\ >?--network?container:base1?\ >?--volumes-from?base1?-it?nginx:1.14-alpine
過(guò)濾容器屬性數(shù)據(jù)
docker inspect的結(jié)果是一個(gè)列表,在列表列表中是json格式的字符串
如果此時(shí)要過(guò)濾數(shù)據(jù),其格式是 docker inspect -f {xxx} b5 來(lái)實(shí)現(xiàn)過(guò)濾效果
-f后面是雙{},外側(cè)的{}是固定格式,內(nèi)側(cè)的{}表示從{}中進(jìn)行過(guò)濾
過(guò)濾元素的格式 -f '{{.path.item}}'
[root@host1?..]#?docker?inspect?httpd1?-f?'{{.Id}}' 24053ef79c61400f0f8a151087bfd7c1e31e004ee9b87b8a2e64f1efd72d2b52 [root@host1?..]#?docker?inspect?httpd1?-f?'{{.State.Status}}' running
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。