【问题标题】:docker no space left on device macOSdocker macOS 设备上没有剩余空间
【发布时间】:2018-02-07 16:26:04
【问题描述】:

我正在尝试构建一个需要复制一些大文件 (~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(高山脉)上的最大容器大小(我读到默认是 100GB)?

【问题讨论】:

    标签: macos docker containers


    【解决方案1】:

    Docker 对象会随着时间的推移而累积,因此在大量使用的情况下,您最终可能会耗尽可用存储空间。您可以确认这是docker system df 的问题:

    docker system df
    

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

    # Prune everything
    docker system prune
    
    # Only prune images
    docker image prune
    

    请务必先阅读Prune unused Docker objects 文档,以确保您了解要丢弃的内容。

    如果你真的无法通过丢弃对象来回收足够的空间,那么你总是可以allocate more disk space

    【讨论】:

    • 可能值得一提的是,docker system prune 会在修剪任何内容之前让您知道要修剪的内容(您必须确认)。
    • docker builder prune 帮了我大忙——我的构建缓存使用了 47GB,主要负责我的 docker 机器空间不足。
    • docker system df 还会告诉您本地卷占用了多少空间。 docker volume prune 将删除所有未使用的本地卷。
    【解决方案2】:

    如何增加空间的说明:

    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 也是一种删除旧容器和未标记图像的快速方法。

    【讨论】:

    • 这为我消除了数百个毫无价值的容器,谢谢!
    【解决方案3】:

    在 macOS 中使用 docker 首选项增加 docker 的可用空间最终解决了这个问题。

    【讨论】:

    • 没错,但是意识到拥有数百个图像非常重要,因此最好在增加 docker 可用空间之前运行建议的清理命令,因为很可能不需要它。
    猜你喜欢
    • 2021-06-10
    • 1970-01-01
    • 2015-08-16
    • 2015-08-30
    • 2021-09-18
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多