1. ホーム
  2. docker

[解決済み] イメージ名でDockerコンテナを停止する - Ubuntu

2022-04-13 15:53:06

質問

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

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

解決方法を教えてください。

をご存知の方は image:tag 正確なコンテナバージョン

以下 8959号 が、良いきっかけになるのではないでしょうか。

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

以降 name コンテナ を使い、画像名ではなく、より新しい Docker 1.9 フィルタの祖先 で述べたように コウエキボックス 's 回答 .

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


のコメントにもあるように キリル これらのコンテナを削除するために。

<ブロッククオート

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

ということで、チェーニング stoprm が仕事をします。

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


画像名だけが分かっている場合( image:tag )

として アレックス・ヤンセン で指摘しています。 コメント :

祖先オプション はワイルドカードでのマッチングをサポートしていません。

アレックス 解決策を提案する がある場合、私がなんとか実行したのは 複数 コンテナは、同じイメージから実行されている(あなたの ~/.bashrc など)。

dsi() { docker stop $(docker ps -a | awk -v i="^$1.*" '{if($2~i){print$1}}'); }

そして、bash セッションで(ソースとして ~/.bashrc ):

dsi alpine

そして alpine.*:xxx が停止してしまいます。

意味:名前が 開始 alpine .

を微調整する必要があるかもしれません。 awk -v i="^$1.*" が必要な場合は ^$1.* をより正確に表現することができます。

もちろん、そこからです。

drmi() { docker rm $(dsi $1  | tr '\n' ' '); }

そして drmi alpine を停止します。 を削除し 任意の alpine:xxx のコンテナを使用します。