Docker 使用基礎(4)—存儲卷

?

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??🎬慕斯主頁修仙—別有洞天

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???今日夜電波:秒針を噛む—ずっと真夜中でいいのに。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 0:34━━━━━━?💟──────── 4:20
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 🔄 ? ?? ? ? ? ?? ? ????

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?💗關注👍點贊🙌收藏您的每一次鼓勵都是對我莫大的支持😍


?目錄

首先理解幾個概念

Docker存儲卷(Volume)是什么?

Docker卷的分類?

管理卷(Volumes)

管理卷的創建方式一:docker volume create

docker volume inspect

docker volume ls

docker volume rm

docker volume prune

管理卷的創建方式二:使用run的 -v 或者 --mount 指定創建管理卷

管理卷的創建方式三:Dockerfile 匿名卷

Docker 卷生命周期

Docker 卷共享

綁定卷(bind mount)

-v 參數創建卷

--mount 參數創建綁定卷

臨時卷

--tmpfs 創建

--mount 指定參數創建

臨時卷的作用


首先理解幾個概念

Docker存儲卷(Volume)是什么?

????????存儲卷就是將宿主機的本地文件系統中存在的某個目錄直接與容器內部的文件系統上的某一目錄建立綁定關系。這就意味著,當我們在容器中的這個目錄下寫入數據時,容器會將其內容直接寫入到宿主機上與此容器建立了綁定關系的目錄。

????????在宿主機上的這個與容器形成綁定關系的目錄被稱作存儲卷。卷的本質是文件或者目錄,它可以繞過默認的聯合文件系統,直接以文件或目錄的形式存在于宿主機上。

????????宿主機的/data/web 目錄與容器中的/container/data/web 目錄綁定關系,然后容器中的進程向這個目錄中寫數據時,是直接寫在宿主機的目錄上的,繞過容器文件系統與宿主機的文件系統建立關聯關系,使得可以在宿主機和容器內共享數據庫內容,讓容器直接訪問宿主機中的內容,也可以宿主機向容器寫入內容, 容器和宿主機的數據讀寫是同步的。大致圖示如下:

????????存儲卷大致在Docker架構中位于Docker daemon模塊中,不僅如此,Network、Compose也位于這個模塊中。再來回顧一下這個架構:

Docker卷的分類?

????????Docker提供了三種主要的方式來將數據從宿主機掛載到容器中,以便實現數據的持久化、共享和高效管理。這三種方式分別是:

Volumes(卷):

Volumes是由Docker管理的存儲卷,它們位于宿主機文件系統的一個特定路徑下,默認路徑是/var/lib/docker/volumes/。Volumes提供了數據的持久化存儲,即使容器被刪除,數據也得以保留。此外,Volumes可以被多個容器共享,且它們獨立于容器的生命周期。使用docker volume create命令可以創建新的卷,而docker run命令中的--mount或-v選項可以將卷掛載到容器中。

Bind Mounts(綁定掛載):

Bind mounts允許將宿主機上的任意目錄或文件掛載到容器內。與Volumes不同,bind mounts可以掛載宿主機文件系統的任何位置,這意味著非Docker進程也可以訪問和修改這些文件或目錄。這增加了靈活性但也帶來了潛在的安全風險。使用docker run命令的-v選項可以指定一個bind mount,例如-v /path/on/host:/path/in/container。

Tmpfs Mounts(內存掛載):

Tmpfs mounts是一種特殊的掛載類型,它們只存在于宿主機的內存中,不會寫入到宿主機的文件系統。這意味著當容器停止時,掛載在tmpfs中的任何數據都會丟失,不會持久化。Tmpfs mounts適用于那些不需要持久存儲且希望提高性能的場景,因為它們減少了磁盤I/O。使用docker run命令的--tmpfs選項可以創建一個tmpfs掛載。

管理卷(Volumes)

管理卷的創建方式一:docker volume create

用途: 創建一個新的Docker卷。
語法:

docker volume create [OPTIONS] [VOLUME]

關鍵參數:

  • --driver-d: 指定創建卷時所用的驅動程序,如 local, nfs, azurefile 等。
  • --label: 設置卷的元數據標簽。
  • --name: 顯式指定卷的名稱。
  • --opt-o: 設置驅動程序特定的選項,如存儲大小限制等。

示例:

docker volume create --name=my-vol

docker volume inspect

用途: 顯示一個或多個卷的詳細信息。
語法:

docker volume inspect [OPTIONS] VOLUME [VOLUME...]

關鍵參數:

  • --format -f: 使用給定的 Go 模板格式化輸出。

示例:

docker volume inspect my-vol

docker volume ls

用途: 列出所有的Docker卷。
語法:

docker volume ls [OPTIONS]

關鍵參數:

  • --filter,-f : 根據提供的條件過濾輸出,如 label=production
  • --format :指定相應個格式,如 json,table。
  • -q: 僅顯示名稱

示例:

docker volume ls

docker volume rm

用途: 刪除一個或多個卷。
語法:

docker volume rm [OPTIONS] VOLUME [VOLUME...]

關鍵參數:

  • -f,--force:強制刪除

示例:

docker volume rm my-vol

docker volume prune

用途: 刪除所有未被容器使用的卷(懸空卷)。
語法:

docker volume prune [OPTIONS]

關鍵參數:

  • --all-a: 刪除所有卷,包括正在被容器使用的卷。
  • --force-f: 不提示確認,直接刪除。

示例:

docker volume prune


管理卷的創建方式二:使用run的 -v 或者 --mount 指定創建管理卷

-v 參數

? 功能:完成目錄映射

? 語法

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

? 參數

○ 第一個參數:卷名稱

○ 第二個參數:卷映射到容器的目錄

○ 第三個參數:選項,如 ro 表示 readonly


--mount 參數

? 功能:完成目錄映射

? 語法

docker run --mount '<key>=<value>,<key>=<value>' .........

? 參數

○ type : 類型表示 bind, volume, or tmpfs

○ source , src :對于命名卷,這是卷的名稱。對于匿名卷,省略此字段。

○ destination, dst,target:文件或目錄掛載在容器中的路徑

○ ro,readonly: 只讀方式掛載

管理卷的創建方式三:Dockerfile 匿名卷

????????我們也可以通過 dockerfile 的 VOLUME 指令在鏡像中創建 Data Volume,這樣只要通過該鏡像創建的容器都會存在掛載點,但值得注意的是通過 VOLUME 指令創建的掛載點,無法指定主機上對應的目錄,而是由 docker 隨機生成的

Docker 卷生命周期

????????當我們創建了管理卷并啟動啟動容器后,如果我們將運行著的容器給刪除,我們的管理卷并不會直接跟著被刪除,而是只有在自己使用docker volume rm 指令后才會被刪除。

?

Docker 卷共享

????????當多個容器掛載相同名字的管理卷或者宿主機相同位置的卷時,他們會共享同一個卷,如果卷的內容被修改則所有的容器中改卷對應數據的數據也會被修改。

例如如下兩個容器都是掛載了同一個卷:

docker run -v my-volume:/data container1
docker run -v my-volume:/data container2

綁定卷(bind mount)

????????需要注意的是綁定卷是以宿主機的目錄為主的,如果你的宿主機中要綁定的目錄下擁有文件,則容器中也會存在文件,若沒有文件而你的容器中有文件則容器中的文件也會變成沒有文件。

-v 參數創建卷

? 功能:

完成卷映射

? 語法

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

? 參數

○ 第一個參數: 宿主機目錄,這個和管理卷是不一樣的

○ 第二個參數:卷映射到容器的目錄

○ 第三個參數:選項,如 ro 表示 readonly

--mount 參數創建綁定卷

? 功能:

完成目錄映射

? 語法

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

? 關鍵參數

○ type : 類型表示 bind, volume, or tmpfs

○ source , src : 宿主機目錄,這個和管理卷是不一樣的。

○ destination, dst,target:文件或目錄掛載在容器中的路徑

○ ro,readonly: 只讀方式掛載

臨時卷

????????臨時卷數據位于內存中,在容器和宿主機之外。 tmpfs 局限性:不同于卷和綁定掛載,不能在容器之間共享 tmpfs 掛載。這個功能只有在 Linux 上運行 Docker 時才可用。需要注意的是:如果我們讓臨時卷掛載到已經存在的目錄里將會以臨時卷為主,如果放入比設置了大小的臨時卷還大的文件將會報錯,顯示空間不足!

--tmpfs 創建

? 功能:

完成臨時卷映射

? 語法

--tmpfs /app

--mount 指定參數創建

? 功能:

完成目錄映射

? 語法

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

? 關鍵參數

○ type : 類型表示 bind, volume, or tmpfs

○ destination, dst,target:掛載在容器中的路徑

○ tmpfs-size: tmpfs 掛載的大小(以字節為單位)。默認無限制。

○ tmpfs-mode: tmpfs 的八進制文件模式。例如, 700 或 0770。默認為 1777或全局可寫。

臨時卷的作用

????????在看完上面的示例后你可能覺得臨時卷沒什么作用,實際上臨時卷是可以提高我們的文件安全性的,普通的容器上的文件其實是可以在我們宿主機上搜索到的如:find -name命令,但是臨時卷中的問卷是找不到的,如下:

?


?

????????????????????? 感謝你耐心的看到這里?( ′・?・` )比心,如有哪里有錯誤請踢一腳作者o(╥﹏╥)o!?

????????????????????????????????? ? ? ??

????????????????????????????????????????????????????????????????????????給個三連再走嘛~??

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44288.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44288.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44288.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JVM堆內存的結構,YGC,FGC的原理

JVM堆內存結構&#xff1a; JVM堆內存可分為三個區域&#xff1a;新生代&#xff08;Young Generation&#xff09;、年老代&#xff08;Tenured Generation&#xff0c;也叫做Old Generation&#xff09;和永久代&#xff08;Permanent Generation&#xff0c;也叫做Method Ar…

linux 設置nginx開機自啟

1、關閉當前nginx運行 systemctl stop nginx 2、添加以下內容到nginx.service文件&#xff0c;注意nginx.pid文件的路徑&#xff0c;要替換哦&#xff01; vim /etc/systemd/system/nginx.service [Unit] DescriptionThe NGINX HTTP and reverse proxy server Afternetwork…

ArcGIS如何快速對齊兩個圖層

1、問題 如何讓兩個圖層快速對齊 2、使用捕捉工具 移動點或折點&#xff0c;使其與其他要素的折點、邊或端點精確重合。 可指定捕捉規則來控制是將輸入折點捕捉到指定距離范圍內的最近折點、邊還是端點。

MySQL數字相關數據處理函數

目錄 1. 隨機數生成 rand ( ) 2. 四舍五入 round&#xff08;&#xff09; 3. 舍去 truncate ( ) 4. 向上/下取整 5. 空處理 ifnull&#xff08; x , y &#xff09; 1. 隨機數生成 rand ( ) rand ( ) 生成 0 到 1 的隨機數&#xff1b; rand ( x ) 生成 0 到 1 的隨機數…

簡單理解Lua 協程(coroutine)

也許更好的閱讀體驗 協程簡單理解為可以暫停的線程&#xff0c;但是同一時刻只有一個協程可以處于運行狀態。 文章目錄 coroutine.create()coroutine.resume()coroutine.wrap()coroutine.yield()coroutine.resume()參數傳遞resume和yield之間互換數據 coroutine.create() lua…

403 禁止錯誤: 它是什么?如何修復?

您應該對403錯誤代碼很熟悉&#xff01;這種錯誤會導致流量損失&#xff0c;甚至錯失一些商業機會&#xff01; 什么&#xff1f;您在自己的網站上遇到了403錯誤&#xff1f;請立即修復它&#xff01;但是什么原因導致這種錯誤&#xff1f;該如何解決&#xff1f;這兩個問題都…

66種智能優化算法和改進優化算法優化BP神經網絡【開源代碼!】【文末福利IT學習資料】

前言 熟話說得好&#xff0c;創新點不夠&#xff0c;智能優化算法來湊&#xff0c;不要覺得羞恥&#xff0c;因為不僅我們這么干&#xff0c;很多外國人也這么干&#xff01;因為創新點實在太難想了&#xff0c;和優化算法結合下是最簡單的創新點了&#xff01; 之前給大家分享…

485通訊抗干擾,超時重發,不斷重連的程序架構

485通訊抗干擾,超時重發,不斷重連的編程思路 在工程中會遇到一種情況,當通信受到干擾之后,數據超時重發多次,無法被成功發出去,當恢復干擾后,之前發送的指令就被報錯清掉了,相當于串口掉線之后,即使短暫時間內通信連上,掉線之后發出的指令也不生效。 為了確保受到干…

OFDM符號周期

OFDM符號周期的確定 OFDM符號周期的確定是一個復雜的過程&#xff0c;需要考慮多個因素。以下是主要的考慮因素和確定步驟&#xff1a; 主要考慮因素 信道特性 多徑延遲擴展相干時間 系統要求 數據速率頻譜效率 硬件限制 采樣率計算復雜度 應用場景 移動性要求覆蓋范圍 …

spark shuffle寫操作——SortShuffleWriter

寫入的簡單流程&#xff1a; 1.生成ExternalSorter對象 2.將消息都是插入ExternalSorter對象中 3.獲取到mapOutputWriter&#xff0c;將中間產生的臨時文件合并到一個臨時文件 4.生成最后的data文件和index文件 可以看到寫入的重點類是ExternalSorter對象 ExternalSorter 基…

Vant Ui 最新訪問地址

Vant 4 - A lightweight, customizable Vue UI library for mobile web apps. 順帶一個頂部導航欄正常寫法 先使用吸頂為0&#xff0c;然后再寫nav-bar <van-sticky :offset-top"0"> <van-nav-bar class"top-title" title"村集體土地公示&q…

對為什么react需要時間分片,vue3不需要的淺學習

1、時間分片 時間分片指在讓應用在cpu進行大量計算時也能與用戶交互&#xff0c;但時間分片只能對大量cpu計算進行優化&#xff0c;無法優化復雜DOM操作&#xff0c;因為要確保用戶正在操作的界面是最新。 web卡頓的場景&#xff1a; 1、cpu計算量不大&#xff0c;但dom操作…

人工智能算法工程師(中級)課程1-Opencv視覺處理之基本操作與代碼詳解

大家好&#xff0c;我是微學AI&#xff0c;今天給大家介紹一下人工智能算法工程師(中級)課程1-Opencv視覺處理之基本操作與代碼詳解。OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一個開源的計算機視覺和機器學習軟件庫。它提供了各種視覺處理函數&am…

Redis為什么變慢了?一文講透如何排查Redis性能問題

Redis 作為優秀的內存數據庫&#xff0c;其擁有非常高的性能&#xff0c;單個實例的 OPS 能夠達到 10W 左右。但也正因此如此&#xff0c;當我們在使用 Redis 時&#xff0c;如果發現操作延遲變大的情況&#xff0c;就會與我們的預期不符。 你也許或多或少地&#xff0c;也遇到…

以太網中的各種幀結構

幀結構&#xff08;Ethernet Frame Structure&#xff09;介紹 以太網信號幀結構&#xff08;Ethernet Signal Frame Structure&#xff09;&#xff0c;有被稱為以太網幀結構&#xff0c;一般可以分為兩類 —— 數據幀和管理幀。 按照 IEEE 802.3&#xff0c;ISO/IEC8803-3 …

短視頻矩陣管理系統:如何提升內容質量,幫助企業獲客?

在數字化營銷蓬勃發展的今天&#xff0c;短視頻已成為企業推廣的重要陣地。然而&#xff0c;如何高效管理短視頻內容&#xff0c;提升內容質量&#xff0c;進而幫助企業精準獲客&#xff0c;成為企業亟待解決的問題。短視頻矩陣管理系統應運而生&#xff0c;以其強大的功能和靈…

TCP/IP協議超時重傳,以及應用層超時重傳一文詳解

很多人會有這樣的疑問 TCP/IP協議內置了超時重傳的功能&#xff0c;那為什么連接完全斷開或超時時&#xff0c;應用層代碼段還會進行重傳處理呢&#xff1f; TCP協議的重傳機制 客戶端 服務器| ||---- 數據段1 --…

編程范式之并發編程

目錄 前言1. 并發編程的定義2. 并發編程的特點2.1 任務交替執行2.2 狀態共享與同步2.3 并行執行 3. 并發編程的適用場景3.1 高性能計算3.2 I/O 密集型應用3.3 實時系統 4. 并發編程的優點4.1 提高資源利用率4.2 縮短響應時間4.3 提高系統吞吐量 5. 并發編程的缺點5.1 編程復雜性…

硬盤模式vmd怎么改ahci_電腦vmd改ahci模式詳細步驟

最近有很多網友問&#xff0c;我新買的電腦安裝原版win10或win11找不到驅動器呀&#xff0c;進入第三方pe又找不到硬盤&#xff0c;找到硬盤安裝后又出現安裝藍屏的情況&#xff0c;新機器怎么回事呀&#xff1f;這位網友內心有點崩潰&#xff0c;不知道啥原因。其實這些都是由…

初識c++(類與對象——上)

一、類的定義 1、類定義格式 ? class為定義類的關鍵字&#xff0c;Stack為類的名字&#xff0c;{}中為類的主體&#xff0c;注意類定義結束時后面分號不能省 略。類體中內容稱為類的成員&#xff1a;類中的變量稱為類的屬性或成員變量; 類中的函數稱為類的方法或 者成員函…