您好,登錄后才能下訂單哦!
一、存儲卷簡介
1、什么是存儲卷(volume)
就將一個容器的目錄和一個宿主機的目錄同步起來了,就稱之為volume,也就是存儲卷。
當在容器中產生數據的時候,這個數據就會直接寫入到了物理磁盤,就解決了性能的問題
使用存儲卷,還實現了數據的持久存儲
通過使用存儲卷,還可以實現分布式
2、存儲卷的類型
Bind mount volume:
Docker managed volume
Bind mount volume
這種類型是指在創建容器的時候,需要同時指定容器中的掛載點和宿主機的一個目錄,這樣來完成掛載
Docker managed volume
這種類型是在創建容器的時候,僅僅需要同指定容器中的掛載點,不需要指定宿主機中的目錄就可以完成掛載。
宿主機中的目錄會由docker自動生成,而且是隨機生成,默認:/var/lib/docker/vfs/dir/xxxx
案例1:創建一個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:創建容器,使用宿主機的/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
宿主機上的/disk如果不存在,會自動創建
我們在設置容器所用的存儲卷的時候,還可以設置容器所用的存成卷和另一個容器的存儲卷相同
案例3:比如前面我們做好了容器httpd1,這里我們再做一個httpd2,讓2和1用相同的存儲卷
[root@host1?..]#?docker?run?--name?httpd2?--rm?-it?--volumes-from?httpd1?busybox /?#? /?#?ls?/data/ t.txt /?#
3、基礎架構容器使用舉例
首先我們可以先做個容器,這個容器不需要運行,而是僅僅作為一個基礎架構支撐容器
新建容器的卷復制于這個容器,比如,復制三個容器出來,第一個是nginx作為反向代理,第二個是apache出來靜態請求,第三個是php處理php請求:
? ??
這個基礎架構支撐容器,還可以提供一個公共的名稱空間,這樣上面的三個容器就有了相同的IP,主機名,而且也可以基于127進行通信了
案例:基于基礎架構容器制作容器
1)先創建基礎架構容器
[root@host1?~]#?docker?run?--name?base1?-it?--rm?-v?/disk:/data?busybox
2)創建nginx容器,復制基礎架構的卷,并使用基礎架構名空間
[root@host1?..]#?docker?run?--name?nginx1?\ >?--network?container:base1?\ >?--volumes-from?base1?-it?nginx:1.14-alpine
過濾容器屬性數據
docker inspect的結果是一個列表,在列表列表中是json格式的字符串
如果此時要過濾數據,其格式是 docker inspect -f {xxx} b5 來實現過濾效果
-f后面是雙{},外側的{}是固定格式,內側的{}表示從{}中進行過濾
過濾元素的格式 -f '{{.path.item}}'
[root@host1?..]#?docker?inspect?httpd1?-f?'{{.Id}}' 24053ef79c61400f0f8a151087bfd7c1e31e004ee9b87b8a2e64f1efd72d2b52 [root@host1?..]#?docker?inspect?httpd1?-f?'{{.State.Status}}' running
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。