W systemie Ubuntu 14.04 (Trusty Tahr) szukam sposobu na zatrzymanie działającego kontenera, a jedyne informacje, które mam, to nazwa obrazu użyta w poleceniu uruchamiania Dockera.
Czy istnieje polecenie, aby znaleźć wszystkie zgodne uruchomione kontenery, które pasują do tej nazwy obrazu, i zatrzymać je?
docker
ubuntu
docker-image
Collin Estes
źródło
źródło
ps -a
. Usunięte pojemniki ... no cóż, są usunięte, już nie istnieją.Poprzednie odpowiedzi nie działały dla mnie, ale to:
źródło
Możesz rozpocząć kontener od ustawienia nazwy kontenera:
Ten sam obraz może zostać użyty do uruchomienia wielu kontenerów, więc jest to dobry sposób na rozpoczęcie kontenera. Następnie możesz użyć tej nazwy kontenera, aby zatrzymać, dołączyć ... kontener:
źródło
sudo docker build . -t <img-name> && sudo docker stop <container-name> || true && sudo docker run -d --rm --name <container-name> <img-name>
Ten kod zatrzyma wszystkie kontenery z obrazem centos: 6 . Nie mogłem znaleźć na to prostszego rozwiązania.
Albo jeszcze krócej:
źródło
Dwa sposoby na zatrzymanie działania kontenera:
Możesz uzyskać uruchomione kontenery za pomocą następującego polecenia:
Poniższe linki zawierają więcej informacji:
źródło
$docker
? Czy jest$
z zachęty powłoki?W przypadku Dockera w wersji 18.09.0 stwierdziłem, że flaga formatu nie będzie potrzebna
źródło
Zatrzymaj kontener Docker według nazwy obrazu:
Zatrzymaj kontener Dockera według nazwy i tagu obrazu:
Jeśli utworzyłeś obraz, możesz dodać do niego etykietę i filtrować uruchomione kontenery według etykiety
Zawodne metody
nie zawsze działa
filtruje według nazwy kontenera, a nie nazwy obrazu
jest problematyczne, ponieważ nazwa obrazu może pojawić się w innych kolumnach dla innych obrazów
źródło
Zrobiłem,
/usr/local/bin/docker.stop
który przyjmuje nazwę obrazu (zakładając, że masz tylko jeden uruchomiony).źródło
Próbowałem zawinąć moje polecenia Dockera w zadania typu łyk i zdałem sobie sprawę, że możesz wykonać następujące czynności:
To może nie działać w scenariuszach, w których masz wiele kontenerów o tej samej nazwie (jeśli to możliwe), ale w moim przypadku było idealne.
źródło
W moim przypadku
--filter ancestor=<image-name>
nie działało, więc następujące polecenie wyczyściło kontener Docker:źródło
lista wszystkich kontenerów z informacjami i identyfikatorem
źródło
Dodając do doskonałej odpowiedzi @VonC, oto funkcja ZSH, którą możesz dodać do pliku .zshrc:
Następnie w wierszu poleceń po prostu zrób,
dockstop myImageName
a zatrzyma i usunie wszystkie kontenery, które zostały uruchomione z obrazu o nazwie myImageName.źródło
To powinno wystarczyć.
źródło
użyj: docker container stop $ (docker container ls -q --filter ancestor = mongo)
źródło
Jeśli chcesz preferować proste
AWK
podejście, oto moje podejście:$(docker ps | awk '{ if($2 == "<your image name>") { print $NF}}')
- drukuje nazwy kontenerów docker na podstawie obrazu wejściowegodocker ps
- lista wszystkich kontenerówawk '{ if($2 == "<your-image-name>") { print $NF}}'
- Druga kolumna przeanalizowanadocker ps
zawiera nazwę obrazu. Porównanie go z nazwą obrazu spowodujeprint $NF
wydrukowanie nazwy kontenera.docker rm -f
usuwa pojemnikiNa przykład usunięcie wszystkich uruchomionych kontenerów obrazu Ubuntu można wykonać w następujący sposób:
PS: Pamiętaj, aby dołączyć tag obrazu do AWK, ponieważ jest to równy komparator.
źródło
Możesz użyć
ps
polecenia, aby przyjrzeć się uruchomionym kontenerom:Stamtąd powinieneś zobaczyć nazwę swojego kontenera wraz z identyfikatorem, którego szukasz. Oto więcej informacji na temat
docker ps
.źródło