Docker无法删除所有图像

时间:2017-02-15 10:17:12

标签: docker docker-for-windows docker-windows docker-desktop docker-on-windows

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

docker rmi $(docker images -q)

我在命令提示符下收到此错误消息:

  

未知的速记标志:-q中的'q'

我在Window 10 Pro上运行 Docker

9 个答案:

答案 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 -adocker 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命令。