Ubuntu 14.04'te (Trusty Tahr) Çalışan bir kapsayıcıyı durdurmanın bir yolunu arıyorum ve sahip olduğum tek bilgi Docker çalıştırma komutunda kullanılan görüntü adı.
Bu görüntü adıyla eşleşen tüm çalışan kapsayıcıları bulma ve durdurma komutu var mı?
Ubuntu 14.04'te (Trusty Tahr) Çalışan bir kapsayıcıyı durdurmanın bir yolunu arıyorum ve sahip olduğum tek bilgi Docker çalıştırma komutunda kullanılan görüntü adı.
Bu görüntü adıyla eşleşen tüm çalışan kapsayıcıları bulma ve durdurma komutu var mı?
Yanıtlar:
Aşağıdaki sorunu 8959 , iyi bir başlangıç olacaktır:
docker ps -a -q --filter="name=<containerName>"
Yana nameatıfta konteyner değil görüntü adı, daha yeni kullanmanız gerekir Docker 1.9 filtre atası belirtilen, koekiebox 'ın cevabı .
docker ps -a -q --filter ancestor=<image-name>
Aşağıda kiril tarafından yorumlandığı gibi , bu kapları kaldırmak için:
stopkapları da döndürür.
Yani zincirleme stopve rmişi yapacak:
docker rm $(docker stop $(docker ps -a -q --filter ancestor=<image-name> --format="{{.ID}}"))
ps -a. Kaldırılan kaplar ... iyi onlar kaldırılır, onlar yok artık.
Önceki cevaplar benim için işe yaramadı, ancak bu işe yaradı:
docker stop $(docker ps -q --filter ancestor=<image-name> )
Kapsayıcı adını bir kapsayıcı adı ayarlayarak başlatabilirsiniz:
docker run -d --name <container-name> <image-name>
Aynı görüntü birden fazla kabı döndürmek için kullanılabilir, bu yüzden bir kabı başlatmanın iyi bir yoludur. Sonra kapsayıcıyı durdurmak, iliştirmek ... için bu kapsayıcı adını kullanabilirsiniz:
docker exec -it <container-name> bash
docker stop <container-name>
docker rm <container-name>
sudo docker build . -t <img-name> && sudo docker stop <container-name> || true && sudo docker run -d --rm --name <container-name> <img-name>
Bu kod , görüntü centosu olan tüm kapları durduracaktır: 6 . Bunun için daha kolay bir çözüm bulamadım.
docker ps | grep centos:6 | awk '{print $1}' | xargs docker stop
Veya daha da kısa:
docker stop $(docker ps -a | grep centos:6 | awk '{print $1}')
Bir konteyner çalıştırmayı durdurmanın iki yolu:
1. $docker stop container_ID
2. $docker kill container_ID
Aşağıdaki komutu kullanarak kapsayıcıları çalıştırabilirsiniz:
$docker ps
Daha fazla bilgi için aşağıdaki bağlantılar:
$dockermı? Yoksa $kabuk isteminden mi?
Docker kapsayıcısını resim adına göre durdur:
imagename='mydockerimage'
docker stop $(docker ps | awk '{split($2,image,":"); print $1, image[1]}' | awk -v image=$imagename '$2 == image {print $1}')
Docker kapsayıcısını resim adı ve etikete göre durdurun:
imagename='mydockerimage:latest'
docker stop $(docker ps | awk -v image=$imagename '$2 == image {print $1}')
Görüntüyü oluşturduysanız, ona bir etiket ekleyebilir ve çalışan kapları etikete göre filtreleyebilirsiniz
docker ps -q --filter "label=image=$image"
Güvenilmez yöntemler
docker ps -a -q --filter ancestor=<image-name>
docker ps -a -q --filter="name=<containerName>"
resim adına göre değil, konteyner adına göre filtreler
docker ps | grep <image-name> | awk '{print $1}'
resim adı diğer resimler için diğer sütunlarda görünebileceğinden sorunludur
Docker komutlarımı yutkunma görevlerine sarmaya çalışıyordum ve aşağıdakileri yapabileceğinizi fark ettim:
docker stop container-name
docker rm container-name
Bu, aynı adda birden fazla kapsayıcıya sahip olduğunuz senaryolar (bu mümkün ise) işe yaramayabilir, ancak kullanım durumum için mükemmeldi.
bilgi ve kimliğe sahip tüm kapsayıcıları listele
docker ps
docker stop CONTAINER ID
@VonC mükemmel yanıtın üstüne ekleyerek, işte .zshrc dosyanıza ekleyebileceğiniz bir ZSH işlevi:
dockstop() {
docker rm $(docker stop $(docker ps -a -q --filter ancestor="$1" --format="{{.ID}}"))
}
Daha sonra komut satırınızda, bunu yapın dockstop myImageNameve myImageName adlı bir görüntüden başlatılan tüm kapları durduracak ve kaldıracaktır.
docker stop $(docker ps -a | grep "zalenium")
docker rm $(docker ps -a | grep "zalenium")
Bu yeterli olmalı.
kullanın: docker konteyner stop $ (docker konteyner ls -q --filter acestor = mongo)
(base) :~ user$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d394144acf3a mongo "docker-entrypoint.s…" 15 seconds ago Up 14 seconds 0.0.0.0:27017->27017/tcp magical_nobel
(base) :~ user$ docker container stop $(docker container ls -q --filter ancestor=mongo)
d394144acf3a
(base) :~ user$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
(base) :~ user$
Basit bir AWKyaklaşımı tercih etmek istiyorsanız , işte benim isteğim:
docker rm -f $(docker ps | awk '{ if($2 == "<your image name>") { print $NF}}')
$(docker ps | awk '{ if($2 == "<your image name>") { print $NF}}') - docker kapsayıcı adlarını giriş görüntüsüne göre yazdırır
docker ps - tüm kapları listele
awk '{ if($2 == "<your-image-name>") { print $NF}}'- İkinci ayrıştırılmış sütunu docker psresim adını verir. print $NFKapsayıcı adını yazdıran görüntü adınızla karşılaştırılır .
docker rm -f kapları çıkarır
Örneğin, ubuntu görüntüsünün tüm çalışan kaplarını kaldırmak, aşağıdaki gibi basit bir şekilde yapılabilir:
docker rm -f $(docker ps | awk '{ if($2 == "ubuntu:latest") { print $NF}}')
Not: Eşit bir karşılaştırıcı olduğu için resim etiketini AWK'ye eklemeyi unutmayın.
psÇalışan kapsayıcılara bir göz atmak için komutu kullanabilirsiniz :
docker ps -a
Buradan, kapsayıcınızın adını ve aradığınız kapsayıcı kimliğini görmeniz gerekir. İşte hakkında daha fazla bilgidocker ps .