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

Docker 存儲卷(Volume)核心概念、類型與操作指南(最新整理)

 更新時(shí)間:2025年09月10日 14:32:58   作者:敲上癮  
Docker 存儲卷 是 Docker 容器中用于持久化存儲數(shù)據(jù)的獨(dú)立文件系統(tǒng)區(qū)域,它獨(dú)立于容器的聯(lián)合文件系統(tǒng),其生命周期可以完全獨(dú)立于創(chuàng)建它的容器,本文給大家介紹Docker 存儲卷(Volume)核心概念、類型與操作指南,感興趣的朋友一起看看吧

一、存儲卷概念

數(shù)據(jù)卷(Volumes)是 Docker 中持久化存儲數(shù)據(jù)的推薦方式,它獨(dú)立于容器生命周期,可以高效地在容器間共享數(shù)據(jù)。

什么是存儲卷?
  Docker 存儲卷 是 Docker 容器中用于持久化存儲數(shù)據(jù)的獨(dú)立文件系統(tǒng)區(qū)域。它獨(dú)立于容器的聯(lián)合文件系統(tǒng),其生命周期可以完全獨(dú)立于創(chuàng)建它的容器。簡單來說,可以把它理解成容器中的一個(gè)共享文件夾或外部硬盤,這個(gè)文件夾直接映射到主機(jī)(或其它遠(yuǎn)程存儲)上的一個(gè)真實(shí)目錄。

為什么要使用存儲卷?

  1. 容器銷毀或誤操作等會導(dǎo)致數(shù)據(jù)丟失,而存儲卷就可以起到一個(gè)數(shù)據(jù)備份的作用。
  2. 宿主機(jī)和容器,容器和容器,它們之間文件系統(tǒng)是相互隔離的,要完成數(shù)據(jù)交互很麻煩,而存儲卷起到一個(gè)交通樞紐的功能,或者說相當(dāng)于一個(gè)“共享目錄”。

二、存儲卷分類

Docker 提供了三種方式將數(shù)據(jù)從宿主機(jī)掛載到容器中:
  管理卷(volume docker )。默認(rèn)映射到宿主機(jī)的/var/lib/docker/volumes目錄下,只需要在容器內(nèi)指定容器的掛載點(diǎn)是什么,而被綁定宿主機(jī)下的那個(gè)目錄,是由容器引擎 daemon自行創(chuàng)建一個(gè)空的目錄,或者使用一個(gè)已經(jīng)存在的目錄,與存儲卷建立存儲關(guān)系,這種方式極大解脫用戶在使用卷時(shí)的耦合關(guān)系,缺陷是用戶無法指定那些使用目錄,臨時(shí)存儲比較適合;
  綁定數(shù)據(jù)卷(bind mount)。映射到宿主機(jī)指定路徑下,在宿主機(jī)上的路徑要人工的指定一個(gè)特定的路徑,在容器中也需要指定一個(gè)特定的路徑,兩個(gè)已知的路徑建立關(guān)聯(lián)關(guān)系。
  臨時(shí)數(shù)據(jù)卷(tmpfs mount).映射到于宿主機(jī)內(nèi)存中,一旦容器停止運(yùn)行,tmpfs mounts 會被移除,數(shù)據(jù)就會丟失,用于高性能的臨時(shí)數(shù)據(jù)存儲。

2.1 管理卷

創(chuàng)建卷
方法一:Volume命令操作

命令清單:

  • docker volume create:創(chuàng)建存儲卷
  • docker volume inspect:顯示存儲卷詳細(xì)信息
  • docker volume ls: 列出存儲卷
  • docker volume prune:清理所有無用數(shù)據(jù)卷
  • docker volume rm:刪除卷,使用中的無法刪除

示例:

  • 注:docker volume create不加卷名稱,生成匿名存儲卷
  • 注:docker volume inspect支持查看多個(gè)存儲卷
  • 注:docker volume rmdocker volume prune-f選項(xiàng)表示強(qiáng)制刪除

方法二:-v 或者–mount 指定
docker run創(chuàng)建并啟動容器時(shí)添加-v--mount 都可以完成管理卷的創(chuàng)建和掛載
-v 選項(xiàng)
功能:完成目錄映射
語法:

docker run -v name:directory[:options]

參數(shù):

  • 第一個(gè)參數(shù):卷名稱
  • 第二個(gè)參數(shù):卷映射到容器的目錄
  • 第三個(gè)參數(shù):選項(xiàng),如 ro 表示 readonly

示例:

效果:

–mount選項(xiàng)

功能:完成目錄映射
語法:

--mount '<key>=<value>,<key>=<value>'

關(guān)鍵參數(shù):

  • type:類型表示 bind, volume, or tmpfs
  • source,src:對于命名卷,這是卷的名稱。對于匿名卷,省略此字段
  • destination,dst,target:文件或目錄掛載在容器中的路徑
  • ro,readonly:只讀方式掛載

示例:

docker run -d --name myweb2 --mount 'src=myweb2,dst=/usr/share/nginx/html' nginx:1.24.0

效果和-v選項(xiàng)相同

  • 注意1:添加ro選項(xiàng)限制的是容器里的寫權(quán)限。
  • 注意2:容器刪除卷的數(shù)據(jù)不會刪除,除非用 docker volume rm 刪除。因?yàn)榫肀旧砭褪莵肀Wo(hù)數(shù)據(jù)的。
  • 注意3:卷共享。不同容器可以使用同一個(gè)卷,解決了容器與容器之間數(shù)據(jù)交互繁瑣的問題。

2.2 綁定數(shù)據(jù)卷

綁定卷 bind mount-v--mount 都可以完成綁定卷的創(chuàng)建
-v 選項(xiàng)
功能:完成卷映射
語法:

docker run -v name:directory[:options] ………

  • 注意1:-v選項(xiàng)下,如果宿主機(jī)沒有對應(yīng)的目錄,會自動創(chuàng)建,而–mount則會掛載失敗。
  • 注意2:與管理卷不同,容器目錄原有數(shù)據(jù)會被清空,同步成宿主機(jī)目錄下的數(shù)據(jù)。
  • 注意3:ro限制的是宿主機(jī)的寫操作。

–mount選項(xiàng)
功能:完成目錄映射
語法:

--mount '<key>=<value>,<key>=<value>'

關(guān)鍵參數(shù):

  • type: 類型表示 bind, volume, or tmpfs
  • source, src: 宿主機(jī)目錄,這個(gè)和管理卷是不一樣的
  • destination, dst,target: 文件或目錄掛載在容器中的路徑
  • ro,readonly: 只讀方式掛載

示例:

docker run -d --name=myweb3 --mount 
type=bind,src=/home/qsy/gitDocker/data/test2
,dst=/usr/share/nginx/html nginx:1.24.0

注意:在命令行中不能像這個(gè)把指令分行寫(必須寫在一行),這里只是方便展示。
效果同-v選項(xiàng)。

特性管理卷綁定卷
創(chuàng)建者Docker用戶自己
存儲位置Docker管理的區(qū)域用戶指定的任何目錄
控制權(quán)Docker用戶
移植性
典型用途數(shù)據(jù)庫數(shù)據(jù)、應(yīng)用程序產(chǎn)生的需要持久化的數(shù)據(jù)配置文件、源代碼、日志文件(在主機(jī)和容器間共享)
備份與遷移使用 docker volume 命令操作,相對簡單需要操作主機(jī)文件系統(tǒng),復(fù)雜度高

2.3 臨時(shí)數(shù)據(jù)卷

臨時(shí)卷 tmpfs:臨時(shí)卷數(shù)據(jù)位于內(nèi)存中,在容器和宿主機(jī)之外(僅在容器運(yùn)行期間存在)。

局限性

  • 不同于管理卷和綁定卷,不能在容器之間共享 tmpfs 掛載
  • 這個(gè)功能只有在 Linux 上運(yùn)行 Docker 時(shí)才可用

創(chuàng)建卷
方法一:
–tmpfs選項(xiàng)
功能:完成臨時(shí)卷映射
語法:

--tmpfs /app
  • 注意1:數(shù)據(jù)在宿主機(jī)內(nèi)存里,/app是容器目錄。如果該目錄不存在則會創(chuàng)建。
  • 注意2:該容器的目錄會被清空。
  • 注意3:當(dāng)容器重啟后,tmpfs目錄會被銷毀,或恢復(fù)成原來的樣子。

示例:

docker run -d --name=myweb4 --tmpfs /test1 nginx:1.24.0

方法二:
--mount選項(xiàng)
功能:完成目錄映射
語法:

--mount '<key>=<value>,<key>=<value>'

關(guān)鍵參數(shù):

  • type:類型表示 bind, volume, or tmpfs
  • destination,dst,target:掛載在容器中的路徑
  • tmpfs-sizetmpfs 掛載的大?。ㄒ宰止?jié)為單位)。默認(rèn)無限制。
  • tmpfs-modetmpfs 的八進(jìn)制文件模式。例如,700 或 0770。默認(rèn)為 1777 或全局可寫。

示例:

docker run -d --name=myweb5 --mount type=tmpfs,dst=/usr/share/nginx/html nginx:1.24.1

三、MySQL災(zāi)難恢復(fù)

接下來我們演示把數(shù)據(jù)庫容器數(shù)據(jù)丟失,然后通過存儲卷恢復(fù)的過程,分為以下幾步:

  1. 掛載存儲卷
  2. 模擬數(shù)據(jù)生產(chǎn)
  3. 刪除數(shù)據(jù)庫容器
  4. 恢復(fù)數(shù)據(jù)
  5. 登錄mysql并查看數(shù)據(jù)是否恢復(fù)

創(chuàng)建mysql容器并掛載:

docker run -d --name 容器的名字 -v 宿主機(jī)目錄:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=數(shù)據(jù)庫密碼 mysql:版本號

模擬數(shù)據(jù)庫存儲:

刪除mysql容器

恢復(fù)數(shù)據(jù)(數(shù)據(jù)都在宿主機(jī)目錄下,再用同樣的方式掛載就行)

登錄數(shù)據(jù)庫查看數(shù)據(jù)是否恢復(fù):

四、存儲卷的局限性

  1. 數(shù)據(jù)生命周期與容器分離:這既是一個(gè)優(yōu)點(diǎn),也是一個(gè)缺點(diǎn)。卷的生命周期獨(dú)立于容器,即使刪除了所有使用該卷的容器,卷及其數(shù)據(jù)仍然存在。它有效的保護(hù)了容器的數(shù)據(jù),但很容易導(dǎo)致“孤兒卷”或“僵尸卷”堆積,占用大量磁盤空間,如果不手動清理,會造成資源浪費(fèi)。
  2. 可移植性挑戰(zhàn):卷本身在創(chuàng)建時(shí)是“空白”的,其內(nèi)容通常由容器在運(yùn)行時(shí)填充。你不能像鏡像一樣,輕松地將一個(gè)包含數(shù)據(jù)的卷從一個(gè)環(huán)境(如開發(fā)機(jī))直接“復(fù)制”或“遷移”到另一個(gè)環(huán)境(如生產(chǎn)服務(wù)器)。
  3. 備份和遷移流程復(fù)雜:備份一個(gè)正在被容器使用的活躍卷存在數(shù)據(jù)一致性的風(fēng)險(xiǎn)(例如,數(shù)據(jù)庫文件可能在備份過程中被修改)。標(biāo)準(zhǔn)的 Docker 命令沒有提供一鍵式的卷備份功能。
  4. 空間分配不靈活:Docker 卷默認(rèn)使用宿主機(jī)的存儲空間,你無法像在虛擬機(jī)中那樣,輕松地為單個(gè)卷設(shè)置大小限制。一個(gè)失控的容器進(jìn)程(例如,日志瘋狂輸出)可能會寫滿整個(gè)卷,進(jìn)而占滿宿主機(jī)的磁盤空間,導(dǎo)致宿主機(jī)和其他容器都出現(xiàn)問題。
  5. 安全性與訪問控制:卷中的數(shù)據(jù)默認(rèn)由容器的用戶(通常是 root)擁有和寫入。如果容器以特權(quán)模式運(yùn)行或被攻破,攻擊者可以通過卷對宿主機(jī)文件系統(tǒng)造成破壞(盡管比綁定掛載更安全)。

到此這篇關(guān)于Docker 存儲卷(Volume)核心概念、類型與操作指南(最新整理)的文章就介紹到這了,更多相關(guān)Docker 存儲卷 Volume內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker-compose多服務(wù)使用詳解

    Docker-compose多服務(wù)使用詳解

    文章概述了部署多服務(wù)的流程:創(chuàng)建文件夾、上傳并解壓文件,刪除舊容器,修正文件名,添加執(zhí)行權(quán)限后運(yùn)行腳本,最終啟動多個(gè)服務(wù)
    2025-08-08
  • docker中容器的網(wǎng)絡(luò)配置常用命令詳解

    docker中容器的網(wǎng)絡(luò)配置常用命令詳解

    這篇文章主要介紹了docker中容器的網(wǎng)絡(luò)配置常用命令詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Docker部署Go項(xiàng)目發(fā)布鏡像到倉庫

    Docker部署Go項(xiàng)目發(fā)布鏡像到倉庫

    這篇文章主要為大家介紹了Docker部署Go項(xiàng)目發(fā)布鏡像到倉庫示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • docker中如何將jar包構(gòu)建成鏡像并執(zhí)行

    docker中如何將jar包構(gòu)建成鏡像并執(zhí)行

    這篇文章主要介紹了docker中如何將jar包構(gòu)建成鏡像并執(zhí)行問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 刪除docker里建立容器的操作方法

    刪除docker里建立容器的操作方法

    在本篇文章里小編給大家分享了一篇關(guān)于刪除docker里建立容器的操作方法,需要的朋友們可以學(xué)習(xí)下。
    2020-03-03
  • docker在ubuntu14.04下的安裝步驟

    docker在ubuntu14.04下的安裝步驟

    這篇文章主要介紹了docker在ubuntu14.04下的安裝步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • Docker-compose搭建Redis集群(Sentinel)的實(shí)現(xiàn)

    Docker-compose搭建Redis集群(Sentinel)的實(shí)現(xiàn)

    本文主要介紹了Docker-compose搭建Redis集群(Sentinel)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Docker搭建prometheus(普羅米修斯)的方法步驟

    Docker搭建prometheus(普羅米修斯)的方法步驟

    phometheus:當(dāng)前一套非常流行的開源監(jiān)控和報(bào)警系統(tǒng),本文主要介紹了Docker搭建prometheus(普羅米修斯)的方法步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • Docker配置從私有倉庫拉取鏡像方式

    Docker配置從私有倉庫拉取鏡像方式

    本文詳細(xì)介紹了如何修改Docker配置文件以使用私有倉庫,并解決相關(guān)問題,包括配置文件的編輯、DNS設(shè)置、證書管理以及系統(tǒng)時(shí)間同步
    2025-03-03
  • Rancher+Docker+SpringBoot實(shí)現(xiàn)微服務(wù)部署、擴(kuò)容、環(huán)境監(jiān)控

    Rancher+Docker+SpringBoot實(shí)現(xiàn)微服務(wù)部署、擴(kuò)容、環(huán)境監(jiān)控

    Rancher?是一套容器管理平臺,可以在生產(chǎn)環(huán)境中快捷的部署和管理容器,方便的對容器進(jìn)行cpu內(nèi)存環(huán)境監(jiān)控、日志監(jiān)控、擴(kuò)容縮容,自動重啟,這篇文章主要介紹了Rancher+Docker+SpringBoot實(shí)現(xiàn)微服務(wù)部署、擴(kuò)容、環(huán)境監(jiān)控,需要的朋友可以參考下
    2022-04-04

最新評論