Docker在macOS上提示设备空间不足

70
我正在尝试构建一个需要复制一些大文件(大约75GB)的Docker镜像,当我运行以下命令时出现以下错误:

我正在尝试构建一个需要复制一些大文件(大约75GB)的Docker镜像,当我运行以下命令时出现以下错误:

$ docker build -t my-project .
Step 8/10 : COPY some-large-directory
  failed to copy files: failed to copy directory: Error processing tar file(exit status 1): write /directory: no space left on device

我认为错误是由于容器空间不足引起的(我已经使用docker首选项将docker磁盘镜像大小增加到160GB)。如果是这样,我该如何在macOS(High Sierra)上增加最大容器大小(我了解默认值为100GB)?

3个回答

111

Docker对象会随着时间累积,因此在重度使用时,您最终可能会耗尽可用存储空间。 您可以通过docker system df确认这是否是问题:

docker system df

您可以通过对未使用的对象进行修剪来开始回收一些空间,以下是一些示例:

# Prune everything
docker system prune

# Only prune images
docker image prune

请务必先阅读清理未使用的Docker对象文档,以确保您了解将要丢弃的内容。

如果您通过丢弃对象无法回收足够的空间,则始终可以分配更多磁盘空间


4
值得一提的是,docker system prune 在清理任何内容之前会让你知道它将要清理什么(你需要确认),这样做可能是值得的。 - Idan Gozlan
1
"docker builder prune" 对我很有用 - 我的构建缓存使用了47GB,这是导致我的docker机器空间不足的主要原因。 - hbd
2
docker system df 还会告诉您本地卷占用了多少空间。docker volume prune 将删除所有未使用的本地卷。 - giavac

40

如何增加空间的说明:

https://forums.docker.com/t/no-space-left-on-device-error/10894/26?u=adnan

请注意,未标记的镜像和旧容器可能会占用大量空间。

要删除未标记的镜像,请使用以下命令:

docker images (查看问题的程度),然后使用以下命令:

docker rmi -f $(docker images | grep "<none>" | awk "{print \$3}")

对于容器,类似地,可以尝试以下命令:

docker rm -f $(docker ps -aq) (这将删除所有容器,所以请小心操作)

2020年更新:

docker system prune也是一种快速删除旧容器和未标记镜像的方法。


1
这为我消除了数百个无用的容器,谢谢! - Tanner

14

通过在 macOS 上使用 Docker 首选项增加可用空间,终于解决了问题。


7
确实,意识到拥有数百个镜像非常重要,因此最好在增加docker可用空间之前运行建议的清理命令,因为很可能没有必要增加空间。 - Ing. Luca Stucchi
如果您想减少Docker可用空间,系统会提示您在此操作后将失去所有镜像、容器和卷。 - Ilya Kolesnikov
设置位于资源 -> 高级 -> 虚拟磁盘限制。 - Dan Dascalescu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接