Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker无法删除所有图像_Docker_Docker For Windows_Docker Desktop - Fatal编程技术网

Docker无法删除所有图像

Docker无法删除所有图像,docker,docker-for-windows,docker-desktop,Docker,Docker For Windows,Docker Desktop,我正在使用Windows的Docker桌面。当我尝试通过此命令删除所有图像时: docker rmi $(docker images -q) 我在命令提示符中收到此错误消息: 未知速记标记:q中的“q”) 我正在Windows10Pro上运行Docker。您使用的语法是unix特有的docker rmi$(命令)。这被调用,可能在windows中不起作用。在windows中,您应该使用windows命令 在powershell中,它将类似于: docker images -a -q | for

我正在使用Windows的Docker桌面。当我尝试通过此命令删除所有图像时:

docker rmi $(docker images -q)
我在命令提示符中收到此错误消息:

未知速记标记:q中的“q”)


我正在Windows10Pro上运行Docker。您使用的语法是unix特有的
docker rmi$(命令)
。这被调用,可能在windows中不起作用。

在windows中,您应该使用windows命令

在powershell中,它将类似于:

docker images -a -q | foreach-object { $i = $PSItem.ToString(); $cmd = "docker"; & $cmd "rmi" $i }
在哪里

docker images-a-q

获取所有图像(包括中间图像)的ID,以及

foreach对象{$i=$PSItem.ToString();$cmd=“docker”&$cmd“rmi”$i}


逐个删除它们

这是一种bashshell语法,适用于docker的Linux安装。要使其在Windows上工作,请尝试在Windows上安装bash shell并从该shell内部运行它。Windows命令提示符和powershell无法理解该语法。

语法特定于unix,因此您需要更改Windows命令,并需要在powershell或CMD中运行整个命令

移除容器:

powershell "docker ps -a -q | foreach-object { $i = $PSItem.ToString(); $cmd = 'docker'; & $cmd 'rm' '-f' $i }"
删除图像:

powershell "docker images -a -q | foreach-object { $i = $PSItem.ToString(); $cmd = 'docker'; & $cmd 'rmi' '-f' $i }"

使用或命令删除任何未使用或悬空的图像。

Windows 10 Powershell,这很容易

以下命令显示所有图像:

docker-a-q

输出如下:

PS C:\Users\UserName> docker images -a -q
86fa138dd93d
7c3a8b83a719
6636e7059d8d
然后,对每个图像执行以下操作:

docker rmi##########


其中#######是图像id

将其保存在docker-clear.bat中,并执行以清除容器、图像、未使用的数据和卷

@echo off
REM Clear all the containers
FOR /f "tokens=*" %%i IN ('docker ps -aq') DO docker stop %%i && docker rm %%i
REM Clear all the images
FOR /f "tokens=*" %%i IN ('docker images --format "{{.ID}}"') DO docker rmi %%i -f
REM Clear unused data
docker system prune -f
REM Clear all volumes
docker volume prune -f

您忘记了
-a
。要删除所有图像,请使用以下命令:

docker image prune -a -f
请记住,在删除所有图像之前,必须删除所有关联的容器

要删除所有正在使用的容器,请执行以下操作:

docker container prune -f

老问题,但如果您在Windows上,请从cmd切换到PowerShell。cmd误解了某些命令,并试图将-q附加到outter rmi命令。

它是哪个版本的docker?您可以通过运行
docker version
找到答案。还可以尝试将
-q
参数替换为
-quiet
。如果您想清除所有未使用的内容,
docker system prune
可能会派上用场。“foreach-object”不能识别为内部或外部命令、可操作程序或批处理文件。”从命令行您是从powershell运行的吗?对于problem@kakigadol,
docker image prune-a-f
在WIndows上就像一个符咒,但您需要首先停止
docker stop$(docker ps-a-q)
并删除
docker container prune-f
所有容器