Docker Compose での停止、ダウン、アップ、および開始の違い
Docker Compose には類似したコマンドが複数ありますが、まったく異なる方法で機能します。 いくつかの例は、コマンド docker compose stop
と docker compose down
およびコマンド docker compose start
と docker compose up
です。
この記事では、それぞれの違いについて説明します。
docker compose stop
と docker compose down
の違い
docker compose stop
の使用
docker compose stop
コマンドを実行する主な機能は、実行中のコンテナーのサービスを停止することです。 このコマンドはコンテナーを停止しますが、必ずしもコンテナーを削除するとは限りません。
たとえば、以下のコマンドは、コンテナー名または ID を指定しない場合、すべてのコンテナーを停止します。
docker compose stop
出力:
Going to stop file, web, test
Stopping file ... done
Stopping web ... done
Stopping test ... done
コンテナー名または ID を指定して、停止するコンテナーを指定できます。
docker compose stop file
出力:
Going to stop file
Stopping file ... done
また、docker compose stop
の実行時にシャットダウン タイムアウトを指定することもできます。 Docker は通常、コンテナーを停止する前に 10 秒間待機します。
たとえば、コンテナーが停止するときにもう少し時間がかかることがわかっている場合は、以下に示すように、このタイムアウト値を増やしたい場合があります。
docker compose stop file -t 60
docker compose down
の使用
一方、docker compose down
コマンドは、プロセスに追加のステップを提供します。 上記のコマンドは、コンテナーと内部で実行されているサービスを停止して削除します。 削除には、コンテナーとネットワークの両方が含まれます。
docker compose down
は、docker stop <container name or id>
と docker <prune or rm>
の両方で順次実行されると同様に機能します。 docker compose down
コマンドは、2つのコマンドを組み合わせたショートカットのようなものだと言えます。
したがって、以下の 2つのコマンドを実行する代わりに:
docker compose stop file && docker compose rm -f
代わりに docker compose down
を使用できます。
docker compose down file
-v
または --volumes
フラグを docker compose down
コマンドに追加することで、ワンランク上のものにすることができます。 このコマンドは、実行時にコンテナー、そのネットワーク、および接続されているボリュームを停止して削除します。
上記のフラグの追加により、3つのコマンドを 1つのコマンドにまとめました。
docker compose down file -v
docker compose down
コマンドは、コンテナーだけでなくイメージにも使用できます。 たとえば、docker compose down --rmi <all or local>
コマンドを実行してイメージを削除できます。
このコマンドは、ネイティブ Docker で使用する場合の docker rmi
コマンドに似ています。
docker compose start
と docker compose up
の違い
docker compose start
の使用
前のセクションと同じように、コマンド docker compose start
と docker compose up
は似ているように聞こえますが、機能が異なります。 たとえば、docker compose start
コマンドは、以前に停止した特定のコンテナーを再起動します。
docker compose start file
さらに、上記のコマンドは、既に作成されているコンテナーに対してのみ機能します。
では、作成されていないコンテナを直接起動するにはどうすればよいでしょうか? 以下のコマンドを使用できます。
docker compose up
の使用
docker compose up
コマンドは、docker-compose.yml
ファイルに基づいて新しいコンテナーを開始します。 docker create
と docker start
を順番に実行するのと似ています。
YAML ファイルを使用しているため、1つのコマンドで複数のコンテナーを作成して起動できます。
docker compose up
出力:
Creating file
Creating web
Creating test
docker compose up
を使用すると、ソース YAML ファイルに変更があった場合、その YAML ファイルに基づくコンテナーが停止され、再作成されます。
これを避けるために、以下に示すように、docker compose up
中に –-no-recreate
オプションを使用できます。 要約すると、コンテナーが既に存在する場合、コマンドはコンテナーを再作成しません。
docker-compose up -d --no-recreate
さらに、docker compose stop
と同様に、タイムアウト値を指定できます。
docker-compose up -d -t 30
これは、バニラ Docker 環境で新しいコンテナーを実行および開始するときのコマンド docker run
の主要な対応物であるとも言えます。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn