Skip to content

Linux 云服务器报错 no space left on device

bash
#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 无法将文件写入目标路径,因为磁盘空间不足。

解决方法:

  1. 检查磁盘空间: 你可以使用以下命令检查服务器的磁盘空间使用情况:

    bash
    df -h

    这会显示所有挂载的磁盘分区的使用情况,特别关注 Use% 列,看看哪个分区已经用满了。

  2. 清理空间:

    如果发现某些分区的空间已经用完,你可以尝试以下几种方法清理空间:

    • 删除不必要的文件或日志: 找到不再需要的大文件或日志文件,将它们删除或归档到其他存储位置。
    • 清理 Docker 镜像和容器: Docker 镜像和未使用的容器可能会占用大量空间。你可以使用以下命令清理未使用的资源:
      bash
      docker system prune -a
      这将删除所有未使用的镜像、容器、网络和构建缓存。
    • 清理系统缓存: 如果是 Linux 服务器,可以使用以下命令清理系统缓存:
      bash
      sudo apt-get clean
  3. 扩展磁盘空间:

    如果清理后仍然空间不足,你可能需要考虑扩展云服务器的磁盘容量。

清理空间后,你可以再次尝试执行 Docker 操作。

运行命令 检查磁盘空间 df -h

bash
[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 容器、镜像和网络:

bash
docker system prune -a

这将删除所有未使用的镜像、悬挂的(dangling)容器、网络和构建缓存。

请确保删除前不需要保留这些数据。

DANGER

!!!请确保删除前不需要保留这些数据。 !!!请确保删除前不需要保留这些数据。 !!!请确保删除前不需要保留这些数据。

2. 检查和删除大文件

找出系统中占用大量空间的文件或目录并删除不需要的文件:

bash
du -sh /* | sort -rh | head -20

这将显示文件系统根目录下最大的 20 个目录和文件。

3. 删除不必要的日志文件

有些系统日志文件可能占用了大量空间。你可以清理这些日志文件:

bash
sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;

这个命令会将所有日志文件清空。

4. 卸载不必要的软件

检查并卸载不再需要的软件包:

bash
sudo yum autoremove

这将删除所有不再需要的依赖包。

5. 扩展磁盘空间

如果你需要更多的存储空间,可以考虑扩展云服务器的磁盘容量,这可以通过云服务提供商的管理控制台完成。

在清理或扩展磁盘空间后,再次运行 Docker 操作应该不会再遇到空间不足的问题。

运行 docker 命令 docker system prune -a

bash
[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: