ドッキング・コンテナを実行していない場合にのみ実行する必要があります。このコマンドが与えられた。それが存在しない場合にのみ、どのように実行しますか?ドッキング・コンテナをまだ実行していない場合は、実行する方法
docker run --name nginx -d nginx
私は任意のスクリプトまたは言語にオープンしています。
ドッキング・コンテナを実行していない場合にのみ実行する必要があります。このコマンドが与えられた。それが存在しない場合にのみ、どのように実行しますか?ドッキング・コンテナをまだ実行していない場合は、実行する方法
docker run --name nginx -d nginx
私は任意のスクリプトまたは言語にオープンしています。
は、特定の名前のコンテナが存在するかどうかをチェックするためにフィルタを使用する:
(docker ps Filterring参照)
#!/bin/bash
name='nginx'
[[ $(docker ps -f "name=$name" --format '{{.Names}}') == $name ]] ||
docker run --name nginx -d nginx
最初の部分が偽である場合docker run
にのみ実行されます。
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.
さてあなたは、任意の言語に開かれている場合、私はこの作業のために、構成するドッキングウィンドウを使用することをお勧めします。それをインストールした後、このコンテンツとドッキングウィンドウ-compose.ymlというファイルを作成します。
version: '2'
services:
nginx:
image: 'nginx'
次に使用:
docker-compose up - d
コンテナがすでに実行されている場合、それは常にチェックします。コンテナが存在しない場合、それを作成して実行します。コンテナが停止している場合は、コンテナを実行するだけです。
docker-compose.ymlを変更するか、イメージの新しいバージョンをプルすると、名前のないものまですべてのボリュームを保持するコンテナが自動的に再作成されます。
よろしく
上記の答えとして、私は間違いなくドッキングウィンドウ-構成し、docker-compose up
に探してお勧めします。
あなたの質問は、実行しているので、コンテナはすでにドッキングウィンドウの開始は何も実行が呼び出されていないので、0を返しますが、実行されている場合、私はVonC
docker start nginx || docker run --name nginx -d nginx
の答えを簡素化します。コンテナが存在するが実行されていない場合はstartが起動し、そうでない場合はコンテナが作成されます。
存在しているが停止している部分がVonCの回答にありません。