回答:
8959号に続いて、適切なスタートは次のとおりです。
docker ps -a -q --filter="name=<containerName>"
以来name
を指しコンテナではなく、画像の名前、あなたは、より新しい使用する必要がありますドッカー1.9フィルタの祖先で述べたように、koekieboxの答えを。
docker ps -a -q --filter ancestor=<image-name>
以下でkirilがコメントしたように、それらのコンテナを削除するには:
stop
コンテナも返します。
だから、チェーン化stop
とrm
仕事をします。
docker rm $(docker stop $(docker ps -a -q --filter ancestor=<image-name> --format="{{.ID}}"))
ps -a
ます。削除されたコンテナ...削除されましたが、もう存在していません。
以前の答えは私にはうまくいきませんでしたが、これはうまくいきました:
docker stop $(docker ps -q --filter ancestor=<image-name> )
コンテナー名を設定してコンテナーを開始できます。
docker run -d --name <container-name> <image-name>
同じイメージを使用して複数のコンテナーを起動することができるので、これはコンテナーを開始する良い方法です。次に、このコンテナ名を使用して停止、アタッチ...コンテナ:
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>
このコードは、イメージcentos:6を持つすべてのコンテナーを停止します。そのためのより簡単な解決策を見つけることができませんでした。
docker ps | grep centos:6 | awk '{print $1}' | xargs docker stop
またはさらに短い:
docker stop $(docker ps -a | grep centos:6 | awk '{print $1}')
コンテナーの実行を停止する2つの方法:
1. $docker stop container_ID
2. $docker kill container_ID
次のコマンドを使用して、実行中のコンテナを取得できます。
$docker ps
詳細については、次のリンクを参照してください。
$docker
ですか?または$
シェルプロンプトからですか?
イメージ名でDockerコンテナーを停止します。
imagename='mydockerimage'
docker stop $(docker ps | awk '{split($2,image,":"); print $1, image[1]}' | awk -v image=$imagename '$2 == image {print $1}')
イメージ名とタグでDockerコンテナーを停止します。
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}'
画像名が他の画像の他の列に表示される可能性があるため、問題があります
@VonCのすばらしい回答に加えて、.zshrcファイルに追加できるZSH関数を次に示します。
dockstop() {
docker rm $(docker stop $(docker ps -a -q --filter ancestor="$1" --format="{{.ID}}"))
}
次に、コマンドラインで実行するだけで、dockstop myImageName
myImageNameというイメージから開始されたすべてのコンテナーが停止して削除されます。
docker stop $(docker ps -a | grep "zalenium")
docker rm $(docker ps -a | grep "zalenium")
これで十分でしょう。
使用:docker container stop $(docker container ls -q --filter ancestor = 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$
簡単なAWK
アプローチを好む場合は、こちらが私の見解です。
docker rm -f $(docker ps | awk '{ if($2 == "<your image name>") { print $NF}}')
$(docker ps | awk '{ if($2 == "<your image name>") { print $NF}}')
-入力画像に基づいてDockerコンテナー名を印刷します
docker ps
-すべてのコンテナを一覧表示します
awk '{ if($2 == "<your-image-name>") { print $NF}}'
-の2番目に解析された列docker ps
は、イメージ名を示します。これをイメージ名と比較するとprint $NF
、コンテナー名が出力されます。
docker rm -f
コンテナを削除します
たとえば、ubuntuイメージの実行中のすべてのコンテナーを削除するには、次のように簡単に実行できます。
docker rm -f $(docker ps | awk '{ if($2 == "ubuntu:latest") { print $NF}}')
PS:イメージタグは同等のコンパレータであるため、AWKに忘れずに含めてください。
ps
次のコマンドを使用して、実行中のコンテナを確認できます。
docker ps -a
そこから、探しているコンテナIDとともにコンテナの名前が表示されます。についての詳細はこちらdocker ps
です。