Docker加載鏡像時(shí)報(bào)錯(cuò)no space left on device的徹底解決方案
在一次部署 FastDDS 鏡像的過程中,我們執(zhí)行如下命令:
sh start_fastdds_pub.sh
腳本內(nèi)部會(huì)先刪除舊鏡像、再通過 docker load -i fastdds_2.8.0.tar 重新加載鏡像。
結(jié)果報(bào)錯(cuò):
write /blobs/sha256/635e6bb12b404837cd39744c12bf83886fb46a0ef9550b7f945fa991d9d4c802: no space left on device
即 “磁盤空間不足”。本文記錄從排查到徹底解決的完整過程。
一、現(xiàn)象與初步判斷
運(yùn)行 df -h 后發(fā)現(xiàn):
/dev/sda3 46G 45G 818M 99% / /dev/sda5 30G 359M 30G 2% /data

根分區(qū)(/)幾乎被占滿,而 Docker 的默認(rèn)數(shù)據(jù)目錄 /var/lib/docker 正好在這個(gè)分區(qū)上。
這意味著 Docker 鏡像、容器的寫層都擠在 / 里,導(dǎo)致空間爆滿。
二、徹底釋放空間的思路
既然 /data 分區(qū)還有 30G 空閑,我們可以把 Docker 的數(shù)據(jù)根目錄遷過去,這樣以后所有鏡像、容器都不再占用 /。
三、操作步驟(生產(chǎn)可用)
1、停止 Docker
systemctl stop docker
2、創(chuàng)建新目錄
mkdir -p /data/docker
3、同步舊數(shù)據(jù)
rsync -aH --delete /var/lib/docker/ /data/docker/ \ 2>/dev/null || cp -a /var/lib/docker/. /data/docker/
4、備份舊目錄
mv /var/lib/docker /var/lib/docker.bak
5、修改 Docker 配置
新建或修改 /etc/docker/daemon.json:
{
"data-root": "/data/docker"
}
6、啟動(dòng) Docker
systemctl start docker
7、驗(yàn)證是否生效
docker info | grep "Docker Root Dir"

8、刪除舊備份(釋放空間)
rm -rf /var/lib/docker.bak

四、重新導(dǎo)入鏡像
docker load -i /opt/data/fast_demo/fastdds_2.8.0.tar
若顯示:
Loaded image: fastdds:2.8.0
說明鏡像成功導(dǎo)入。
五、經(jīng)驗(yàn)總結(jié)
| 項(xiàng)目 | 原因 | 解決方式 |
|---|---|---|
| 報(bào)錯(cuò)內(nèi)容 | /var/lib/docker 空間耗盡 | 查看根分區(qū)與 overlay 掛載情況 |
docker system prune 無效 | overlay 層未被清理 | 手動(dòng)清理或遷移 Docker 根目錄 |
| 推薦做法 | 將 Docker 數(shù)據(jù)遷到大分區(qū) /data | 修改 daemon.json 的 data-root |
| 驗(yàn)證方式 | docker info + df -h | 觀察 /data 增長、/ 降低 |
六、附加命令:快速清理大文件
# 找出最大目錄
du -xh /var/lib/docker | sort -h | tail -n 20
# 截?cái)嗳萜魅罩?
find /var/lib/docker/containers -name "*-json.log" -exec truncate -s 0 {} \;
# 清理系統(tǒng)日志
journalctl --vacuum-size=500M
以上就是Docker加載鏡像時(shí)報(bào)錯(cuò)no space left on device的徹底解決方案的詳細(xì)內(nèi)容,更多關(guān)于Docker加載鏡像報(bào)錯(cuò)no space的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
docker-compose實(shí)現(xiàn)容器任務(wù)編排的方法步驟
本文主要介紹了docker-compose實(shí)現(xiàn)容器任務(wù)編排的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
詳解在Docker容器內(nèi)外互相拷貝數(shù)據(jù)的方法
本篇文章主要介紹了詳解在Docker容器內(nèi)外互相拷貝數(shù)據(jù)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03
Docker 搭建 Tomcat 運(yùn)行環(huán)境的方法
這篇文章主要介紹了Docker 搭建 Tomcat 運(yùn)行環(huán)境的方法,Docker與虛擬機(jī)及搭建過程,介紹的非常詳細(xì),需要的朋友可以參考下2016-10-10
docker日常使用的實(shí)用小技巧總結(jié)(推薦)
docker是持續(xù)構(gòu)建應(yīng)用交付的一大利器也,但是要使工具發(fā)揮最大的功效還需要知道一些小技巧。下面這篇文章給大家主要總結(jié)介紹了關(guān)于docker日常使用的一些實(shí)用小技巧,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒。2017-09-09
Docker Compose引用環(huán)境變量的方法示例
在項(xiàng)目中,往往需要在 docker-compose.yml 文件中使用環(huán)境變量來控制不同的條件和使用場景。本文集中介紹 docker compose 引用環(huán)境變量的方式,感興趣的小伙伴們可以參考一下2018-12-12
docker容器中cron任務(wù)未執(zhí)行的原因分析及解決
在Ubuntu?22.04鏡像中cron任務(wù)執(zhí)行失敗,可能與pam權(quán)限或文件權(quán)限設(shè)置有關(guān),解決方法包括動(dòng)態(tài)加載任務(wù)至crontab及將文件權(quán)限設(shè)為600(容器默認(rèn)umask=0022),后者因權(quán)限沖突導(dǎo)致執(zhí)行失敗,推薦此方案2025-08-08

