【问题标题】:How can I fix Docker/Mac no space left on device error?如何修复 Docker/Mac no space left on device 错误?
【发布时间】:2016-10-05 09:06:31
【问题描述】:

我已经构建了一个非常大的映像 (1G),其中包含许多用于测试的“基础设施”(Mongo、Kafka 等)

尝试启动此操作时,设备错误上没有剩余空间。我该如何解决这个问题?

我已经清除了停止的图像并删除了所有我不需要的图像。

【问题讨论】:

    标签: macos docker


    【解决方案1】:

    检查您的 docker 目录以找到您的问题(在 MAC 上这会有所不同,但相同的方法可能会有所帮助)

    du -hs /var/lib/docker
    

    您可以通过对/var/lib/docker 的子文件夹执行相同的命令来查看哪个文件夹占用了大量磁盘空间:

    • 对于/var/lib/docker/volumes:您必须删除“orphaned”卷。 您也可以使用docker volume ls -qf dangling=true 来检查 卷。删除孤立卷:docker volume rm $(docker volume ls -qf dangling=true)

    • 对于/var/lib/docker/containers,您必须检查是否有很多已停止(或正在运行)的容器,其中docker ps = 正在运行的容器,docker ps -a = 所有容器(正在运行和已停止)。删除停止的容器:docker rm -v $(docker ps -aq)-v 标志会自动删除容器的卷

    • 对于/var/lib/docker/images,您可以使用docker rmi $(docker images --filter "dangling=true" -q --no-trunc)删除所有未使用的图像

    还可以查看 GitHub 以找到一些非常有用的脚本,这些脚本可以删除您未使用的图像/容器/卷。

    【讨论】:

    【解决方案2】:

    您始终可以重新删除并重新创建 boot2docker vm,以确保仅重新构建/导入所需的图像/容器。如果您一直遇到空间问题,您可能希望给 boot2docker vm 更多空间,请参阅Docker increase disk space

    【讨论】:

      【解决方案3】:

      如果您在使用 Docker 时遇到 no space left on device 错误,您可以使用 system prune 轻松解决此问题。

      我使用 Docker for Mac 17.03。

      在 docker UP 和所有容器 RUNNING 的情况下,执行 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]
      

      然后按 y 删除大量容器,最后(在我的情况下)为:Total reclaimed space: 23.26 GB.

      现在您无需重新启动 docker 即可继续工作!

      【讨论】:

      • 这是一个解决方案,无法想象一旦仍然将所有这些垃圾文件留在那里,增加磁盘分配会是一个解决方案。
      【解决方案4】:

      您可以更新可用于 vm 的硬盘大小 $HOME/.docker/machine/machines/default/config.json

      【讨论】:

        【解决方案5】:

        您可以在 Docker for Mac 的首选项中的 磁盘 选项卡中调整虚拟磁盘映像的大小。这将增加空间不会丢失数据


        在较新的版本中,可以在资源选项卡(子选项卡“高级”)中找到设置:

        【讨论】:

        • 视情况而定,在某些时候你的真实磁盘会满,增加虚拟磁盘不再是一种选择:-)
        • 我也觉得现在应该是正确答案了。
        • 我同意这也应该是公认的答案。我的用例,我不想删除我所有的构建缓存,因为我试图重新处理我的 Dockerfile,所以可缓存的步骤不会失效。
        • 在我的情况下,我必须转到资源选项卡和高级部分来更改这些。我的 Docker for Mac 社区版本 4.1.7
        • 我这样做了,Docker.raw 文件确实变小了,但是在转到关于这台 Mac > 存储时我再也没有得到空间。我将磁盘映像大小从 64GB 缩小到 8GB,但空间没有显示为在存储中被回收。有什么想法吗?
        【解决方案6】:

        您可以单击顶部的 Docker 图标,然后单击 preferences。转到reset 标签并点击remove all data

        【讨论】:

        • 自 2021 年起,这似乎不再是 UI 中的选项。
        【解决方案7】:

        尝试增加磁盘空间。这对我有用。 Docker -> 首选项 -> 磁盘 -> 磁盘映像大小(增加)-> 应用

        【讨论】:

        • 我相信这应该是公认的答案,在 system prune 一切之前。
        • 我不知道这个。我想知道为什么 docker 不提供执行此操作的 cli 方式而不是 UI 方式。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-30
        • 2016-11-28
        • 2020-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多