【发布时间】:2016-10-05 09:06:31
【问题描述】:
我已经构建了一个非常大的映像 (1G),其中包含许多用于测试的“基础设施”(Mongo、Kafka 等)
尝试启动此操作时,设备错误上没有剩余空间。我该如何解决这个问题?
我已经清除了停止的图像并删除了所有我不需要的图像。
【问题讨论】:
我已经构建了一个非常大的映像 (1G),其中包含许多用于测试的“基础设施”(Mongo、Kafka 等)
尝试启动此操作时,设备错误上没有剩余空间。我该如何解决这个问题?
我已经清除了停止的图像并删除了所有我不需要的图像。
【问题讨论】:
检查您的 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 以找到一些非常有用的脚本,这些脚本可以删除您未使用的图像/容器/卷。
【讨论】:
您始终可以重新删除并重新创建 boot2docker vm,以确保仅重新构建/导入所需的图像/容器。如果您一直遇到空间问题,您可能希望给 boot2docker vm 更多空间,请参阅Docker increase disk space
【讨论】:
如果您在使用 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 即可继续工作!
【讨论】:
您可以更新可用于 vm 的硬盘大小
$HOME/.docker/machine/machines/default/config.json
【讨论】:
【讨论】:
您可以单击顶部的 Docker 图标,然后单击 preferences。转到reset 标签并点击remove all data。
【讨论】:
尝试增加磁盘空间。这对我有用。 Docker -> 首选项 -> 磁盘 -> 磁盘映像大小(增加)-> 应用
【讨论】:
system prune 一切之前。