В Ubuntu 14.04 (Trusty Tahr) я ищу способ остановить работающий контейнер, и единственная информация, которую я имею, - это имя образа, которое использовалось в команде запуска Docker.
Есть ли команда, чтобы найти все соответствующие запущенные контейнеры, которые соответствуют этому имени изображения, и остановить их?
docker
ubuntu
docker-image
Коллин Эстес
источник
источник
ps -a
. Удаленные контейнеры ... хорошо, они удалены, они больше не существуют.Предыдущие ответы у меня не сработали, но это сработало:
источник
Вы можете запустить контейнер, задав имя контейнера:
Одно и то же изображение можно использовать для раскрутки нескольких контейнеров, так что это хороший способ запустить контейнер. Затем вы можете использовать это имя контейнера для остановки, прикрепления ... контейнера:
источник
sudo docker build . -t <img-name> && sudo docker stop <container-name> || true && sudo docker run -d --rm --name <container-name> <img-name>
Этот код остановит все контейнеры с изображением centos: 6 . Я не мог найти более простое решение для этого.
Или даже короче
источник
Два способа остановить запуск контейнера:
Вы можете запустить запущенные контейнеры, используя следующую команду:
Следующие ссылки для получения дополнительной информации:
источник
$docker
? Или это$
из командной строки?Для Docker версии 18.09.0 я обнаружил, что флаг формата не понадобится
источник
Остановить док-контейнер по имени изображения:
Остановить докер контейнер по имени изображения и тегу:
Если вы создали изображение, вы можете добавить к нему метку и отфильтровать запущенные контейнеры по метке
Ненадежные методы
не всегда работает
фильтры по имени контейнера, а не по имени изображения
проблематично, так как имя изображения может появляться в других столбцах для других изображений
источник
Я сделал,
/usr/local/bin/docker.stop
что принимает в имени изображения (предполагается, что у вас только один работает).источник
Я пытался обернуть мои команды Docker в задачи gulp и понял, что вы можете сделать следующее:
Это может не работать для сценариев, когда у вас есть несколько контейнеров с одним и тем же именем (если это возможно), но для моего варианта использования это было идеально.
источник
В моем случае
--filter ancestor=<image-name>
не работало, поэтому следующая команда очистила контейнер Docker для меня:источник
список всех контейнеров с информацией и идентификатором
источник
В добавление к превосходному ответу @VonC, вот функция ZSH, которую вы можете добавить в свой файл .zshrc:
Затем в командной строке просто сделайте,
dockstop myImageName
и он остановит и удалит все контейнеры, которые были запущены из образа с именем myImageName.источник
Этого должно быть достаточно.
источник
использование: остановка контейнера Docker $ (контейнер докера ls -q --filter ancestor = mongo)
источник
Если вы хотите предпочесть простой
AWK
подход, вот мое мнение:$(docker ps | awk '{ if($2 == "<your image name>") { print $NF}}')
- печатает имена контейнеров докеров на основе входного изображенияdocker ps
- перечислить все контейнерыawk '{ if($2 == "<your-image-name>") { print $NF}}'
- Второй проанализированный столбецdocker ps
дает имя изображения. Сравнение его с именем вашего изображения выполнит то,print $NF
что напечатает имя контейнера.docker rm -f
удаляет контейнерыНапример, удалить все запущенные контейнеры образа Ubuntu, можно просто:
PS: не забудьте включить тег изображения в AWK, так как это равный компаратор.
источник
Вы можете использовать
ps
команду, чтобы взглянуть на работающие контейнеры:Оттуда вы должны увидеть название вашего контейнера вместе с идентификатором контейнера, который вы ищете. Вот больше информации о
docker ps
.источник