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


264

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

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

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



2
docker images purge->将删除所有
docker

使用xargs:docker image ls -q | xargs -I {} docker image rm -f {}
arkadyt

@muthukumarhelius我想你的意思是docker image prune(图像是奇异的,是修剪而不是清除)。
安德烈斯·梅希亚

Answers:


530

要删除所有容器(包括其卷),

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

要删除所有图像,

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

请记住,您应该先删除所有容器,然后再删除创建这些容器所用的所有图像。

如果您使用Windows(Powershell),

$images = docker images -a -q
foreach ($image in $images) { docker image rm $image -f }

7
unknown shorthand flag: 'a' in -a跑步时docker rmi -f $(docker images -a -q)
Ashutosh Chamoli

25
@Ashutosh Chamoli:在CMD中不起作用,在PowerShell中起作用。
杰克

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

4
我一定来过这里一百次了。感谢您撰写此答案!
Ajay Maity

“ docker rmi -f $(docker images -a -q)”真是个坏蛋
Sinux

176

使用它删除所有内容

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


1
但是,实际上并没有回收所有磁盘空间。
lucian303 '19

@ lucian303这种方法确实回收了磁盘空间。也许您正面临一个特定的问题。
罗伯特

当我执行此操作以及 @techtabu的答案中的步骤时,我似乎似乎只得到期望的结果
sir_dancealot

31

为了简单地清除所有内容,请执行以下操作:

$ docker system prune --all

一切都意味着:

  • 所有停止的容器
  • 至少一个容器未使用的所有网络
  • 所有没有至少一个关联容器的图像
  • 全部建立缓存

25

docker image prune -a

删除所有未使用的图像,而不仅仅是悬空的图像。添加-f选项以强制执行。

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

$ docker image prune -h
Flag 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

7

简单方便的命令

删除所有图像

docker rmi $(docker images -a)

删除处于退出状态的容器

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

删除处于创建状态的容器

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

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


删除所有映像,应为-“ docker rmi $(docker images -a -q)”。-q仅返回图像ID
Jimmy MG Lim,

这意味着它已删除了这些图像。再检查一次
Deep Nirmal

3

删除所有图像:

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

说明:

泊坞窗图像-a | awk {'print $ 3'}

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


3

删除而不调用docker

rm -rf /var/lib/docker

不建议您是否可以正常运行docker,但是如果出于某些原因您不愿意或不希望这样做,则可以使用。



2

删除所有图像:

docker rmi $(docker images -a -q)

其中-a是全部,而-q是仅返回图像ID

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

docker system prune

请注意,就好像您使用的是docker swarm,而您的本地计算机正在加入远程swarm(以经理/工作人员身份)一样,您的本地将是已部署的存储库。执行此操作将删除部署的映像。


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

2
在帖子上留下答案时,您应该添加一些解释,以便以后找到它的其他人可以理解。
Morphyish

1

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

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

在这里,命令docker ps -a -q列出了所有图像,并且此列表被docker rm一一传递

有关命令格式在Windows cmd中如何工作的更多详细信息,请参见此内容。


1

另一种方式 xargs

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

0

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

第1步:泊坞窗映像(列出所有具有ID的泊坞窗映像)

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

步骤2:泊坞窗映像RM 31e522c6cfe4(图像ID)

      OUTPUT : image deleted
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.