docker 占用系統空間太大了,整體遷移到掛載的其他磁盤|【當前普通用戶使用docker時,無法指定鏡像、容器安裝位置【無法指定】】

文章目錄

  • 前言【核心步驟皆為 大模型生成的方案】
  • 總結步驟應該是:
  • 詳細步驟如下
      • 1. **停止 Docker 服務**
      • 2. **備份原數據(防止遷移失敗)**
      • 3. **遷移數據到新磁盤**
      • 4. **修改 Docker 配置文件**
      • 5. **重啟 Docker 服務**
      • 6. **驗證容器和鏡像**
      • 7. **刪除舊數據(確認遷移成功后)**
      • ?? **關鍵注意事項**
      • 故障排查
  • 當前普通用戶使用docker時,指定鏡像、容器安裝位置【無法指定】
      • **方法 1:修改 Docker 存儲根目錄(需 root 權限)**
      • **方法 2:使用 `docker save` 導出鏡像到指定目錄**
      • **方法 3:使用 Rootless Docker(無需 root 權限)**
      • **方法 4:掛載目錄到容器(臨時方案)**
      • **終極建議** -
      • **輸出示例(方法 2)**
    • 📙 精選專欄

🥇 版權: 本文由【墨理學AI】原創首發、各位讀者大大、敬請查閱、感謝三連
🎉 聲明: 作為全網 AI 領域 干貨最多的博主之一,?? 不負光陰不負卿 ??

0-9

前言【核心步驟皆為 大模型生成的方案】

Linux 服務器,docker 占用系統空間太大了,整體遷移到掛載的其他磁盤

總結步驟應該是:

  1. 停止Docker服務。
  2. 備份原數據。
  3. 復制數據到新位置。
  4. 配置Docker使用新路徑。
  5. 重啟Docker并驗證。
  6. 清理舊數據。

詳細步驟如下

你可以將 Docker 的默認存儲目錄(/var/lib/docker)整體遷移到掛載的磁盤目錄(如 /mnt/docker),以下是 安全遷移的完整步驟,確保遷移后所有用戶和容器正常運行:


1. 停止 Docker 服務

sudo systemctl stop docker
# 停止所有正在運行的容器(可選,但建議)
sudo docker stop $(sudo docker ps -q)

2. 備份原數據(防止遷移失敗)

sudo cp -a /var/lib/docker /var/lib/docker.bak

3. 遷移數據到新磁盤

假設新掛載的目錄為 /mnt/docker

# 復制數據(保留權限和屬性)
sudo rsync -aXS /var/lib/docker/ /mnt/docker/
# 驗證數據完整性
sudo diff -r /var/lib/docker /mnt/docker

4. 修改 Docker 配置文件

編輯 /etc/docker/daemon.json,添加新存儲路徑:

{"data-root": "/mnt/docker"
}

如果文件不存在,直接創建它。


5. 重啟 Docker 服務

sudo systemctl start docker
# 驗證服務狀態
sudo systemctl status docker

6. 驗證容器和鏡像

sudo docker images  # 應顯示原有鏡像
sudo docker ps -a   # 應顯示原有容器

7. 刪除舊數據(確認遷移成功后)

sudo rm -rf /var/lib/docker

?? 關鍵注意事項

  1. 權限問題

    • 確保新目錄權限與原有一致(通常是 root:root0700):
      sudo chmod 700 /mnt/docker
      sudo chown root:root /mnt/docker
      
    • 如果使用 SELinux/AppArmor,可能需要調整安全上下文:
      sudo restorecon -Rv /mnt/docker
      
  2. 掛載磁盤配置

    • 確保掛載的磁盤在系統啟動時自動加載(編輯 /etc/fstab),避免 Docker 因目錄不可用而啟動失敗。
  3. 兼容性

    • 如果新磁盤是網絡存儲(如 NFS),需確認 Docker 支持該存儲類型(建議使用本地磁盤或高性能云盤)。
  4. 存儲驅動一致性

    • 遷移后的存儲驅動(如 overlay2)需與原系統一致,可通過以下命令檢查:
      sudo docker info | grep "Storage Driver"
      

故障排查

  • Docker 啟動失敗
    檢查日志定位原因:

    journalctl -u docker.service --no-pager -n 100
    
  • 容器/鏡像丟失
    從備份恢復數據:

    sudo mv /var/lib/docker.bak /var/lib/docker
    

通過以上步驟,Docker 將使用新磁盤作為存儲目錄,原有用戶和容器均可正常訪問,且不會丟失任何數據。

當前普通用戶使用docker時,指定鏡像、容器安裝位置【無法指定】

在 Docker 的默認設計中,鏡像的存儲位置由 Docker 守護進程統一管理,普通用戶無法直接通過 docker pull 命令指定單次下載的存儲路徑。但可以通過以下方法間接實現類似效果:


方法 1:修改 Docker 存儲根目錄(需 root 權限)

原理:通過修改 Docker 的全局配置,將鏡像默認存儲位置指向其他路徑。
步驟

# 1. 停止 Docker 服務
sudo systemctl stop docker# 2. 修改 Docker 配置文件
sudo vim /etc/docker/daemon.json
# 添加以下內容(假設新路徑為 /new/path/docker)
{"data-root": "/new/path/docker"
}# 3. 移動原有數據(可選)
sudo mv /var/lib/docker /new/path/docker# 4. 重啟 Docker
sudo systemctl start docker

缺點

  • 需要管理員權限
  • 影響所有用戶的 Docker 存儲位置

方法 2:使用 docker save 導出鏡像到指定目錄

原理:先拉取鏡像到默認位置,再導出為文件到自定義路徑。
步驟

# 1. 拉取鏡像
docker pull ubuntu:latest# 2. 導出鏡像到指定目錄(如 ~/my-images)
docker save -o ~/my-images/ubuntu.tar ubuntu:latest

優點

  • 無需特殊權限
  • 可精確控制鏡像文件的存儲位置

方法 3:使用 Rootless Docker(無需 root 權限)

原理:以非特權用戶身份運行 Docker,鏡像默認存儲在用戶目錄下(~/.local/share/docker)。
配置步驟

# 1. 安裝 rootless Docker
curl -fsSL https://get.docker.com/rootless | sh# 2. 設置環境變量
export PATH=/home/$USER/bin:$PATH
export DOCKER_HOST=unix:///run/user/$UID/docker.sock# 3. 拉取鏡像(自動存儲到用戶目錄)
docker pull ubuntu:latest

鏡像存儲路徑
~/.local/share/docker/overlay2


方法 4:掛載目錄到容器(臨時方案)

原理:通過掛載宿主機目錄到容器,間接實現文件存儲到指定位置。
示例

# 拉取鏡像時,將宿主機的 /custom/path 掛載到容器
docker run -v /custom/path:/data ubuntu:latest

適用場景

  • 主要用于容器運行時掛載數據卷,而非直接控制鏡像存儲位置。

終極建議 -

  1. 普通用戶無 root 權限
    使用 方法 2docker save)或 方法 3(Rootless Docker)。

    • Rootless Docker 是官方推薦的安全方案,適合個人開發環境。
  2. 管理員權限可用
    使用 方法 1 全局修改存儲路徑,或通過軟鏈接:

    # 該命令 慎用,相當于重新安裝sudo rm -rf /var/lib/dockersudo ln -s /custom/path/docker /var/lib/docker
    

輸出示例(方法 2)

$ docker pull ubuntu:latestlatest: Pulling from library/ubuntu
Digest: sha256:669eafb9...  
Status: Downloaded newer image$ docker save -o ~/backup/ubuntu.tar ubuntu:latest$ ls -lh ~/backup/ubuntu.tar-rw------- 1 user user 72M Jun 10 15:30 ubuntu.tar

通過上述方法,普通用戶可靈活控制鏡像文件的最終存儲位置。


📙 精選專欄


  • 🍊 深度學習模型訓練推理——基礎環境搭建推薦博文查閱順序【基礎安裝—認真幫大家整理了】——【1024專刊】

計算機視覺領域 八大專欄、不少干貨、有興趣可了解一下

  • ?? 圖像風格轉換 —— 代碼環境搭建 實戰教程【關注即可閱】!
  • 💜 圖像修復-代碼環境搭建-知識總結 實戰教程 【據說還行】
  • 💙 超分重建-代碼環境搭建-知識總結 解秘如何讓白月光更清晰【脫單神器】
  • 💛 YOLO專欄,只有實戰,不講道理 圖像分類【建議收藏】!
  • 🍊 深度學習:環境搭建,一文讀懂

  • 🍊 深度學習:趣學深度學習

  • 🍊 落地部署應用:模型部署之轉換-加速-封裝

  • 🍊 CV 和 語音數據集:數據集整理

  • 🍊 點贊 👍 收藏 ?留言 📝 都是博主堅持寫作、更新高質量博文的最大動力!

9-9

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

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

相關文章

設計后端返回給前端的返回體

目錄 1、為什么要設計返回體? 2、返回體包含哪些內容(如何設計)? 舉例 3、總結 1、為什么要設計返回體? 在設計后端返回給前端的返回體時,通常需要遵循一定的規范,以確保前后端交互的清晰性…

Springboot 自動化裝配的原理

Springboot 自動化裝配的原理 SpringBoot 主要作用為:起步依賴、自動裝配。而為了實現這種功能,SpringBoot 底層主要使用了 SpringBootApplication 注解。 首先,SpringBootApplication 是一個復合注解,它結合了 Configuration、…

基于vue框架的游戲博客網站設計iw282(程序+源碼+數據庫+調試部署+開發環境)帶論文文檔1萬字以上,文末可獲取,系統界面在最后面。

系統程序文件列表 項目功能:用戶,博客信息,資源共享,游戲視頻,游戲照片 開題報告內容 基于FlaskVue框架的游戲博客網站設計開題報告 一、項目背景與意義 隨著互聯網技術的飛速發展和游戲產業的不斷壯大,游戲玩家對游戲資訊、攻略、評測等內容的需求日…

算法-二叉樹篇13-路徑總和

路徑總和 力扣題目鏈接 題目描述 給你二叉樹的根節點 root 和一個表示目標和的整數 targetSum 。判斷該樹中是否存在 根節點到葉子節點 的路徑,這條路徑上所有節點值相加等于目標和 targetSum 。如果存在,返回 true ;否則,返回…

8. 示例:對32位數據總線實現位寬和值域覆蓋

文章目錄 前言示例一:示例二:示例三:仿真與覆蓋率分析覆蓋點詳細說明覆蓋率提升技巧常見錯誤排查 示例四:仿真步驟 前言 針對32位數據總線實現位寬和值域的覆蓋,并且能夠用xrun運行,查看日志和波形。cover…

TDengine 中的數據庫

數據庫概念 時序數據庫 TDengine 中數據庫概念,等同于關系型數據庫 MYSQL PostgreSQL 中的數據庫,都是對資源進行分割管理的單位。 TDengine 數據庫與關系型數據庫最大區別是跨庫操作,TDengine 數據庫跨庫操作除了少量幾個SQL 能支持外&…

開源電商項目、物聯網項目、銷售系統項目和社區團購項目

以下是推薦的開源電商項目、物聯網項目、銷售系統項目和社區團購項目,均使用Java開發,且無需付費,GitHub地址如下: ### 開源電商項目 1. **mall** GitHub地址:[https://github.com/macrozheng/mall](https://git…

如何設計一個短鏈系統?

短鏈系統設計的關鍵要點: 系統功能實現 短鏈生成:接收長鏈接,先檢查是否已有對應短鏈,存在則直接返回。否則,使用分布式 ID 生成器(如號段模式、SnowFlake 算法、數據庫自增 ID、Redis 自增等)生成唯一 ID,或通過哈希算法(如 MurmurHash)處理長鏈接得到哈希值。再將生…

數據結構(初階)(三)----單鏈表

單鏈表 概念 概念:鏈表是?種物理存儲結構上?連續、?順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。 結點 與順序表不同的是,鏈表的結構類似于帶車頭的火車車廂,,鏈表的每個車廂都是獨立…

游戲引擎學習第129天

倉庫:https://gitee.com/mrxiao_com/2d_game_3 小妙招: vscode:定位錯誤行 一頓狂按F8 重構快捷鍵:F2 重構相關的變量 回顧并為今天的內容做準備 今天的工作主要集中在渲染器的改進上,渲染器現在運行得相當不錯,得益于一些優化和組織上的改進。我們計…

文字描邊實現內黃外綠效果

網頁使用 <!DOCTYPE html> <html> <head> <style> .text-effect {color: #ffd700; /* 黃色文字 */-webkit-text-stroke: 2px #008000; /* 綠色描邊&#xff08;兼容Webkit內核&#xff09; */text-stroke: 2px #008000; /* 標準語法 *…

yolov8 目標追蹤 (源碼 +效果圖)

1.在代碼中 增加了s鍵開始追蹤 e鍵結束追蹤 顯示移動距離(代碼中可調標尺和像素的比值 以便接近實際距離) 2.繪制了監測區域 只在區域內的檢測 3.規定了檢測的類別 只有人類才繪制軌跡 import osimport cv2 from ultralytics import YOLO from collections import defaultdic…

2.5 運算符2

版權聲明&#xff1a;本文為博主原創文章&#xff0c;轉載請在顯著位置標明本文出處以及作者網名&#xff0c;未經作者允許不得用于商業目的 2.5.3 賦值運算符 賦值運算符將值存儲在左操作數指定的對象中。有兩種賦值操作&#xff1a; 1、簡單賦值&#xff0c;使用。其中第二…

地彈與振鈴

地彈&#xff08;Ground Bounce&#xff09;和振鈴&#xff08;Ringing&#xff09;是數字電路中常見的信號完整性問題&#xff0c;兩者都與高速開關和寄生參數有關&#xff0c;但表現形式和成因不同。以下是它們的對比及解決方法&#xff1a; 1. 地彈&#xff08;Ground Bounc…

解決Deepseek“服務器繁忙,請稍后再試”問題,基于硅基流動和chatbox的解決方案

文章目錄 前言操作步驟步驟1&#xff1a;注冊賬號步驟2&#xff1a;在線體驗步驟3&#xff1a;獲取API密鑰步驟4&#xff1a;安裝chatbox步驟5&#xff1a;chatbox設置 價格方面 前言 最近在使用DeepSeek時&#xff0c;開啟深度思考功能后&#xff0c;頻繁遇到“服務器繁忙&am…

二十三種設計模式

2 工廠方法模式 工廠模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的設計模式之一。這種類型的設計模式屬于創建型模式&#xff0c;它提供了一種創建對象的最佳方式。 在工廠模式中&#xff0c;我們在創建對象時不會對客戶端暴露創建邏輯&#xff0c;并且是通…

基于C語言對CAPL語法基礎的理解

.CAPL是基于C語言開發的&#xff0c;專門用于CANalyzer和CANoe工具環境&#xff0c;但是CAPL簡化了C語言&#xff0c;移除了復雜的指針概念&#xff0c;和一些不常用的關鍵字。 2.CAPL 腳本是基于事件驅動的&#xff0c;任何事件都有可能觸發CAPL腳本的執行&#xff0c;比如&a…

【Java SE】Java中String的內存原理

參考筆記&#xff1a; Java String 類深度解析&#xff1a;內存模型、常量池與核心機制_java stringx、-CSDN博客 解析java中String的內存原理_string s1 new string("ab");內存分析-CSDN博客 目錄 1.String初識 2.字符串字面量 3.內存原理圖 4. 示例驗證 4.…

Prometheus + Grafana 監控

Prometheus Grafana 監控 官網介紹&#xff1a;Prometheus 是一個開源系統 監控和警報工具包最初由 SoundCloud 構建。自 2012 年成立以來&#xff0c;許多 公司和組織已經采用了 Prometheus&#xff0c;并且該項目具有非常 活躍的開發人員和用戶社區。它現在是一個獨立的開源…

【Python爬蟲(95)】Python爬蟲進階:構建大型垂直領域爬蟲系統

【Python爬蟲】專欄簡介:本專欄是 Python 爬蟲領域的集大成之作,共 100 章節。從 Python 基礎語法、爬蟲入門知識講起,深入探討反爬蟲、多線程、分布式等進階技術。以大量實例為支撐,覆蓋網頁、圖片、音頻等各類數據爬取,還涉及數據處理與分析。無論是新手小白還是進階開發…