溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Docker系列7:邏輯卷

發(fā)布時(shí)間:2020-06-29 06:29:44 來(lái)源:網(wǎng)絡(luò) 閱讀:245 作者:zxhk 欄目:云計(jì)算

一、存儲(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)分布式

    Docker系列7:邏輯卷

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,讓21用相同的存儲(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)求:

? ??Docker系列7:邏輯卷

  • 這個(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



向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI