Docker 數據卷(Volume)詳細介紹

Docker 數據卷(Volume)詳細介紹

1. 什么是 Docker 數據卷?

Docker 數據卷(Volume)是一種用于 持久化數據容器間數據共享 的機制。由于容器的存儲是臨時的,容器刪除后其中的數據會丟失,因此使用數據卷可以保證數據不會隨著容器的銷毀而丟失。

2. 數據卷的特點

  • 持久化存儲:容器刪除后,數據卷仍然存在,不會隨容器刪除而丟失。
  • 容器間共享:多個容器可以掛載同一個數據卷,實現數據共享。
  • 高性能:相比于 bind mount(綁定掛載),數據卷由 Docker 管理,性能更優。
  • 獨立于文件系統:可以在不同的操作系統或存儲驅動(如 overlay2、aufs)間使用。

3. 常見的 Docker 數據卷操作

3.1 創建和管理數據卷

(1)創建數據卷
docker volume create my_volume

這個命令會創建一個名為 my_volume 的數據卷,并由 Docker 管理。

(2)查看所有數據卷
docker volume ls

列出當前所有的 Docker 數據卷。

(3)查看數據卷詳細信息
docker volume inspect my_volume

顯示 my_volume 的詳細信息,包括存儲位置、驅動等。

(4)刪除數據卷
docker volume rm my_volume

刪除 my_volume 數據卷。注意:如果某個容器正在使用該數據卷,刪除會失敗。

(5)清理未使用的數據卷
docker volume prune

刪除所有未被任何容器使用的 Docker 數據卷。


4. 在容器中使用數據卷

4.1 使用 --mount 掛載數據卷

推薦使用 --mount,它的語法清晰,適用于復雜場景:

docker run -d --name my_container --mount source=my_volume,target=/app busybox
  • source=my_volume:使用名為 my_volume 的 Docker 數據卷。
  • target=/app:把 my_volume 掛載到容器內的 /app 目錄。

4.2 使用 -v 掛載數據卷

-v 語法較老,但仍然常用:

docker run -d --name my_container -v my_volume:/app busybox

作用與 --mount 相同,但 -v 不支持某些高級選項(如 readonly)。


5. 綁定掛載(Bind Mounts)

除了 Docker 管理的數據卷,Docker 還支持將宿主機目錄直接掛載到容器中:

docker run -d --name my_container -v /host/path:/container/path busybox

這種方式適用于:

  • 開發環境(宿主機和容器同步文件)。
  • 日志文件存儲(容器刪除后,日志仍然保留)。

? 注意:Bind Mount 依賴于宿主機的路徑,可能會導致跨平臺兼容性問題。


6. 只讀掛載

為了提高安全性,可以使用 :ro(只讀)掛載:

docker run -d --name my_container -v my_volume:/app:ro busybox

容器可以讀取 /app 目錄下的內容,但不能修改。

同樣,使用 --mount

docker run -d --name my_container --mount source=my_volume,target=/app,readonly busybox

7. 共享數據卷

多個容器可以共享同一個數據卷:

docker run -d --name container1 -v my_volume:/app busybox
docker run -d --name container2 -v my_volume:/app busybox

container1container2 都可以訪問 /app 目錄,實現數據共享。


8. 備份和恢復數據卷

8.1 備份數據卷

docker run --rm -v my_volume:/data -v $(pwd):/backup busybox tar -czf /backup/backup.tar.gz -C /data .
  • -v my_volume:/data:將 my_volume 掛載到容器的 /data
  • -v $(pwd):/backup:把宿主機當前目錄掛載到容器的 /backup
  • tar -czf:打包 /data 目錄下的內容,生成 backup.tar.gz

8.2 恢復數據卷

docker run --rm -v my_volume:/data -v $(pwd):/backup busybox tar -xzf /backup/backup.tar.gz -C /data

該命令會把 backup.tar.gz 中的數據解壓到 my_volume 里。


9. 刪除數據卷

9.1 刪除單個數據卷

docker volume rm my_volume

9.2 刪除未被使用的所有數據卷

docker volume prune

這個命令會刪除所有沒有被任何容器使用的 Docker 數據卷。


10. 數據卷與 Docker Compose

docker-compose.yml 文件中,可以定義數據卷:

version: '3'
services:app:image: busyboxvolumes:- my_volume:/app
volumes:my_volume:

然后運行:

docker-compose up -d

my_volume 會自動創建并掛載到 /app


11. 總結

重點知識回顧

關鍵點說明
docker volume create my_volume創建數據卷
docker volume ls查看所有數據卷
docker volume inspect my_volume查看數據卷詳情
docker volume rm my_volume刪除數據卷
docker volume prune清理未使用的數據卷
docker run -v my_volume:/app busybox掛載數據卷
docker run -v /host/path:/container/path busybox綁定掛載
docker run -v my_volume:/app:ro busybox只讀掛載
docker-compose.yml在 Docker Compose 中使用數據卷
tar -czftar -xzf備份和恢復數據卷

Docker 數據卷是 持久化數據容器間數據共享 的關鍵工具,合理使用可以大大提高數據管理的靈活性和安全性。對于使用數據卷的必要性和好處,請閱讀文章:docker數據卷的好處與必要性

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

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

相關文章

wxWidgets生成HTML文件,帶圖片轉base64數據

編譯環境大家可以看我之前的文章,CodeBlocks + msys2 + wx3.2,win10 這里功能就是生成HTML文件,沒用HTML庫,因為是自己固定的格式,圖片是一個vector,可以動態改變數量的。 效果如下: #include <wx/string.h> #include <wx/file.h> #include <wx/ima…

網絡原理一>數據鏈路層協議->以太網協議

目錄 以太網協議的結構&#xff1a;類型&#xff1a;ARP請求應答報文&#xff1a;CRC&#xff1a;MTU: 為什么需要mac地址&#xff1a;mac地址和IP地址的區別&#xff1a; 以太網協議的結構&#xff1a; 以太網是數據鏈路層和物理層的主要協議 源IP&#xff0c;目的IP就不多說…

瘋狂SQL轉換系列- SQL for Milvs2.4

鑒于Milvus仍在不停的迭代新版本&#xff0c;推出新功能&#xff0c;其SDK目前并不穩定。目前其2.4版本的SDK接口已與之前的2.2版本有了較大的差別&#xff0c;功能上也有了一定的調整。為此&#xff0c;我們重新提供了針對[Milvus2.4](https://github.com/colorknight/moql-tr…

售后板子HDMI無輸出分析

問題&#xff1a; 某產品售后有1例HDMI無輸出。 分析&#xff1a; 1、測試HDMI的HPD腳&#xff08;HDMI座子的19pin&#xff09;&#xff0c;測試電壓4.5V&#xff0c;屬于正常。 2、用萬用表直流電壓檔&#xff0c;測試HDMI的3對數據腳和1對時鐘腳&#xff08;板子通過HDM…

【聲音轉文字CapsWriter】聲音隨時轉化為文字,CapsWriter提高工作效率

文章目錄 前言1. 軟件與模型下載2. 本地使用測試3. 異地遠程使用3.1 內網穿透工具下載安裝3.2 配置公網地址3.3 修改config文件3.4 異地遠程訪問服務端 4. 配置固定公網地址4.1 修改config文件 5. 固定tcp公網地址遠程訪問服務端 前言 今天我要給大家安利一個神器——CapsWrit…

使用 Python 編程語言來實現機器學習小項目教程案例

以下是一個簡單的機器學習小項目教程案例,使用 Python 編程語言和 Scikit-learn 庫來實現一個分類任務。我們將使用經典的鳶尾花(Iris)數據集來訓練一個分類器,預測鳶尾花的種類。 項目目標 使用機器學習算法對鳶尾花數據集進行分類,預測鳶尾花的類別(Setosa、Versicolor…

DKG(Distributed Key Generation)協議

一、DKG是什么 DKG(分布式密鑰生成)提供了一種去中心化的方法,使各個參與方在不相互信任的情況下生成共享密鑰,以確保安全通信和多方參與的機密性。 DKG技術的關鍵思想是使用多方計算(secure multiparty computation)和秘鑰共享(secret sharing)的概念。 秘鑰共享 則…

十二、Docker Compose 部署 SpringCloudAlibaba 微服務

一、部署基礎服務 0、項目部署結構 項目目錄結構如下: /home/zhzl_hebei/ ├── docker-compose.yml └── geochance-auth/└── Dockerfile└── geochance-auth.jar └── geochance-system/└── Dockerfile└── geochance-system.jar └── geochance-gateway/…

使用 Docker(Podman) 部署 MongoDB 數據庫及使用詳解

在現代開發環境中&#xff0c;容器化技術&#xff08;如 Docker 和 Podman&#xff09;已成為部署和管理應用程序的標準方式。本文將詳細介紹如何使用 Podman/Docker 部署 MongoDB 數據庫&#xff0c;并確保其他應用程序容器能夠通過 Docker 網絡成功連接到 MongoDB。我們將逐步…

Games104——游戲引擎Gameplay玩法系統:基礎AI

這里寫目錄標題 尋路/導航系統NavigationWalkable AreaWaypoint NetworkGridNavigation Mesh&#xff08;尋路網格&#xff09;Sparse Voxel Octree Path FindingDijkstra Algorithm迪杰斯特拉算法A Star&#xff08;A*算法&#xff09; Path Smoothing Steering系統Crowd Simu…

Win11非虛擬機安裝ISE14.7

官網下載6.18GB 的 Full Installer for Windows 7/XP/Server解壓后運行安裝程序不勾選Enable WebTalk to send software, IP ...安裝程序卡死在ISE:Configure WebTalk&#xff0c;此時打開任務管理器&#xff0c;在詳情中找到xwebtalk&#xff0c;右鍵結束任務。安裝程序繼續進…

從0開始達芬奇(3.8)

剪視頻有主次之分&#xff0c;主就是Aroll&#xff0c;次就是Broll。 智能媒體夾&#xff1a; 媒體池的智能媒體夾部分可以很好區分主次。這個相當于智能搜索&#xff0c;當有大量的素材時&#xff0c;可以為這些素材標明信息&#xff0c;下次使用不需要反復看&#xff0c;直…

【Elasticsearch】parent aggregation

在Elasticsearch中&#xff0c;Parent Aggregation是一種特殊的單桶聚合&#xff0c;用于選擇具有指定類型的父文檔&#xff0c;這些類型是通過一個join字段定義的。以下是關于Parent Aggregation的詳細介紹&#xff1a; 1.基本概念 Parent Aggregation是一種聚合操作&#x…

自學Java-面向對象編程入門

自學Java-面向對象編程入門 一、靜態方法的注意事項二、簡易版電影信息展示系統1、測試類2、電影類3、電影操作類 一、靜態方法的注意事項 1、靜態方法中可以直接訪問靜態成員&#xff0c;不可以直接訪問實例成員 2、實例方法中既可以直接訪問靜態成員&#xff0c;也可以直接訪…

python算法和數據結構刷題[3]:哈希表、滑動窗口、雙指針、回溯算法、貪心算法

回溯算法 「所有可能的結果」&#xff0c;而不是「結果的個數」&#xff0c;一般情況下&#xff0c;我們就知道需要暴力搜索所有的可行解了&#xff0c;可以用「回溯法」。 回溯算法關鍵在于:不合適就退回上一步。在回溯算法中&#xff0c;遞歸用于深入到所有可能的分支&…

【自學筆記】Python的基礎知識點總覽-持續更新

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 Python基礎知識總覽1. Python簡介2. 安裝與環境配置3. 基本語法3.1 變量與數據類型3.2 控制結構3.3 函數與模塊3.4 文件操作 4. 面向對象編程&#xff08;OOP&#…

文件上傳到騰訊云存儲、簽名及設置過期時間

將文件上傳到騰訊云對象存儲&#xff08;COS&#xff0c;Cloud Object Storage&#xff09;可以通過騰訊云提供的 SDK 實現。以下是詳細的步驟和示例代碼&#xff0c;幫助您完成文件上傳操作。 步驟 注冊騰訊云賬號并創建存儲桶&#xff1a; &#xff08;1&#xff09;登錄騰訊…

基于Java(SpringBoot)+MySQL+Vue實現的平行志愿錄取系統

基于spring bootvue實現的平行志愿錄取系統 1.項目簡介 這兩天干上高考出成績&#xff0c;有不少親戚家的孩子今年高考&#xff0c;和我詢問關于報志愿的問題。老家河北今年是采用所謂的平行志愿。我看了很多的資料才明白什么叫所謂的“平行志愿”。 整個流程好像很是復雜。…

chrome瀏覽器chromedriver下載

chromedriver 下載地址 https://googlechromelabs.github.io/chrome-for-testing/ 上面的鏈接有和當前發布的chrome瀏覽器版本相近的chromedriver 實際使用感受 chrome瀏覽器會自動更新&#xff0c;可以去下載最新的chromedriver使用&#xff0c;自動化中使用新的chromedr…

Redis常見數據類型與編碼方式

??前言?? 本小節圍繞Redis中常見的數據類型與編碼方式展開。 &#x1f349;歡迎點贊 &#x1f44d; 收藏 ?留言評論 &#x1f349;博主將持續更新學習記錄收獲&#xff0c;友友們有任何問題可以在評論區留言 &#x1f349;博客中涉及源碼及博主日常練習代碼均已上傳GitHu…