修复Docker错误 no space left on device

docker

我使用的是Mac电脑,我习惯在我电脑上Build镜像之后在推送到私有Registry。

【国内直连ChatGPT 29元起】
国内直连ChatGPT,Plus会员每月29元起,支持最新o1模型探索更多领域,无需注册OpenAI账号。

然而,今天我正要构建一个镜像时出现了错误

no space left on device

提示空间不够了。Docker使用分层存储技术很大程度上避免了空间浪费,但日积月累的也会有爆满的时候,就像垃圾桶一样,堆满了自然无法容纳更多的垃圾。Mac上安装了Docker程序之后默认占用磁盘空间为64GB,所以要解决空间不够的问题可以从两方面下手

调大磁盘空间

点开图标,在下拉菜单中选择Preferences...,在弹开的界面顶部中选择Disk菜单

full

从上图中我们看到下面有一个Disk image size: 64GB,表示默认Docker程序的镜像文件会占用磁盘最多64GB,如果你的历史镜像已达到这个容量,那么你在运行Docker命令运行或者打包的时候很容易出现no space left on device的提示,我们把它调大一点

full

点击Apply按钮后Docker程序会自动重启,如果重启成功那么应该可以继续使用了

清除镜像

如果你的Mac电脑磁盘容量紧张,不愿意话费更多的空间给Docker使用,也可以清除文件留出空间来运行新的镜像,可以使用以下命令进行清除

$ docker system prune -a
WARNING! This will remove:
- all stopped containers
- all volumes not used by at least one container
- all networks not used by at least one container
- all images without at least one container associated to them Are you sure you want to continue? [y/N]

在弹出的警告中提示你将会清除的内容:

  • 所有已停止的容器
  • 没有至少被一个容器使用过的所有volumes
  • 没有至少被一个容器使用过的所有networks
  • 没有至少被一个容器相关的images

当你选择y,稍等几分钟会看到类似Total reclaimed space: [Number] GB.表示已经回收了多少空间,如我的执行结束后提示我回收了将近50GB的空间

注意

由于Docker在Linux上使用overlay2做为存储驱动,这种驱动会使用所有主机空间和内存,没有办法限制它占用磁盘空间大小,也没有办法给它更多除非加硬盘。而在Docker在Mac上同Windowns一样运行在一个虚拟机里,所以很容易通过限制虚拟机磁盘占用大小来达到这个目的。

分享

TITLE: 修复Docker错误 no space left on device

LINK: https://www.qttc.net/495-how-can-i-fix-docker-no-space-left-on-device-error.html

NOTE: 原创内容,转载请注明出自琼台博客