我最近开始使用Docker,从未意识到我应该使用Docker compose down而不是ctrl-c或Docker composestop来摆脱我的实验。我现在在本地有大量不需要的docker图像。

我是否可以运行一个标志来删除所有本地docker图像和容器?

类似docker rmi-all-force-all-flag的东西不存在,但我正在寻找具有类似想法的东西。


当前回答

删除所有图像,但至少有一个容器与其关联

$ docker images prune -a

要获取图像的所有名称:docker-images-a-q,并在同一行中使用此命令删除所有图像。

docker image rmi $(docker images -a -q)

如果您将图像附加到至少一个正在运行的容器,最好先停止它们。

要删除10天前(240小时)创建的图像,请执行以下操作:

$ docker images prune -a --force --filter "until=240h"

可以使用以下命令进行验证:

$  docker images --format 'table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.CreatedAt}}\t{{.Size}}'

其他回答

仅删除所有图像,然后运行以下命令

docker rmi -f $(docker images -aq) 

删除未使用的容器、映像和卷,然后运行以下命令

docker system prune -a -f 

要删除所有图像,请执行以下操作:

docker rmi $(docker images -a -q)

其中-a是all,-q是仅返回图像id

要删除未使用的图像和容器,请执行以下操作:

docker system prune

注意,如果您正在使用dockerswarm,并且您的本地机器正在加入远程swarm(作为管理员/工作人员),那么您的本地将是部署的repo。执行此操作从而移除部署的图像。

Windows中存在一个错误,即删除映像后无法回收磁盘空间。重新启动Docker/Windows不起作用。

如果您使用的是Docker Desktop,以下方法对我有效。请转到疑难解答->清理/清除数据。这可以为您节省大量磁盘空间,可能比您想要的更多。

请注意:这会删除所有内容,因此在执行此操作之前请三思!

简单方便的命令

删除所有图像

docker rmi $(docker images -a)

删除处于退出状态的容器

docker rm $(docker ps -a -f status=exited -q)

删除处于已创建状态的容器

docker rm $(docker ps -a -f status=created -q)

注意:移除所有容器,然后移除图像

Unix

为了删除包括其卷使用在内的所有容器,

docker rm -vf $(docker ps -aq)

为了删除所有图像,

docker rmi -f $(docker images -aq)

请记住,在删除创建这些容器的所有图像之前,应先删除所有容器。

Windows-Powershell

docker images -a -q | % { docker image rm $_ -f }

Windows-命令行

for /F %i in ('docker images -a -q') do docker rmi -f %i