0

Я использую докер для окон. Когда я пытаюсь удалить все мои образы с помощью этой команды:Docker не может удалить все изображения

docker rmi $(docker images -q) 

Я получил сообщение об ошибке в командной строке:

unknown shorthand flag: 'q' in -q) 

Я бегу докер в окне 10 про

+0

какая версия докера это? вы можете узнать, выполнив 'docker version'. Также попробуйте заменить параметр '-q' на' --quiet'. –

ответ

0

Look при аналогичных issue. Используемый вами синтаксис является специфичным для UNIX docker rmi $(command). Это называется command substitution и, вероятно, не будет работать в окнах.

0

В окнах вы должны использовать команду windows.

В PowerShell, это будет что-то вроде:

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

Где

Докер изображения -a -q

получает идентификаторы всех изображений (включая промежуточные) , и

foreach-object {$ i = $ PSItem.ToString(); $ cmd = "докер"; & $ ЦМД «RMI» $ я}

удалить их один-на-один

+0

«foreach-object» не распознается как внутренняя или внешняя команда, операционная программа или командный файл. »Из командной строки – Lee

+0

у вас работает от powershell? – evgenyl

0

Это Баш синтаксис оболочки, которая будет работать на Linux устанавливает в докер. Чтобы заставить его работать в Windows, попробуйте установить оболочку bash на Windows и запустить ее изнутри этой оболочки. Командная строка Windows и powershell не смогут понять этот синтаксис.

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 }" 
Смежные вопросы