我是使用 Docker Desktop for Windows。当我尝试使用以下命令删除所有镜像时:
docker rmi $(docker images -q)
我在命令提示符中遇到了以下错误信息:
-q) 中未知的速记标志:'q'
我正在运行 Windows 10 Pro 上的Docker。
我是使用 Docker Desktop for Windows。当我尝试使用以下命令删除所有镜像时:
docker rmi $(docker images -q)
我在命令提示符中遇到了以下错误信息:
-q) 中未知的速记标志:'q'
我正在运行 Windows 10 Pro 上的Docker。
语法是针对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系统,请从cmd切换到PowerShell。因为cmd会误解一些命令,并试图将“-q”附加到外部rmi命令。
原始答案:Original Answer
这是一个在Linux安装的Docker上运行的Bash Shell语法。要在Windows上运行它,请尝试在Windows上安装Bash Shell并从该Shell内部运行它。Windows命令提示符和PowerShell将无法理解该语法。
你忘记了 -a
。要删除所有的图片,请使用以下命令:
docker image prune -a -f
请记住,在删除所有图像之前,您必须先删除所有相关容器。
要删除所有正在使用的容器:
docker container prune -f
docker image prune -a -f
在 Windows 上运行得非常好,但您需要首先停止 docker stop $(docker ps -a -q)
并删除 docker container prune -f
所有容器。 - veben将此内容保存在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
Windows 10 Powershell,非常容易。
以下命令显示所有镜像:
docker -a -q
输出如下:
PS C:\Users\UserName> docker images -a -q
86fa138dd93d
7c3a8b83a719
6636e7059d8d
然后,对于每个图像执行以下操作:
docker rmi ##########
其中#####是图像ID
在Windows中,你应该使用Windows命令。
在PowerShell中,它会是类似这样的:
docker images -a -q | foreach-object { $i = $PSItem.ToString(); $cmd = "docker"; & $cmd "rmi" $i }
在哪里执行以下命令:
docker images -a -q
获取所有镜像的ID(包括中间层),然后
foreach-object { $i = $PSItem.ToString(); $cmd = "docker"; & $cmd "rmi" $i }
逐个删除它们。
docker system prune
可能会很有用。 - eiichi