2017-06-24 6 views

答えて

5

は、特定の名前のコンテナが存在するかどうかをチェックするためにフィルタを使用する:
docker ps Filterring参照)

#!/bin/bash 

name='nginx' 

[[ $(docker ps -f "name=$name" --format '{{.Names}}') == $name ]] || 
docker run --name nginx -d nginx 

最初の部分が偽である場合docker runにのみ実行されます。

0

Dockerは、同じ名前のコンテナがある場合、決して新しいコンテナを実行しません。だから、--nameを指定すると、何が必要すべてです:再び

docker run --name nginx -d nginx 

が実行:

docker run --name nginx -d nginx 
Error response from daemon: Conflict. The name "nginx" is already in use by container f9e5798a82e0. You have to delete (or rename) that container to be able to reuse that name. 
0

さてあなたは、任意の言語に開かれている場合、私はこの作業のために、構成するドッキングウィンドウを使用することをお勧めします。それをインストールした後、このコンテンツとドッキングウィンドウ-compose.ymlというファイルを作成します。

version: '2' 
services: 
    nginx: 
    image: 'nginx' 

次に使用:

docker-compose up - d 

コンテナがすでに実行されている場合、それは常にチェックします。コンテナが存在しない場合、それを作成して実行します。コンテナが停止している場合は、コンテナを実行するだけです。

docker-compose.ymlを変更するか、イメージの新しいバージョンをプルすると、名前のないものまですべてのボリュームを保持するコンテナが自動的に再作成されます。

よろしく

6

上記の答えとして、私は間違いなくドッキングウィンドウ-構成し、docker-compose upに探してお勧めします。

あなたの質問は、実行しているので、コンテナはすでにドッキングウィンドウの開始は何も実行が呼び出されていないので、0を返しますが、実行されている場合、私はVonC

docker start nginx || docker run --name nginx -d nginx

の答えを簡素化します。コンテナが存在するが実行されていない場合はstartが起動し、そうでない場合はコンテナが作成されます。

存在しているが停止している部分がVonCの回答にありません。

関連する問題