Остановите все контейнеры докеров в 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
чтобы использовать фильтр позже, когда вы хотите остановить и удалить контейнеры.