我建立了一个相当大的镜像(1G),里面有很多用于测试的“基础设施”(Mongo,Kafka等)。
在尝试启动时,我收到设备上没有剩余空间的错误。 我该怎么办?
我清理了已停止的镜像并删除了不是绝对必要的任何镜像。
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 即可返回工作!
检查你的Docker目录以找到问题所在(在MAC上可能会不同,但相同的方法可能有所帮助)
du -hs /var/lib/docker
您可以通过对/var/lib/docker
子文件夹执行相同的命令来查看哪个文件夹占用了大量磁盘空间:
对于/var/lib/docker/volumes
:您需要删除“孤立的”卷。您还可以使用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上查找一些非常有用的脚本,以删除未使用的映像/容器/卷。
尝试增加您的磁盘空间。这是对我有效的解决方案。 Docker -> 首选项 -> 磁盘 -> 磁盘映像大小(增加它) -> 应用
system prune
命令之前,这应该是被接受的答案。 - Islam Azab您可以在$HOME/.docker/machine/machines/default/config.json
中更新虚拟机可用的硬盘大小。
您可以点击顶部的Docker图标,然后选择偏好设置
。转到重置
选项卡,然后单击删除所有数据
。
您可以随时删除并重新创建boot2docker虚拟机,以确保只构建/导入所需的镜像/容器。如果您一直遇到空间问题,则可能需要为boot2docker虚拟机分配更多的空间,请参见Docker增加磁盘空间。