我正在使用 Docker Desktop for Windows 。当我尝试通过此命令删除所有图像时:
docker rmi $(docker images -q)
我在命令提示符下收到此错误消息:
未知的速记标志:-q中的'q'
我在Window 10 Pro上运行 Docker
答案 0 :(得分:1)
语法是特定于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 }"
答案 1 :(得分:1)
Windows 10 Powershell,很容易。
以下命令显示所有图像:
docker -a -q
输出:
PS C:\Users\UserName> docker images -a -q
86fa138dd93d
7c3a8b83a719
6636e7059d8d
然后,为每个图像做
docker rmi ##########
其中#####是图片ID
答案 2 :(得分:0)
查看类似的issue。您使用的语法是特定于unix的docker rmi $(command)
。这称为command substitution,可能无法在Windows中使用。
答案 3 :(得分:0)
在Windows中,你应该使用windows命令。
在powershell中,它将类似于:
@ApplicationPath("/api")
public class MyApplication extends ResourceConfig {
public MyApplication() {
register(JacksonFeature.class);
}
}
其中
docker images -a -q
获取所有图像的ID(包括中间图像)和
foreach-object {$ i = $ PSItem.ToString(); $ cmd =“docker”; &安培; $ cmd“rmi”$ i}
逐个删除
答案 4 :(得分:0)
这是一个bash shell语法,适用于Linux安装的docker。要使其在Windows上运行,请尝试在Windows上安装bash shell并从该shell中运行它。 Windows命令提示符和powershell不会理解该语法。
答案 5 :(得分:0)
使用docker system prune -a或docker image prune -a命令删除任何未使用或悬空的图像。
答案 6 :(得分:0)
将其保存在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
答案 7 :(得分:0)
您忘记了-a
。要删除所有图像,请使用以下方法:
docker rmi -f $(docker images -a -q)
请记住,在删除所有图像之前,必须先删除所有关联的容器。
要删除所有容器,包括其卷,请使用:
docker rm -vf $(docker ps -a -q)
如果要连续删除所有内容(未使用的容器,卷,网络和图像):
docker system prune -a --volumes
答案 8 :(得分:0)
旧问题,但是如果您使用Windows,请从cmd切换到PowerShell。 cmd会误解某些命令,并尝试将-q附加到outter rmi命令。