1. ホーム
  2. bash

[解決済み] 指定した名前のDockerコンテナが存在しない場合のみ、Bashコマンドを実行するにはどうすればよいですか?

2022-05-13 18:08:44

質問

Jenkins マシンで、指定した名前の docker コンテナを、それがまだ存在しない場合のみ作成したいと思います (シェルスクリプトで)。コンテナを作成するコマンドを関係なく実行し、失敗があった場合は無視しようと思いましたが、これは私のjenkinsジョブが失敗する原因になります。

したがって、私はbashを使用してdockerコンテナが存在するかどうかを確認する方法を知りたいです。

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

実行中のコンテナが存在しないかどうかを確認するには、grep で <name> をgrepして、後でこのように起動させることができます。

[ ! "$(docker ps -a | grep <name>)" ] && docker run -d --name <name> <image>

より良い

を利用する。 https://docs.docker.com/engine/reference/commandline/ps/ を利用し、終了したコンテナがブロックしているかどうかを確認することで、コンテナを実行する前にまずそれを削除することができます。

if [ ! "$(docker ps -q -f name=<name>)" ]; then
    if [ "$(docker ps -aq -f status=exited -f name=<name>)" ]; then
        # cleanup
        docker rm <name>
    fi
    # run your container
    docker run -d --name <name> my-docker-image
fi