文章目錄
- 前言【核心步驟皆為 大模型生成的方案】
- 總結步驟應該是:
- 詳細步驟如下
- 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 領域 干貨最多的博主之一,?? 不負光陰不負卿 ??
前言【核心步驟皆為 大模型生成的方案】
Linux 服務器,docker 占用系統空間太大了,整體遷移到掛載的其他磁盤
總結步驟應該是:
- 停止Docker服務。
- 備份原數據。
- 復制數據到新位置。
- 配置Docker使用新路徑。
- 重啟Docker并驗證。
- 清理舊數據。
詳細步驟如下
你可以將 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
?? 關鍵注意事項
-
權限問題
- 確保新目錄權限與原有一致(通常是
root:root
和0700
):sudo chmod 700 /mnt/docker sudo chown root:root /mnt/docker
- 如果使用 SELinux/AppArmor,可能需要調整安全上下文:
sudo restorecon -Rv /mnt/docker
- 確保新目錄權限與原有一致(通常是
-
掛載磁盤配置
- 確保掛載的磁盤在系統啟動時自動加載(編輯
/etc/fstab
),避免 Docker 因目錄不可用而啟動失敗。
- 確保掛載的磁盤在系統啟動時自動加載(編輯
-
兼容性
- 如果新磁盤是網絡存儲(如 NFS),需確認 Docker 支持該存儲類型(建議使用本地磁盤或高性能云盤)。
-
存儲驅動一致性
- 遷移后的存儲驅動(如
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
適用場景:
- 主要用于容器運行時掛載數據卷,而非直接控制鏡像存儲位置。
終極建議 -
-
普通用戶無 root 權限:
使用 方法 2(docker save
)或 方法 3(Rootless Docker)。- Rootless Docker 是官方推薦的安全方案,適合個人開發環境。
-
管理員權限可用:
使用 方法 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 和 語音數據集:數據集整理
-
🍊 點贊 👍 收藏 ?留言 📝 都是博主堅持寫作、更新高質量博文的最大動力!