问题:
在 Linux 环境上使用 docker 命令 <docker pull 镜像> 拉取镜像的时遇到了 No space left on device 的问题。
排查过程:
初步分析可能是存储镜像的路径磁盘满了。
但是使用 df -h 命令之后,发现磁盘还有空间。于是猜测应该是 docker 自身占用的磁盘满了。
1、使用下面的命令,查看 docker 所在的位置
docker info
返回下面的信息

从上面的图可以看出, docker 所在的路径为 /var/lib/docker
2、使用下面的命令,查看 docker 路径下占用情况
df -h /var/lib/docker/
返回下面信息
[root@docker ~]# df -h /var/lib/docker/
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 39G 0 100% /
由上可知我们 docker 的磁盘占有率已经满了,需要清理。或者挂载到一块大磁盘上。
也可以使用 docker system df 命令。来查看 docker 占用的空间情况。下面是参数说明
Images:所有镜像占用的空间,包括拉下来的和本地构建的Containers:运行容器占用的空间,表示每个容器的读写层的空间Local Volumes:容器挂载本地数据卷的空间Build Cache:镜像构建过程中产生的缓存空间(Docker 18.09后,使用BuildKit才有)RECLAIMABLE是可回收大小
3、清理无效数据文件
切换到 docker 根路径,查找占用空间大的文件,并根据情况清理文件。也可以全部清除
关闭 docker
systemctl stop docker
切换到 docker 目录下
cd /var/lib/docker
删除所有
rm -rf ./*
启动 docker
systemctl start docker
注意:在删除 /var/lib/docker/ 下目录时,需要将docker服务停止。
删除 /var/lib/docker/ 目录下文件,最好提前做个备份,可以恢复。
其他命令
1、查看所有已经停止的容器
docker ps -a|grep Exited
2、删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)
docker rm $(docker ps -a -q)
3、根据容器的状态,删除Exited状态的容器
docker rm $(docker ps -qf status=exited)
4、显示所有状态为Exited的容器,取出这些容器的ID
docker ps -a|grep Exited|awk '{print $1}'
根据ID删除容器
docker rm `docker ps -a|grep Exited|awk '{print $1}'`
docker 1.13 版本以后,可以使用 docker system 或 docker container 命令清理容器
5、删除已停用容器
docker container prune
6、删除关闭的容器、无用的数据卷和网络,以及dangling镜像
docker system prune
7、清理得更加彻底,可以将没有容器使用 docker 的镜像都删掉
docker system prune -a









![[附源码]Python计算机毕业设计电影网站系统设计Django(程序+LW)](https://img-blog.csdnimg.cn/8db40f659be64277bf73b35c426d3a0a.png)
![OpenAi[ChatGPT] 使用Python对接OpenAi APi 实现智能QQ机器人-学习详解篇](https://img-blog.csdnimg.cn/img_convert/ffb49a865373b32b1690f0c4a22dd7f9.png)

![[附源码]Node.js计算机毕业设计大悦城电竞赛事管理系统Express](https://img-blog.csdnimg.cn/114da38b708642cdbb855c0a178b8474.png)






