在 macOS 上删除本地 Docker 镜像

16

我正在使用Docker for Mac,为了节省磁盘空间,我想要清除一些未使用的本地镜像。据我所知,本地文件存储在~/Library/Containers/com.docker.docker中。

但是即使我从Docker中删除所有镜像和容器,该文件夹仍然保持几GB的大小,没有一个字节被释放。唯一的选择是完全删除com.docker.docker文件夹,但这只有当您想要删除所有数据而不仅仅是未使用的镜像时才有意义。我做错了什么?


2
docker image rm 有什么问题吗? - Henry
1
正如我所提到的,它可以正确地从cli中删除图像,但是com.docker.docker文件夹并没有像预期的那样缩小。这不是关于删除容器/图像,而是相应地释放磁盘空间的问题。 - Mountain
@Henry 给出了大家正在寻找的答案。使用 docker image rm IMAGEID -f 命令可以强制删除镜像。 - crmpicco
4个回答

13
sudo docker system prune -af

只需简单执行上面给定的命令。它将自动删除所有图像。


10

要删除所有未使用的镜像,请使用docker images prune

还有另一种方法可以删除所有未使用的镜像(悬挂):docker rmi $(docker images -aq --filter dangling=true)

要删除您不需要的镜像,请使用docker rmi <image>。您可以使用多个镜像,例如:docker rmi abcdef ghijkl,其中abcdefghijkl是镜像哈希值。

如果这不能立即解决问题,则尝试重新启动Docker服务(sudo service docker restart)。在某些情况下,镜像/容器仅被标记为"已删除",但未被删除。但是它们会在重启后被删除。


感谢您的提示。遗憾的是,它们都没有解决我的问题。docker rmi $(docker images -aq --filter dangling=true) 返回 "docker rmi" 需要至少 1 个参数。docker images prune 返回一个空的镜像列表。在终端中,sudo service docker restart 给了我一个 sudo: service: command not found,所以我多次重启了 Docker 应用程序并使用了重启按钮 - 但我的 Finder 在所有这些尝试之前和之后都告诉我有 6.39 GB 的文件夹大小。 - Mountain
我不确定 Mac 如何工作,所以也许 service 不是正确的命令。它在 *nix 上运行良好,所以我认为它在 Mac 上也能运行,因为它是 *nix。尝试手动删除未使用的图像。 - Kevin Kopf

8
这里的情况是您的 Docker for Mac 应用程序实际上在运行虚拟机。该虚拟机有自己的磁盘,也就是 qcow2 文件。该磁盘被惰性分配,并不会一次性占用所有空间。一旦虚拟机内部使用了空间,那么磁盘将在主机上增长。
磁盘映像将增长直到达到磁盘的大小。仅仅因为在虚拟机内部删除文件,这并不会导致主机上的磁盘映像再次缩小。
有一个可能的解决方案可用于缩小磁盘映像:https://forums.docker.com/t/where-does-docker-keep-images-containers-so-i-can-better-track-my-disk-usage/8370/7 我见过一些人成功地使用了这个技巧。

感谢您的解释,让一些事情更容易理解了。因此,即使这不是完全的解决方案(显然现在还没有“真正的解决方案”),它也应该被标记为正确答案。 - Mountain

6
列出你的镜像: docker images 删除单个镜像: docker rmi image_id

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