実行中のDockerコンテナを停止して削除する 質問する

実行中のDockerコンテナを停止して削除する 質問する

実行中の 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

ベストアンサー1

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

ビルド ログ内のエラー メッセージに対処できる場合は、次の小さなトリックを実行して、シェル コマンドが失敗するのを防ぐことができます。

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

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

おすすめ記事