Jenkinsマシンでは、(シェルスクリプト内に)存在しない場合にのみ、指定された名前のドッカーコンテナを作成したいと思います。私はコンテナを作成するコマンドを実行するかもしれないと思っていましたが、それがあれば無視しますが、これは私のジェンキンの仕事を失敗させます。dockerコンテナが存在しない場合にbashコマンドを実行
したがって、ドッカーコンテナが存在するかどうか、またはbashを使用しているかどうかを確認できます。
Jenkinsマシンでは、(シェルスクリプト内に)存在しない場合にのみ、指定された名前のドッカーコンテナを作成したいと思います。私はコンテナを作成するコマンドを実行するかもしれないと思っていましたが、それがあれば無視しますが、これは私のジェンキンの仕事を失敗させます。dockerコンテナが存在しない場合にbashコマンドを実行
したがって、ドッカーコンテナが存在するかどうか、またはbashを使用しているかどうかを確認できます。
あなたは<name>
のためにgrepをすることで、実行中のコンテナの非存在を確認し、このように後でそれを起動することができますhttps://docs.docker.com/engine/reference/commandline/ps/を利用し、かどうかを確認
:
[ ! "$(docker ps -a | grep <name>)" ] && docker run -d --name <name> <image>
ベターあなたは、コンテナを実行する前に、まずそれを削除することができますので、コンテナブロックを終了しました:
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
あなたがfilter
とを使用することができますgrep
のようなUnixユーティリティで配管を避けるためにdocker ps
コマンドのオプション、awk
など
name='nginx'
[[ $(docker ps -f "name=$name" --format '{{.Names}}') == $name ]] ||
echo "start your nginx docker here"
ジャスト^ /と$と接尾辞と名前を付けます。私はドッキングウィンドウコンテナ以来
docker container inspect <container-name> || docker run...
$に設定されますコールを検査するとし
CONTAINER_NAME='mycontainername'
CID=$(docker ps -q -f status=running -f name=^/${CONTAINER_NAME}$)
if [ ! "${CID}" ]; then
echo "Container doesn't exist"
fi
unset CID
:正規表現であると思われますか?コンテナが存在しない(検査できない)場合は1に、存在する場合は0に設定します(これは停止したコンテナを考慮します)。したがって、コンテナが期待どおりに存在しない場合に実行コマンドが呼び出されます。
私は 'docker container inspect
私は、ドッキングウィンドウコンテナが存在するかどうかを決定するために、次のコードを使用します。
CONTAINER_NAME='my_docker_container'
# Checking if docker container with $CONTAINER_NAME name exists.
COUNT=$(docker ps -a | grep "$CONTAINER_NAME" | wc -l)
if (($COUNT > 0)); then
echo 'container exists'
fi
右 - あなたは '-a'または終了した容器を実行しようとは失敗しますする必要があります。 – ldg
名前が似ている2つのコンテナがある場合、この応答は機能しません。たとえば、cool.project(container 1)とdashboard.cool.project(container 2) –
@MaximTkachこれは、docker psコマンドでコンテナの名前を完全修飾するという、2番目の方法を使用する方が良い理由です。しかし、grepコマンドに正規表現を導入して、名前の前後にある空白を探すこともできます。このテストは意図的に読者に委ねられています。 – ferdy