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

时间:2017-06-27 16:36:53

标签: docker docker-compose

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

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

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

18 个答案:

答案 0 :(得分:127)

要删除所有容器,包括其卷使用,

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

要删除所有图像,

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

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

答案 1 :(得分:59)

使用此删除所有内容

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

答案 2 :(得分:48)

为简单起见,请执行以下操作:

$ docker system prune --all

一切都意味着:

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

答案 3 :(得分:13)

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

Docker提供了一个命令,该命令将清除悬空(不与容器相关联)的所有资源(图像,容器,卷和网络):

docker system prune

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

docker system prune -a


有关更多详细信息,请访问link

答案 4 :(得分:7)

docker image prune -a

  

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

本地docker版本:17.09.0-ce,Git commit: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

答案 5 :(得分:2)

简单易用的命令

要删除所有图像

docker rmi $(docker images -a)

删除处于退出状态的容器

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

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

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

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

答案 6 :(得分:1)

要删除所有图像:

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

说明:

  

docker images -a | awk {'print $ 3'}

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

答案 7 :(得分:1)

  1. sudo docker images / docker images // ID为ID的图像列表
  2. sudo docker rm image <image_id> / docker rm image <image_id>

答案 8 :(得分:1)

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

答案 9 :(得分:1)

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

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

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

步骤2:docker image rm 31e522c6cfe4(IMAGE ID)

      OUTPUT : image deleted

答案 10 :(得分:0)

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

$containers = (docker container list -a).Split("`n") | % { [regex]::split($_, "\s+") | Select -Last 1 }
$containersToRemove = $containers | Where { ([regex]"^[a-z]+_[a-z]+$").IsMatch($_) }
foreach ($container in $containersToRemove) { docker container rm $container }

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

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

答案 11 :(得分:0)

有一个 bug in Windows,其中删除图像后不会回收磁盘空间。重新启动 Docker/Windows 不起作用。

如果您使用的是 Docker 桌面,following 对我有用。转到疑难解答 -> 清理/清除数据。这可以为您节省大量磁盘空间,甚至可能超出您的预期。

enter image description here

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

答案 12 :(得分:0)

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

回显“正在删除容器:” &&如果[-n“ $(docker container ls -aq)” ];然后docker container stop $(docker container ls -aq);码头工人 容器rm $(docker container ls -aq); fi;回声“正在删除图像:” &&如果[-n“ $(docker images -aq)”];然后docker rmi -f $(docker 图片-aq); fi;如果[-n“ $(docker volume ls -q)“];然后是docker volume rm $(docker volume ls -q); fi; echo “删除网络:” &&如果[-n“ $(docker network ls | awk'{print $ 1“” $ 2}'| grep -v'ID | bridge | host | none'| awk'{print $ 1}')“]; 然后docker network rm $(docker network ls | awk'{print $ 1“” $ 2}'| grep -v'ID | bridge | host | none'| awk'{print $ 1}'); fi;

答案 13 :(得分:0)

使用xargs

的另一种方法
docker image ls -q | xargs -I {} docker image rm -f {}

答案 14 :(得分:0)

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

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

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

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

答案 15 :(得分:0)

删除而不调用docker

rm -rf /var/lib/docker

不建议您是否可以正常运行docker,但是如果出于任何原因,这也会删除所有大文件。

答案 16 :(得分:0)

要删除所有图像:

docker rmi $(docker images -a -q)

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

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

docker system prune

当心,就像您使用的是docker swarm一样,并且您的本地计算机正在加入远程swarm(作为经理/工作人员)时,您的本地将是已部署的存储库。执行此操作将删除已部署的映像。

答案 17 :(得分:0)

您可以尝试这样:

docker system prune