1. ホーム
  2. bash

[解決済み] Docker: 実行中のDockerコンテナの停止と削除

2022-05-17 04:16:10

質問

私は、実行中のDockerコンテナを実用的に停止し、削除することを探しています。 これは、ビルドスクリプトのためです。

次のような例を考えてみましょう。 bash スクリプトの NAMES 列の下に表示されている docker コンテナ "rabbitmq" をどのように停止および削除すればよいでしょうか。

docker ps

CONTAINER ID        IMAGE             COMMAND                  CREATED             STATUS              PORTS                   NAMES
9909a5e2856f        rabbitmq-image   "/docker-entrypoint.s"   11 minutes ago      Up 11 minutes       0.0.0.0:5672->5672/tcp, rabbitmq
8990dd1fe503        redis-image      "/entrypoint.sh redis"   6 weeks ago         Up 4 days           0.0.0.0:32770->6379/tcp redis
etc 

次のコマンドはコンテナを削除し、私が求めていることを実行します。

docker stop rabbitmq && docker rm -f rabbitmq

しかし、私が知りたいのは、それをスクリプトに結合することです?以下のような感じでしょうか。

#!/bin/bash

if [ /*docker ps check some value */ ]; then
   docker stop rabbitmq && docker rm -f rabbitmq
fi

どのように解決するのですか?

お気づきのように docker stop と同様に docker rm は、コンテナが存在しないか、または実行されていない場合、失敗を示すステータスコードで終了します。この結果、ビルドは失敗します。

ビルドログのエラーメッセージに対処できるのであれば、シェルコマンドの失敗を防ぐために、この小さなトリックを行うことができます。

docker stop rabbitmq || true && docker rm rabbitmq || true

dockerコマンドのいずれかに失敗した場合。 true が呼び出され、常に成功を示すステータスコードで終了します。