web-dev-qa-db-ja.com

イメージ名によるDockerコンテナの停止 - Ubuntu

Ubuntu 14.04(Trusty Tahr)では、実行中のコンテナを停止する方法を探しています。唯一の情報はDockerの実行コマンドで使用されたイメージ名です。

そのイメージ名と一致する実行中のすべてのコンテナーを見つけてそれらを停止するコマンドはありますか?

117
Collin Estes

issue 8959 に従うと、良いスタートは次のようになります。

docker ps -a -q --filter="name=<containerName>"

nameはイメージ名ではなくコンテナを参照するので、もっと新しい Docker 1.9 filter ancestor を使う必要があります。 koekiebox 's answer に記載されています。

docker ps -a -q  --filter ancestor=<image-name>

下記のように kiril でコメントされているので、それらのコンテナを削除します。

stopはコンテナーも返します。

stoprmをチェーニングすると、仕事ができます。

docker rm $(docker stop $(docker ps -a -q --filter ancestor=<image-name> --format="{{.ID}}"))
151
VonC

前の答えは私にはうまくいきませんでした、しかしこれはしました:

docker stop $(docker ps -q --filter ancestor=<image-name> )
51
Koekiebox

コンテナ名を設定してコンテナを起動することができます。

docker run -d --name <container-name> <image-name>

同じイメージを使用して複数のコンテナーを回転させることができるので、これはコンテナーを開始するための良い方法です。それから、このcontainer-nameを使用して、コンテナを停止、接続...することができます。

docker exec -it <container-name> bash
docker stop <container-name>
docker rm <container-name>
34
Javier Sánchez

このコードはallイメージを含むコンテナcentos:6を停止します。もっと簡単な解決策は見つかりませんでした。

docker ps | grep centos:6 | awk '{print $1}' | xargs docker stop

あるいはもっと短く:

docker stop $(docker ps -a | grep centos:6 | awk '{print $1}')
13
ArgonQQ

コンテナの実行を停止する2つの方法

1. $docker stop container_ID

2. $docker kill container_ID

次のコマンドを使ってコンテナを動かすことができます。

$docker ps

詳細については、以下のリンクをクリックしてください。

8

情報とIDを持つすべてのコンテナをリストします

docker ps

docker stop CONTAINER ID
3
Muhammed Moussa

イメージ名で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}')

画像を作成した場合は、その画像に label を追加して、ラベルで実行中のコンテナをフィルタ処理できます

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}'

画像名が他の画像の他の列に現れるかもしれないので、問題があります

1
Jay

Dockerバージョン18.09.0の場合、フォーマットフラグは必要ないとわかりました

docker rm $(docker stop $(docker ps -a -q -f ancestor=<image-name>))
1
ankitj

私の場合は--filter ancestor=<image-name>が機能していなかったので、次のコマンドでDockerコンテナをクリーンアップしました。

docker rm $(docker stop $(docker ps -a -q --filter "name=container_name_here" --format="{{.ID}}"))
1
Alexey
docker stop $(docker ps -a | grep "zalenium")
docker rm $(docker ps -a | grep "zalenium")

これで十分でしょう。

イメージ名を取り込む/usr/local/bin/docker.stopを作成しました(実行しているのが1つだけの場合)。

docker stop $(docker ps -q -f "name=$1")
1
AmanicA

私のDockerコマンドをgulpタスクでラップしようとしていましたが、次のことができることに気付きました。

docker stop container-name
docker rm container-name

これは同じ名前のコンテナが複数あるシナリオではうまくいかないかもしれませんが(可能であれば)、私のユースケースでは完璧でした。

0
Matt Gaunt