Linux 云服务器报错 no space left on device
#18 [vite-docs-vite_docs builder 5/6] COPY . /app
#18 ERROR: failed to copy files: userspace copy failed: write /var/lib/docker/overlay2/nqmnuxkagsp22014kige5lofx/merged/app/.git/objects/pack/pack-f0b9288c6710053b2d6eb78e2c2333384419a717.pack: no space left on device
------
> [vite-docs-vite_docs builder 5/6] COPY . /app:
------
failed to solve: failed to copy files: userspace copy failed: write /var/lib/docker/overlay2/nqmnuxkagsp22014kige5lofx/merged/app/.git/objects/pack/pack-f0b9288c6710053b2d6eb78e2c2333384419a717.pack: no space left on device
Error: SSH command failed with error code 17.
这个错误提示很可能是由于云服务器的磁盘空间已满导致的。
错误消息中的 no space left on device
明确指出了在执行 COPY
操作时,Docker 无法将文件写入目标路径,因为磁盘空间不足。
解决方法:
检查磁盘空间: 你可以使用以下命令检查服务器的磁盘空间使用情况:
bashdf -h
这会显示所有挂载的磁盘分区的使用情况,特别关注
Use%
列,看看哪个分区已经用满了。清理空间:
如果发现某些分区的空间已经用完,你可以尝试以下几种方法清理空间:
- 删除不必要的文件或日志: 找到不再需要的大文件或日志文件,将它们删除或归档到其他存储位置。
- 清理 Docker 镜像和容器: Docker 镜像和未使用的容器可能会占用大量空间。你可以使用以下命令清理未使用的资源:bash这将删除所有未使用的镜像、容器、网络和构建缓存。
docker system prune -a
- 清理系统缓存: 如果是 Linux 服务器,可以使用以下命令清理系统缓存:bash
sudo apt-get clean
扩展磁盘空间:
如果清理后仍然空间不足,你可能需要考虑扩展云服务器的磁盘容量。
清理空间后,你可以再次尝试执行 Docker 操作。
运行命令 检查磁盘空间 df -h
[root@VM-20-6-centos ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.6G 0 7.6G 0% /dev
tmpfs 7.6G 152K 7.6G 1% /dev/shm
tmpfs 7.6G 2.1M 7.6G 1% /run
tmpfs 7.6G 0 7.6G 0% /sys/fs/cgroup
/dev/vda1 217G 217G 0 100% /
tmpfs 1.6G 0 1.6G 0% /run/user/0
overlay 217G 217G 0 100% /var/lib/docker/overlay2/75636dea221c606bed820eb1e3ac2b8a3e097cb735591f774c71a8ef3ec8f271/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/5c444b9a5797cc0e76eba9a2110ed4acc8b18d4c5c58ab4c50655dd9fb0f033a/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/ded5e6b8f1ba089ce835df9328a4633586ac451f671484aab4fd96ddace89ef7/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/7cd32b8e5f2ec4d240b8c773bbcb60e5784799fddf11ac7ce8378306a61939ba/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/cb54bbe2af8a96d20051286bdf6b4326aee1577a3a2dec5ae41570c1c6a746d7/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/804ee8b6f3db48acff097274eb54397b6e96758f17ea01afd8508660a1284592/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/ac8e2ab93b3a425bffb424cf892d3d6ed39e02cc1f3fbcc3b1ecf8c1a3d1177c/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/3cd1f7a3311d63418be5230237946c7f528502614b6cf9a941949e99651b266a/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/9834005693f30a1e58c8ebbb07a98453384f4f19ca5cef362e70d3159d3ae286/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/2912412064ffbb58a96c400588db425f5f3446624b741c974fb85d3630d6c47e/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/8498f3c4d3064ed9674a3682c4e85e7fda7365d772bd5c0d21d81beedd94cc48/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/c760b707e66076d7a83848010051c842bb61e07fb0e6c3c85ba358f8be78d1c0/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/6db76c3dd0655f6a79814bd87519fbd968e29600e630a68f1e4c6b7b427261ec/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/5d4e098d134212e637766264d71cab773c9009b1d77edcafacb97e83acdfaa27/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/62f38f6480fa0ecb9aa1e154364715cffaad4cc45ed989d9d8544599ef8130fe/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/115e64727f22c075e24445f5f299cec8ac9c15a2c3975ee813a4e45ed3483509/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/d786c2624effd5e5dc3f59e68db3817aae66e5dfbca02519b6611a09e59df498/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/7f74adb79d4afa4751ccf1a0736baba2a5838007d6fc02afc421d3417b5addfe/merged
overlay 217G 217G 0 100% /var/lib/docker/overlay2/ceb98ce126f400a7d1e694b334d032bc05e1ec54ad41b452973a1a46fce36e45/merged
[root@VM-20-6-centos ~]#
从 df -h
的输出中可以看到,你的 /dev/vda1
分区已经完全满了(100% 使用),这是导致 Docker 操作失败的原因。
要解决这个问题,你需要释放一些磁盘空间。以下是一些可以考虑的步骤:
1. 清理 Docker 数据
Docker 数据文件可能占用了大量空间。你可以执行以下命令来清理不再使用的 Docker 容器、镜像和网络:
docker system prune -a
这将删除所有未使用的镜像、悬挂的(dangling)容器、网络和构建缓存。
请确保删除前不需要保留这些数据。
DANGER
!!!请确保删除前不需要保留这些数据。 !!!请确保删除前不需要保留这些数据。 !!!请确保删除前不需要保留这些数据。
2. 检查和删除大文件
找出系统中占用大量空间的文件或目录并删除不需要的文件:
du -sh /* | sort -rh | head -20
这将显示文件系统根目录下最大的 20 个目录和文件。
3. 删除不必要的日志文件
有些系统日志文件可能占用了大量空间。你可以清理这些日志文件:
sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
这个命令会将所有日志文件清空。
4. 卸载不必要的软件
检查并卸载不再需要的软件包:
sudo yum autoremove
这将删除所有不再需要的依赖包。
5. 扩展磁盘空间
如果你需要更多的存储空间,可以考虑扩展云服务器的磁盘容量,这可以通过云服务提供商的管理控制台完成。
在清理或扩展磁盘空间后,再次运行 Docker 操作应该不会再遇到空间不足的问题。
运行 docker 命令 docker system prune -a
[root@VM-20-6-centos ~]# docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y
Deleted Containers:
637997e20a24d7b1873ed8f5c4daf34491b906551307e34d9a0b22c08c6086e8
067a5da0b3d62216a079ee1930b28149e882724a55ff738fc8b005d7420a72a2
9980d45318034639401708031f7d60ad516dc204e5c7d0b92389d66cb954c2f5
9eb46480ac59fa19251a98b8a0cedd64a5d093e24349cd4137c51675f4bf91c1
Deleted Networks:
jenkins_jenkins_net
share_aly_nginx
Deleted Images: