【解决Docker无剩余存储磁盘空间问题】
目录
一、问题概述
执行Docker build -t [镜像名] [源目录] 命令报错 "copy file range failed: no space left on device"
二、问题原因
Docker 磁盘空间已满,没有足够的磁盘空间进行编译镜像
shell
# 查看Docker存储根目录
[root@appserver ~]# sudo docker info | grep "Docker Root Dir"
[root@appserver ~]# cd /var/lib/docker/
# 查看系统磁盘空间使用情况
[root@appserver docker]# df -h
# 查看Docker磁盘空间使用情况
[root@appserver docker]# docker system df
通过上面命令截图得知,Docker磁盘空间已经达到89%,
三、解决方案
1、方案一:清除Docker磁盘空间
1)、清除Docker磁盘空间
下面命令将删除所有未使用的容器、镜像和卷
shell
[root@appserver docker]# docker system prune -a
2)、手工清除Docker磁盘空间
下面命令按需删除未使用的容器、镜像和卷
shell
# 删除所有已停止的容器
[root@appserver docker]# docker container prune
# 删除所有已停止的镜像
[root@appserver docker]# docker image prune
# 删除所有已停止的卷
[root@appserver docker]# docker volume prune
2、方案二:更换Docker磁盘存储目录
shell
[root@appserver ~]# systemctl stop docker
[root@appserver ~]# rsync -aP /var/lib/docker/ /new/path/docker/
[root@appserver ~]# vim /lib/systemd/system/docker.service
使用编辑器打开并修改 ExecStart 参数,添加或修改 --data-root 选项:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root /new/path/docker
shell
# 重新加载系统服务配置并启动Docker服务
[root@appserver ~]# systemctl daemon-reload
[root@appserver ~]# systemctl start docker
# 检查Docker是否正常工作
[root@appserver ~]# sudo docker info | grep "Docker Root Dir"
以上是整个解决问题的过程