Остановите все контейнеры докеров в Windows

Как я могу остановить все контейнеры докеров, запущенные в Windows?

docker stop - только для 1 контейнера.

Любая команда/сценарий, чтобы остановить все контейнеры?

Ответ 1

Вы можете создать пакетный файл (.bat или .cmd) с этими командами:

@ECHO OFF
FOR /f "tokens=*" %%i IN ('docker ps -q') DO docker stop %%i

Если вы хотите запустить эту команду прямо в консоли, замените %%i на %i, например:

FOR /f "tokens=*" %i IN ('docker ps -q') DO docker stop %i

В Git Bash или Bash для Windows вы можете запустить:

docker stop $(docker ps -q)

Ответ 2

Для тех, кто заинтересован, это можно сделать в Powershell с помощью

docker ps -q | % { docker stop $_ }

Ответ 3

Мои два цента.

Если вы хотите, чтобы они были отфильтрованы по некоторым критериям

docker ps -a -q --filter "name=container_name" --format="{{.ID}}" | ForEach-Object -Process {docker stop $_ } 

или если вы хотите остановить и удалить их все вместе

docker ps -a -q --filter "name=container_name" --format="{{.ID}}" | ForEach-Object -Process {docker rm $_ -f}

Используя pipe и foreach, я избегаю возвращаемой ошибки, когда на конкретном компьютере нет контейнеров такого типа, потому что для docker stop или docker rm требуется хотя бы один аргумент.

Этот скрипт используется с комбинацией

docker container run image_tag --name=container_name

чтобы использовать фильтр позже, когда вы хотите остановить и удалить контейнеры.