欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker中數(shù)據(jù)卷(volume)管理的兩種方式

 更新時(shí)間:2021年07月29日 11:42:24   作者:Tuki_a  
數(shù)據(jù)卷有兩種形式,一種是容器中的某個(gè)目錄,它可以被別的容器引用,只要有一個(gè)容器引用了這個(gè)數(shù)據(jù)卷,數(shù)據(jù)就不會(huì)被刪除;另一種數(shù)據(jù)卷是將容器中的數(shù)據(jù)卷和宿主機(jī)的目錄進(jìn)行掛載。 數(shù)據(jù)卷可以在多個(gè)容器之間共享,修改數(shù)據(jù)卷不會(huì)影響鏡像

上篇文章給大家介紹過 docker基礎(chǔ)知識(shí)之掛載本地目錄的方法 ,今天給大家介紹Docker中數(shù)據(jù)卷(volume)管理的兩種方式,具體內(nèi)容如下所示:

什么是數(shù)據(jù)卷

數(shù)據(jù)卷( volume ):volume是存在于一個(gè)或多個(gè)容器中的特定文件或文件夾,這個(gè)目錄以獨(dú)立于聯(lián)合文件系統(tǒng)的形式在宿主機(jī)中存在,并為數(shù)據(jù)的共享與持久化提供便利。

為什么要用數(shù)據(jù)卷

 Docker分層文件系統(tǒng)存在的問題:
Docker的鏡像是由一系列的只讀層組合而來的,當(dāng)啟動(dòng)一個(gè)容器時(shí), Docker加載鏡像的所有只讀層,并在最上層加入一個(gè)讀寫層。這個(gè)設(shè)計(jì)使得Docker可以提高鏡像構(gòu)建、存儲(chǔ)和分發(fā)的效率,節(jié)省了時(shí)間和存儲(chǔ)空間,然而也存在如下問題:
1、性能差。
2、多個(gè)容器之間的數(shù)據(jù)無法共享。
3、生命周期與容器相同。當(dāng)刪除容器時(shí),容器產(chǎn)生的數(shù)據(jù)將丟失。數(shù)據(jù)卷機(jī)制的好處:
1、mount到主機(jī)中,繞開分層文件系統(tǒng)。
2、volume能在不同的容器之間共享和重用。
3、和主機(jī)磁盤性能相同。
4、對(duì)volume中數(shù)據(jù)的操作不會(huì)影響到鏡像本身。
5、volume的生存周期獨(dú)立于容器的生存周期,即使刪除容器,volume仍然會(huì)存在,沒有任何容器使用的volume也不會(huì)被Docker刪除。
Docker提供了volumedriver接口,通過實(shí)現(xiàn)該接口,我們可以為Docker容器提供不同的volume存儲(chǔ)支持。當(dāng)前官方默認(rèn)實(shí)現(xiàn)了local這種volumedriver,它使用宿主機(jī)的文件系統(tǒng)為Docker容器提供volume。

數(shù)據(jù)卷管理的兩種方式

Docker的volume的本質(zhì)是容器中一個(gè)特殊的目錄。在容器的創(chuàng)建過程中,Docker會(huì)將宿主機(jī)上的指定目錄(一個(gè)以volume ID為名稱的目錄,或者指定的宿主機(jī)目錄)掛載到容器中指定的目錄上(使用bing mount掛載方法),故掛載完成后的宿主機(jī)目錄和容器內(nèi)的目標(biāo)目錄表現(xiàn)一致。

1、綁定掛載bind mount

bind mount是將主機(jī)上的目錄或文件mount到容器里。使用直觀高效,易于理解。
使用-v選項(xiàng)指定掛載路徑,格式 <host path>:<container path>
#前面是宿主機(jī)真實(shí)存在的路徑:后面是容器內(nèi)的路徑

后臺(tái)運(yùn)行一個(gè)使用nginx鏡像的容器并將宿主機(jī)的/data目錄掛載到容器的目錄/usr/share/nginx/html下
[root@server1 ~]# docker run -d --name demo -v /data:/usr/share/nginx/html nginx

在這里插入圖片描述

調(diào)到前臺(tái)運(yùn)行,分別查看宿主機(jī)和容器的指定的目錄下的內(nèi)容,是一樣的。這是因?yàn)檫@種方式掛載和我們平時(shí)使用mount方式是一樣的,原有數(shù)據(jù)隱藏,替換為宿主機(jī)的數(shù)據(jù)。
##/data目錄下這么多東西是因?yàn)閐ocker默認(rèn)數(shù)據(jù)目錄是/data

[root@server1 ~]# docker exec -it demo bash

在這里插入圖片描述

bind mount默認(rèn)權(quán)限是讀寫rw,可以在掛載時(shí)指定只讀ro。

-v選項(xiàng)指定的路徑,如果不存在,掛載時(shí)會(huì)自動(dòng)創(chuàng)建。
docker run -it --name vm1 \ /etc/yum.repos.d/dvd.repo:/etc/yum.repos.d/dvd.repo:ro rhel7 bash

2、docker managed volume

bind mount必須指定host文件系統(tǒng)路徑,限制了移植性。
docker managed volume不需要指定mount源,docker自動(dòng)為容器創(chuàng)建數(shù)據(jù)卷目錄。默認(rèn)創(chuàng)建的數(shù)據(jù)卷目錄都在 /var/lib/docker/volumes 中。
如果掛載時(shí)指向容器內(nèi)已有的目錄,容器內(nèi)原有數(shù)據(jù)會(huì)被復(fù)制到volume中。
創(chuàng)建卷方式:

[root@server1 ~]# docker volume create webdata		#創(chuàng)建一個(gè)名為webdata的卷
[root@server1 ~]# docker rm -f demo		#把上面創(chuàng)建的卷刪掉
[root@server1 ~]# docker run -d --name demo -v webdata:/usr/share/nginx/html nginx		
#把webdata這個(gè)卷掛載到容器內(nèi)的/usr/share/nginx/html目錄上并運(yùn)行一個(gè)容器

將創(chuàng)建的webdata卷掛載到容器的/usr…目錄下
在這里插入圖片描述
進(jìn)入docker默認(rèn)創(chuàng)建的數(shù)據(jù)卷目錄查看卷里的內(nèi)容,我們可以看到上面只創(chuàng)建了卷,沒有寫入任何東西,但卷里有內(nèi)容是因?yàn)閽燧d時(shí)容器內(nèi)指定目錄里原本有東西,所以復(fù)制過來的
在這里插入圖片描述
我們運(yùn)行容器使用的是nginx鏡像,訪問一下,沒有問題
在這里插入圖片描述
如果掛載時(shí)沒指定mount源,那么docker會(huì)自動(dòng)隨機(jī)創(chuàng)建一個(gè)文件名很長(zhǎng)的卷

[root@server1 ~]# docker rm -f demo
[root@server1 ~]# docker run -d --name demo -v /usr/share/nginx/html nginx
67ab13a7b24c19c53f4ce117136b9d0e4dec93c615a0192ead919d10e6c2acae

在這里插入圖片描述
我們使用docker inspect demo命令查看下卷的源目錄
在這里插入圖片描述
得到路徑后就可以查看目錄下的內(nèi)容了

ls /var/lib/docker/volumes/2ca22fd769e4b7b6f5a02dd96fe8d47a6df5578074c0d340ced3ab33b25456ca/_data

在這里插入圖片描述

bind mount 與 docker managed volume 對(duì)比

相同點(diǎn):兩者都是 host 文件系統(tǒng)中的某個(gè)路徑。
不同點(diǎn)如圖:
在這里插入圖片描述

到此這篇關(guān)于Docker中的數(shù)據(jù)卷(volume)管理的兩種方式的文章就介紹到這了,更多相關(guān)Docker數(shù)據(jù)卷volume內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker如何安裝PostgreSQL

    Docker如何安裝PostgreSQL

    這篇文章主要介紹了Docker如何安裝PostgreSQL,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Docker基礎(chǔ)知識(shí)之Linux namespace圖文詳解

    Docker基礎(chǔ)知識(shí)之Linux namespace圖文詳解

    這篇文章主要給大家介紹了關(guān)于Docker基礎(chǔ)知識(shí)之Linux namespace的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Docker容器添加映射端口的兩種實(shí)現(xiàn)方法

    Docker容器添加映射端口的兩種實(shí)現(xiàn)方法

    本文主要介紹了Docker容器添加映射端口的兩種實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 解決docker安裝后運(yùn)行hello-world報(bào)錯(cuò)的問題

    解決docker安裝后運(yùn)行hello-world報(bào)錯(cuò)的問題

    這篇文章主要介紹了解決docker安裝后運(yùn)行hello-world報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • docker 安裝nacos并配置數(shù)據(jù)庫的教程詳解

    docker 安裝nacos并配置數(shù)據(jù)庫的教程詳解

    這篇文章主要介紹了docker 安裝nacos并配置數(shù)據(jù)庫的教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 解決docker訪問外部https數(shù)字證書問題

    解決docker訪問外部https數(shù)字證書問題

    這篇文章主要介紹了docker訪問外部https數(shù)字證書問題,為了解決證書驗(yàn)證的問題,我們需要在構(gòu)建 docker 鏡像的時(shí)候?qū)?nbsp;ca-certificates 根證書裝上,需要的朋友可以參考下
    2022-09-09
  • Docker和宿主機(jī)之間如何共享文件

    Docker和宿主機(jī)之間如何共享文件

    這篇文章主要介紹了Docker和宿主機(jī)之間如何共享文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • docker搭建es集群實(shí)現(xiàn)過程詳解

    docker搭建es集群實(shí)現(xiàn)過程詳解

    這篇文章主要為大家介紹了docker搭建es集群實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Docker開啟TLS和CA認(rèn)證的方法步驟

    Docker開啟TLS和CA認(rèn)證的方法步驟

    本文主要介紹了Docker開啟TLS和CA認(rèn)證的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Docker鏡像管理常用操作代碼示例

    Docker鏡像管理常用操作代碼示例

    這篇文章主要介紹了Docker鏡像管理常用操作代碼示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10

最新評(píng)論