Остановка Docker-контейнеров по имени изображения - Ubuntu
В Ubuntu 14.04 (Trusty Tahr) я ищу способ остановить работающий контейнер, и единственная информация, которую я имею, - это имя образа, которое использовалось в команде запуска Docker.
Есть ли команда, чтобы найти все соответствующие запущенные контейнеры, которые соответствуют этому имени изображения, и остановить их?
Ответы
Ответ 1
После выпуска 8959 хорошим началом будет:
docker ps -a -q --filter="name=<containerName>"
Поскольку name
относится к контейнеру, а не к имени изображения, вам нужно будет использовать более поздний предок фильтра Docker 1.9, упомянутый в ответе koekiebox.
docker ps -a -q --filter ancestor=<image-name>
Как прокомментировал Кирилл ниже, чтобы удалить эти контейнеры:
stop
возвращает контейнеры.
Так что цепочка stop
и rm
сделают свою работу:
docker rm $(docker stop $(docker ps -a -q --filter ancestor=<image-name> --format="{{.ID}}"))
Ответ 2
Предыдущие ответы у меня не сработали, но это сработало:
docker stop $(docker ps -q --filter ancestor=<image-name> )
Ответ 3
Вы можете запустить контейнер, задав имя контейнера:
docker run -d --name <container-name> <image-name>
Одно и то же изображение можно использовать для раскрутки нескольких контейнеров, так что это хороший способ запустить контейнер. Затем вы можете использовать это имя контейнера для остановки, прикрепления... контейнера:
docker exec -it <container-name> bash
docker stop <container-name>
docker rm <container-name>
Ответ 4
Этот код остановит все контейнеры с изображением centos: 6. Я не мог найти более простое решение для этого.
docker ps | grep centos:6 | awk '{print $1}' | xargs docker stop
Или даже короче
docker stop $(docker ps -a | grep centos:6 | awk '{print $1}')
Ответ 5
Два способа остановить запуск контейнера:
1. $docker stop container_ID
2. $docker kill container_ID
Вы можете запустить запущенные контейнеры, используя следующую команду:
$docker ps
Следующие ссылки для получения дополнительной информации:
Ответ 6
Остановить док-контейнер по имени изображения:
imagename='mydockerimage'
docker stop $(docker ps | awk '{split($2,image,":"); print $1, image[1]}' | awk -v image=$imagename '$2 == image {print $1}')
Остановите контейнер докера по имени изображения и тегу:
imagename='mydockerimage:latest'
docker stop $(docker ps | awk -v image=$imagename '$2 == image {print $1}')
Если вы создали изображение, вы можете добавить к нему метку и отфильтровать запущенные контейнеры по метке
docker ps -q --filter "label=image=$image"
Ненадежные методы
docker ps -a -q --filter ancestor=<image-name>
не всегда работает
docker ps -a -q --filter="name=<containerName>"
фильтры по имени контейнера, а не по имени изображения
docker ps | grep <image-name> | awk '{print $1}'
проблематично, так как имя изображения может появиться в других столбцах для других изображений
Ответ 7
Я сделал /usr/local/bin/docker.stop
, который принимает имя изображения (предполагается, что у вас только один запуск).
docker stop $(docker ps -q -f "name=$1")
Ответ 8
В моем случае --filter ancestor=<image-name>
не работал, поэтому следующая команда очистила контейнер Docker для меня:
docker rm $(docker stop $(docker ps -a -q --filter "name=container_name_here" --format="{{.ID}}"))
Ответ 9
Для Docker версии 18.09.0 я обнаружил, что флаг формата не понадобится
docker rm $(docker stop $(docker ps -a -q -f ancestor=<image-name>))
Ответ 10
docker stop $(docker ps -a | grep "zalenium")
docker rm $(docker ps -a | grep "zalenium")
Этого должно быть достаточно.
Ответ 11
Я пытался обернуть свои команды Docker в задачи gulp и понял, что вы можете сделать следующее:
docker stop container-name
docker rm container-name
Это может не работать для сценариев, в которых у вас есть несколько контейнеров с одним и тем же именем (если это возможно), но для моего варианта использования это было идеально.
Ответ 12
список всех контейнеров с информацией и идентификатором
docker ps
docker stop CONTAINER ID
Ответ 13
Вы можете использовать команду ps
чтобы взглянуть на работающие контейнеры:
docker ps -a
Оттуда вы должны увидеть название вашего контейнера вместе с идентификатором контейнера, который вы ищете. Здесь больше информации о docker ps
.