修改Docker鏡像(images)的存儲路徑的多種實(shí)現(xiàn)方式
要修改 Docker 鏡像(images)的存儲路徑(即 Docker 的 數(shù)據(jù)根目錄,默認(rèn)為 /var/lib/docker),可以通過以下幾種方式實(shí)現(xiàn)。這是在磁盤空間不足或希望將 Docker 數(shù)據(jù)放到更大/更快的磁盤時(shí)的常見操作。
推薦方法:修改daemon.json配置(適用于 systemd 管理的系統(tǒng))
步驟 1:停止 Docker 服務(wù)
sudo systemctl stop docker
停止后所有容器都會停止,請確保已備份重要數(shù)據(jù)或可接受停機(jī)。
步驟 2:創(chuàng)建新目錄并遷移數(shù)據(jù)(可選但推薦)
假設(shè)你想把 Docker 數(shù)據(jù)移到 /data/docker:
# 創(chuàng)建新目錄 sudo mkdir -p /data/docker # (可選)遷移現(xiàn)有數(shù)據(jù)(如果你已有鏡像/容器) sudo rsync -aqxP /var/lib/docker/ /data/docker/
使用 rsync 而不是 mv,可以保留原數(shù)據(jù)作為備份,直到確認(rèn)新路徑工作正常。
步驟 3:配置 Docker 使用新路徑
編輯或創(chuàng)建 Docker 的配置文件:
sudo nano /etc/docker/daemon.json
添加以下內(nèi)容:
{
"data-root": "/data/docker"
}
如果文件已存在其他配置,請合并 JSON,確保格式合法。
步驟 4:啟動 Docker 并驗(yàn)證
# 啟動 Docker sudo systemctl start docker # 檢查狀態(tài) sudo systemctl status docker # 查看 Docker 根目錄是否生效 docker info | grep "Docker Root Dir"
預(yù)期輸出:
Docker Root Dir: /data/docker
步驟 5:清理舊數(shù)據(jù)(確認(rèn)無誤后)
如果遷移成功且運(yùn)行正常,可刪除舊數(shù)據(jù)釋放空間:
sudo rm -rf /var/lib/docker
務(wù)必先確認(rèn)新路徑工作正常再刪除!
其他方法(不推薦)
方法 2:通過軟鏈接(Symlink)
sudo systemctl stop docker sudo mv /var/lib/docker /data/docker sudo ln -s /data/docker /var/lib/docker sudo systemctl start docker
- 簡單,但某些工具可能不兼容符號鏈接。
- 不如
daemon.json方式規(guī)范。
方法 3:修改 systemd 啟動參數(shù)(過時(shí))
早期版本可通過修改 /etc/default/docker 或 systemd service 文件加 -g /new/path,但 Docker 官方已棄用此方式,推薦使用 daemon.json。
權(quán)限與 SELinux 注意事項(xiàng)
確保新目錄權(quán)限正確:
sudo chown root:root /data/docker sudo chmod 700 /data/docker
如果啟用了 SELinux(如 CentOS/RHEL),可能需要調(diào)整上下文:
sudo semanage fcontext -a -t container_var_lib_t "/data/docker(/.*)?" sudo restorecon -R /data/docker
驗(yàn)證是否生效
拉取一個(gè)新鏡像:
docker pull hello-world
檢查新路徑下是否有數(shù)據(jù):
ls /data/docker/ # 應(yīng)看到 containers, image, overlay2, volumes 等目錄
常見錯(cuò)誤
| 問題 | 解決方案 |
|---|---|
docker: Error response from daemon: ... | 檢查 daemon.json JSON 格式是否合法(可用 jsonlint.com 驗(yàn)證) |
| 啟動失敗 | 查看日志:journalctl -u docker.service -n 50 |
| 磁盤空間未釋放 | 確認(rèn)是否真的遷移了數(shù)據(jù),或舊目錄未刪除 |
總結(jié)
| 操作 | 命令 |
|---|---|
| 停止 Docker | sudo systemctl stop docker |
| 配置新路徑 | 編輯 /etc/docker/daemon.json,加 "data-root": "/your/path" |
| 啟動 Docker | sudo systemctl start docker |
| 驗(yàn)證 | docker info | grep "Docker Root Dir" |
最佳實(shí)踐:在新服務(wù)器部署時(shí)就配置好 data-root,避免后期遷移。
以上就是修改Docker鏡像(images)的存儲路徑的多種實(shí)現(xiàn)方式的詳細(xì)內(nèi)容,更多關(guān)于Docker鏡像存儲路徑修改的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
如何將Docker的構(gòu)建時(shí)間減少40%(推薦)
這篇文章主要介紹了如何將Docker的構(gòu)建時(shí)間減少40%,本文描述了我們在優(yōu)化CI管道后獲得的一些新見解,需要的朋友可以參考下2023-11-11
centos修改docker網(wǎng)絡(luò)配置方法分享
本文給大家分享的是centos修改docker網(wǎng)絡(luò)配置的方法,非常的實(shí)用,有需要的小伙伴可以參考下2017-03-03
Docker?部署分布式搜索引擎?Elastic?Search的詳細(xì)過程
Elasticsearch是一款非常強(qiáng)大的開源搜索引擎,具備非常多強(qiáng)大功能,可以幫助我們從海量數(shù)據(jù)中快速找到需要的內(nèi)容,這篇文章主要介紹了Docker?部署分布式搜索引擎?Elastic?Search,需要的朋友可以參考下2023-02-02
docker desktop安裝redis的實(shí)現(xiàn)步驟
本文主要介紹了docker desktop安裝redis的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-04-04
Docker Desktop Vmmem內(nèi)存占用過高問題及完美解決方案
DockerDesktopVmmem內(nèi)存占用過高問題常見于其基于WSL運(yùn)行類似虛擬機(jī)的機(jī)制,通過編輯.wslconfig文件限制WSL資源,可有效降低內(nèi)存占用,具體操作包括創(chuàng)建.wslconfig文件,調(diào)整內(nèi)存配置,并重啟Docker Desktop,需注意內(nèi)存設(shè)置不宜過小,以免影響Docker運(yùn)行和容器穩(wěn)定性2024-09-09
docker修改默認(rèn)ip的實(shí)現(xiàn)步驟
在 Docker 中,默認(rèn)的網(wǎng)絡(luò)是 bridge 網(wǎng)絡(luò),它通常使用 172.17.0.0/16 這個(gè)網(wǎng)段,那么如何修改,本文就來詳細(xì)的介紹下docker修改默認(rèn)ip的實(shí)現(xiàn)步驟,感興趣的可以了解一下2024-02-02
詳解Ubuntu Docker Registry 搭建私有倉庫
這篇文章主要介紹了詳解Ubuntu Docker Registry 搭建私有倉庫,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02

