如何删除所有本地Docker映像?

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

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

类似于docker rmi --all --force--all标志的东西不存在,但我正在寻找类似想法的东西。

673382 次浏览

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

使用这个删除所有内容

docker system prune -a --volumes

删除所有未使用的容器、卷、网络和映像

WARNING! This will remove:- all stopped containers- all networks not used by at least one container- all volumes not used by at least one container- all images without at least one container associated to them- all build cache

https://docs.docker.com/engine/reference/commandline/system_prune/#extended-description

docker image prune -a

删除所有未使用的图像,而不仅仅是悬挂的图像。将-f选项添加到力量。

本地docker版本:17.09.0-ce,Git提交:afdb6d4,OS/Arch:darwin/amd64

$ docker image prune -hFlag shorthand -h has been deprecated, please use --help
Usage:  docker image prune [OPTIONS]
Remove unused images
Options:-a, --all             Remove all unused images, not just dangling ones--filter filter   Provide filter values (e.g. 'until=<timestamp>')-f, --force           Do not prompt for confirmation--help            Print usage

要删除所有图像:

docker rmi -f $(docker images -a | awk {'print $3'})

说明:

docker图片-a|awk{'print 3美元'}

此命令将返回所有图像ID,然后用于使用其ID删除图像。

简单方便的命令

删除所有图像

docker rmi $(docker images -a)

删除处于退出状态的容器

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

删除处于创建状态的容器

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

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

你可以试试这样:

docker system prune

要删除所有图像:

docker rmi $(docker images -a -q)

其中-a是全部,-q是只返回图像id

要删除未使用的图像和容器:

docker system prune

请注意,如果您使用的是docker群,并且您的本地机器正在加入远程群(作为管理器/工作人员),您的本地机器将是已部署的存储库。执行此操作从而删除已部署的映像。

如果您需要删除不调用docker

rm -rf /var/lib/docker

这将直接从文件系统中删除所有docker映像/容器/卷。

docker rmi $(docker images -q) --force

添加到techtabu接受的答案,如果您在Windows上使用docker,您可以使用以下命令

for /F "delims=" %A in ('docker ps -a -q') do docker rm %A

在这里,命令docker ps -a -q列出了所有图像,这个列表一个接一个地传递给docker rm

有关这种类型的命令格式如何在windows cmd中工作的更多详细信息,请参阅这个

xargs的另一种方式(仅限Unix)

docker image ls -q | xargs -I {} docker image rm -f {}

要删除所有Docker本地Docker映像,请遵循2个步骤::

第1步:docker镜像(列出所有带有id的docker镜像)

     example :REPOSITORY    TAG    IMAGE ID            CREATED             SIZEpradip564/my  latest 31e522c6cfe4        3 months ago        915MB

步骤2:docker图片rm 31e522c6cfe4(图片ID)

      OUTPUT : image deleted

这是我使用的快速解决方案

Docker提供了一个命令来清理任何资源——镜像、容器、卷和网络——这些资源是悬空的(与容器无关):

docker system prune

要额外删除任何停止的容器和所有未使用的图像(不仅仅是悬挂的图像),请在命令中添加-a标志:

docker system prune -a


更多详情请访问链接

这是我使用的命令,并将其放在批处理文件中以删除所有内容:

echo"删除容器:"&&if[-n"$(docker容器ls-aq)"];然后docker容器停止$(docker容器ls-aq); docker容器rm$(docker容器ls-aq); fi; echo"删除图像:"&&如果[-n"$(docker图片-aq)"];那么docker rmi-f$(docker镜像-aq)图片-aq); fi; echo"删除卷:"&&if[-n"$(docker卷)ls-q)"];然后docker卷rm$(docker卷ls-q); fi; echo"删除网络:"&&if[-n"$(docker网络ls|awk'{print1美元""2美元}'|grep-v'ID|bridge|host|没有'|awk'{print 1美元}')"];然后docker网络rm$(docker网络ls|awk'{print 1美元""2美元}'|grep-v'ID|bridge|host|没有'|awk'{print 1美元}'); fi;

  1. sudo docker图片/docker图片//带id的图片列表
  2. sudo docker rm image <image_id>/docker rm image <image_id>

删除映像后没有回收磁盘空间的Windows中的bug。重新启动Docker/Windows不起作用。

如果您使用的是Docker Desktop,以下对我有用。转到故障排除->清理/清除数据。这可以为您节省大量磁盘空间,也许比您想要的更多。

在此处输入图片描述

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

其他答案似乎没有提供仅删除具有“自动生成”名称的容器的简单方法。这是我最常见的意图,所以我为它编写了一个Powershell脚本:

$containers = (docker container list -a).Split("`n") | % { [regex]::split($_, "\s+") | Select -Last 1 }$containersToRemove = $containers | Where { ([regex]"^[a-z]+_[a-z]+$").IsMatch($_) }
# it's recommended to delete in batches, as too many at once can cause issues$containersToRemove = $containersToRemove | Select-Object -First 30
foreach ($container in $containersToRemove) {# sync/wait-based version (slow)# docker container rm $container
# async/background-process version (fast)Start-Process -FilePath docker -ArgumentList "container rm $container" -NoNewWindow}

当然要小心,因为这个脚本只是使用正则表达式:^[a-z]+_[a-z]+$

因此,只有在您知道您关心的容器不使用相同的格式(小写单词、下划线、小写单词)时才使用它;或者至少只运行前两行,运行echo $containersToRemove,并在实际执行删除之前检查列表。

docker rmi -f $(docker images -q)

对于LinuxUbuntu用户,下面为我工作。注意事项-它将顺便删除所有内容。

要删除容器以及与之关联的卷,请使用以下方法:

sudo docker rm -vf $(sudo docker ps -a -q)

对于删除图像使用下面:

sudo docker rmi -f $(sudo docker images -a -q)

docker图片rm-f$(docker图片ls-a-q)

docker images -f dangling=truedocker image prune

检查docker容器体积

docker system df

修剪所有图像和卷

docker prune --all

删除所有图像没有至少一个关联的容器给他们

$ docker image prune -a

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

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

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

要删除超过10天(240小时)前创建的图像:

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

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

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

删除所有停止的容器和所有未使用的图像。

docker系统prune-a