docker volume卷入門教程

1. 基礎概念

Docker卷是專門用于持久化容器數據的存儲方案,獨立于容器生命周期。其核心優勢包括:

  • 數據持久化:容器刪除后數據仍保留
  • 跨容器共享:多個容器可訪問同一卷
  • 備份與遷移:支持直接復制卷數據
  • 驅動支持:可對接云存儲(如AWS S3)

2. 卷類型詳解

類型示例特性
命名卷my_data由Docker管理,存儲在/var/lib/docker/volumes/
匿名卷隨機ID容器刪除時自動清理(需配合--rm
綁定掛載/host/path:/container/path手動指定主機目錄,性能最優

3. 常用命令詳解

docker volume create
# 創建命名卷
docker volume create my_data# 指定驅動(需安裝對應插件)
docker volume create --driver local --opt type=nfs --opt device=:/nfs/share my_nfs
docker volume inspect
# 查看卷詳細信息
docker volume inspect my_data# 輸出格式化結果
docker volume inspect --format '{{.Mountpoint}}' my_data
docker volume rm
# 刪除未使用的卷
docker volume rm my_data# 強制刪除正在使用的卷(需配合`-f`)
docker volume rm -f my_data
docker volume prune
# 清理所有未使用的卷
docker volume prune# 交互式確認刪除
docker volume prune -f

4. 基礎操作示例

創建并掛載卷
# 創建命名卷
docker volume create app_data# 運行容器并掛載卷
docker run -d \--name web \-v app_data:/app/data \nginx:latest
綁定主機目錄
# 將主機目錄掛載到容器(需手動管理權限)
docker run -d \--name mysql \-v /host/mysql_data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=secret \mysql:5.7
備份卷數據
# 導出卷數據到主機
docker run --rm \-v app_data:/source \-v /host/backup:/target \ubuntu tar czf /target/backup.tar.gz -C /source .

5. 高級用法

卷共享
# 多個容器共享同一卷
docker run -d --name worker1 -v app_data:/app busybox sleep 3600
docker run -d --name worker2 -v app_data:/app busybox sleep 3600
卷遷移
# 導出卷數據
docker run --rm -v app_data:/source busybox tar czf - /source > backup.tar.gz# 導入到新卷
docker volume create new_app_data
docker run --rm -v new_app_data:/target busybox sh -c "tar xzf - -C /target" < backup.tar.gz
自動清理策略
# 配置Docker刪除未使用的卷(需修改daemon.json)
{"volumes": {"autoPrune": true,"pruneInterval": "1h"}
}
卷驅動擴展
# 使用云存儲驅動(示例為AWS S3)
docker volume create --driver convoy --opt bucket=my-bucket my_s3_volume

6. 驗證卷狀態

查看卷使用情況
# 列出所有卷
docker volume ls# 過濾已使用卷
docker volume ls --filter "dangling=false"
檢查卷空間占用
# 查看卷存儲路徑
docker volume inspect --format '{{.Mountpoint}}' my_data# 使用du命令檢查空間
sudo du -sh /var/lib/docker/volumes/my_data/_data
驗證數據完整性
# 在容器內寫入測試數據
docker exec web sh -c "echo 'test' > /app/data/file.txt"# 從主機讀取驗證
sudo cat /var/lib/docker/volumes/my_data/_data/file.txt

7. 常見問題解決

問題1:卷無法刪除
Error response from daemon: remove <卷名>: volume is in use and cannot be removed

解決方案

  • 確認容器狀態:docker ps -a | grep <卷名>
  • 停止并刪除關聯容器:
    docker stop $(docker ps -q --filter "volume=<卷名>")
    docker rm -v $(docker ps -aq --filter "volume=<卷名>")
    
問題2:綁定掛載權限錯誤
Error: failed to start container: Permission denied

解決方案

  • 調整主機目錄權限:
    sudo chmod 777 /host/path
    sudo chown $USER:$USER /host/path
    
問題3:卷數據丟失
Error: file not found in container

解決方案

  • 檢查卷掛載路徑是否正確:
    docker inspect web | grep "Mounts" -A 5
    
  • 恢復備份:
    docker run --rm -v new_app_data:/target busybox sh -c "tar xzf - -C /target" < backup.tar.gz
    
問題4:卷驅動不可用
Error response from daemon: create my_s3_volume: Driver <驅動名> not found

解決方案

  • 安裝對應驅動插件:
    docker plugin install convoy --alias convoy-s3
    

8. 最佳實踐

  1. 命名規范:使用有意義的卷名(如app_logs而非vol1
  2. 定期備份:結合cron任務自動備份關鍵卷
  3. 權限控制:綁定掛載時避免使用777權限
  4. 資源監控:使用du -sh定期檢查大體積卷
  5. 標簽管理:為生產環境卷添加標簽:
    docker volume create --label env=prod --label app=web my_prod_data
    

9. 示例流程

# 1. 創建并掛載卷
docker volume create web_assets
docker run -d --name static -v web_assets:/usr/share/nginx/html nginx:latest# 2. 上傳靜態文件到卷
docker cp ./assets/* static:/usr/share/nginx/html# 3. 備份卷數據
docker run --rm -v web_assets:/source busybox tar czf - /source > web_assets_$(date +%Y%m%d).tar.gz# 4. 遷移卷到新環境
scp web_assets_20250814.tar.gz user@new-host:/backup
ssh user@new-host "docker volume create web_assets_new && cat /backup/web_assets_20250814.tar.gz | docker run --rm -i -v web_assets_new:/target busybox tar xzf - -C /target"

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

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

相關文章

計算機網絡——協議

1. 計算機網絡分層1.1 OSI 7層模型應用層表示層會話層傳輸層網絡層數據鏈路層物理層1.2 TCP/IP 4 層模型應用層運輸層網際層網絡接口層1.3 5層體系機構應用層傳輸層網絡層數據鏈路層物理層2. 應用層協議2.1 HTTP協議2.1.1 基本介紹HTTP&#xff08;HyperText Transfer Protocol…

【React】hooks 中的閉包陷阱

在 React Hooks 中的 閉包陷阱&#xff08;Closure Trap&#xff09;在 useEffect、事件回調、定時器等場景里很常見。1. 閉包陷阱是什么 當你在函數組件里定義一個回調&#xff08;比如事件處理函數&#xff09;&#xff0c;這個回調會捕獲當時渲染時的變量值。如果后面狀態更…

校園快遞小程序(騰訊地圖API、二維碼識別、Echarts圖形化分析)

&#x1f388;系統亮點&#xff1a;騰訊地圖API、二維碼識別、Echarts圖形化分析&#xff1b;一.系統開發工具與環境搭建1.系統設計開發工具后端使用Java編程語言的Spring boot框架 項目架構&#xff1a;B/S架構 運行環境&#xff1a;win10/win11、jdk17小程序&#xff1a; 技術…

Python網絡爬蟲(二) - 解析靜態網頁

文章目錄一、網頁解析技術介紹二、Beautiful Soup庫1. Beautiful Soup庫介紹2. Beautiful Soup庫幾種解析器比較3. 安裝Beautiful Soup庫3.1 安裝 Beautiful Soup 43.2 安裝解析器4. Beautiful Soup使用步驟4.1 創建Beautiful Soup對象4.2 獲取標簽4.2.1 通過標簽名獲取4.2.2 通…

【Linux基礎知識系列】第九十四篇 - 如何使用traceroute命令追蹤路由

在網絡環境中&#xff0c;了解數據包從源主機到目標主機的路徑是非常重要的。這不僅可以幫助我們分析網絡連接問題&#xff0c;還可以用于診斷網絡延遲、丟包等問題。traceroute命令是一個強大的工具&#xff0c;它能夠追蹤數據包在網絡中的路徑&#xff0c;顯示每一跳的延遲和…

達夢數據閃回查詢-快速恢復表

Time:2025/08/12Author:skatexg一、環境說明DM數據庫&#xff1a;DM8.0及以上版本二、適用場景研發在誤操作或變更數據后&#xff0c;想馬上恢復表到某個時間點&#xff0c;可以通過閃回查詢功能快速實現&#xff08;通過全量備份恢復時間長&#xff0c;成本高&#xff09;三、…

力扣(LeetCode) ——225 用隊列實現棧(C語言)

題目&#xff1a;用隊列實現棧示例1&#xff1a; 輸入&#xff1a; [“MyStack”, “push”, “push”, “top”, “pop”, “empty”] [[], [1], [2], [], [], []] 輸出&#xff1a; [null, null, null, 2, 2, false] 解釋&#xff1a; MyStack myStack new MyStack(); mySta…

微軟推出AI惡意軟件檢測智能體 Project Ire

開篇 在8月5號&#xff0c;微軟研究院發布了一篇博客文章&#xff0c;在該篇博客中推出了一款名為Project Ire的AI Agent。該Agent可以在無需人類協助的情況下&#xff0c;自主分析和分類二進制文件。它可以在無需了解二進制文件來源或用途的情況下&#xff0c;對文件進行完全的…

哪些對會交由SpringBoot容器管理?

在 Spring Boot 中,交由容器管理的對象通常稱為“Spring Bean”,這些對象的創建、依賴注入、生命周期等由 Spring 容器統一管控。以下是常見的會被 Spring Boot 容器管理的對象類型及識別方式: 一、通過注解聲明的組件(最常見) Spring Boot 通過類級別的注解自動掃描并注…

Android POS應用在android運行常見問題及解決方案

概述 本文檔記錄了在Android POS應用開發過程中遇到的兩個關鍵問題及其解決方案&#xff1a; UnsatisfiedLinkError: couldnt find "libnative.so" 錯誤ActivityNotFoundException 錯誤商戶信息一致性檢查繞過 問題1&#xff1a;UnsatisfiedLinkError - libnative.so…

基于SpringBoot的旅游網站系統

1. 項目簡介 旅游線路管理系統是一個基于Spring Boot的在線旅游服務平臺&#xff0c;提供旅游線路展示、分類、預訂、訂單管理等功能。系統包含前臺用戶界面和后臺管理模塊&#xff0c;支持用戶注冊登錄、線路瀏覽、收藏、下單支付、客服咨詢等核心功能。管理員可管理線路信息、…

CVPR 2025 | 機器人操控 | RoboGround:用“掩碼”中介表示,讓機器人跨場景泛化更聰明

點擊關注gongzhonghao【計算機sci論文精選】1.導讀1.1論文基本信息論文標題&#xff1a;ROBOGROUND: Robotic Manipulation with Grounded Vision-Language Priors作者&#xff1a;Haifeng Huang, Xinyi Chen, Hao Li&#xff0c; Xiaoshen Han, Yilun Chen, Tai Wang, Zehan W…

構建Node.js單可執行應用(SEA)的方法

如果為了降低部署復雜度&#xff0c;可以考慮使用vercel/ncc。除非有特別理由&#xff0c;不建議使用SEA。1. 環境準備1.1. 基礎要求Node.js: > 19.0.0 (推薦最新LTS版本)1.2. 安裝依賴npm install postject typescript1.3. 驗證環境node -v # 確認版本 > 19 ts…

Java19 Integer 位操作精解:compress與expand《Hacker‘s Delight》(第二版,7.4節)

compress(int i, int mask) 這個方法是Java 19中新增的一個強大的位操作函數。compress 方法的核心功能可以理解為 “按位過濾和壓縮” 。過濾 (Filter): 它使用 mask&#xff08;掩碼&#xff09;作為過濾器。對于輸入整數 i&#xff0c;只有那些在 mask 中對應位為 1 的比特才…

minio部署和雙機熱備

安裝單機版MinIO&#xff08;準備2臺機器A、B,A、B服務器操作一致&#xff09;切換目錄并下載MinIO二進制文件cd /usr/local/bin wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio chmod x minio編輯配置文件vi /etc/default/minio.confMINIO_VOLUMES&quo…

【Java】 Java 21 革命性升級:虛擬線程與結構化并發的深度實踐指南

還在為高昂的AI開發成本發愁?這本書教你如何在個人電腦上引爆DeepSeek的澎湃算力! Java 21 作為 Oracle JDK 的長期支持版本,引入了多項革命性特性,其中虛擬線程(Virtual Threads)和結構化并發(Structured Concurrency)尤為突出。這些特性旨在解決傳統線程模型在高并發…

Apache IoTDB 全場景部署:基于 Apache IoTDB 的跨「端-邊-云」的時序數據庫 DB+AI

Apache IoTDB 全場景部署&#xff1a;基于 Apache IoTDB 的跨「端-邊-云」的時序數據庫 DBAI 文章目錄Apache IoTDB 全場景部署&#xff1a;基于 Apache IoTDB 的跨「端-邊-云」的時序數據庫 DBAIApache IoTDB 介紹Docker部署指導企業版數據庫配套工具 WorkbenchTimechoDB&…

計算機網絡---傳輸控制協議Transmission Control Protocol(TCP)

一、TCP的定位與核心特性 TCP&#xff08;Transmission Control Protocol&#xff0c;傳輸控制協議&#xff09;是TCP/IP協議棧中傳輸層的核心協議&#xff0c;與UDP&#xff08;用戶數據報協議&#xff09;共同承擔端到端數據傳輸功能。其設計目標是在不可靠的IP網絡上提供可靠…

week1-[分支嵌套]公因數

week1-[分支嵌套]公因數 題目描述 給定 444 個正整數 a,b,c,ka,b,c,ka,b,c,k。如果 a,b,ca,b,ca,b,c 都是 kkk 的倍數&#xff0c;那么稱 kkk 是 a,b,ca,b,ca,b,c 的公因數。否則如果某兩個數都是 kkk 的倍數&#xff0c;那么稱 kkk 是這兩個數的公因數。問 kkk 是哪些數的公因…

C#枚舉/結構體講一講

先展示一段簡單代碼// 定義枚舉 public enum thisday {吃飯,不吃 }// 定義結構體 public struct person {public string name;public int age;public thisday zhuangtai; // 使用枚舉類型作為字段 }static void Main(string[] args) {// 創建結構體實例person thisperson;thisp…