2016-07-25 18 views
23

Jenkinsマシンでは、(シェルスクリプト内に)存在しない場合にのみ、指定された名前のドッカーコンテナを作成したいと思います。私はコンテナを作成するコマンドを実行するかもしれないと思っていましたが、それがあれば無視しますが、これは私のジェンキンの仕事を失敗させます。dockerコンテナが存在しない場合にbashコマンドを実行

したがって、ドッカーコンテナが存在するかどうか、またはbashを使用しているかどうかを確認できます。

答えて

42

あなたは<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 
+2

右 - あなたは '-a'または終了した容器を実行しようとは失敗しますする必要があります。 – ldg

+3

名前が似ている2つのコンテナがある場合、この応答は機能しません。たとえば、cool.project(container 1)とdashboard.cool.project(container 2) –

+1

@MaximTkachこれは、docker psコマンドでコンテナの名前を完全修飾するという、2番目の方法を使用する方が良い理由です。しかし、grepコマンドに正規表現を導入して、名前の前後にある空白を探すこともできます。このテストは意図的に読者に委ねられています。 – ferdy

8

あなたがfilterとを使用することができますgrepのようなUnixユーティリティで配管を避けるためにdocker psコマンドのオプション、awkなど

name='nginx' 

[[ $(docker ps -f "name=$name" --format '{{.Names}}') == $name ]] || 
echo "start your nginx docker here" 
3

ジャスト^ /と$と接尾辞と名前を付けます。私はドッキングウィンドウコンテナ以来

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 
6

:正規表現であると思われますか?コンテナが存在しない(検査できない)場合は1に、存在する場合は0に設定します(これは停止したコンテナを考慮します)。したがって、コンテナが期待どおりに存在しない場合に実行コマンドが呼び出されます。

+0

私は 'docker container inspect >/dev/null 2>&1'を実行して、成功した出力と失敗した出力の両方を破棄します。 – Mike

1

私は、ドッキングウィンドウコンテナが存在するかどうかを決定するために、次のコードを使用します。

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 
関連する問題