実行するたびに
docker-compose start
docker-compose ps
状態が「UP」のコンテナが表示されます。私が行った場合
docker-compose up -d
より詳細に表示されますが、同じ状態になります。両方のコマンドに違いはありますか?
docker-compose start
( https://docs.docker.com/compose/reference/start/ )
サービスの既存のコンテナを開始します。
docker-compose up
( https://docs.docker.com/compose/reference/up/ )
サービスのコンテナをビルド、(再)作成、開始、およびアタッチします。
既に実行されていない限り、このコマンドはリンクされたサービスも開始します。
docker-compose up
コマンドは、各コンテナーの出力を集約します(本質的にdocker-compose logs -f
を実行)。コマンドが終了すると、すべてのコンテナが停止します。docker-compose up -d
を実行すると、コンテナーがバックグラウンドで開始され、実行されたままになります。サービスの既存のコンテナがあり、コンテナの作成後にサービスの構成またはイメージが変更された場合、
docker-compose up
は、コンテナを停止して再作成することで変更を取得します(マウントされたボリュームを保持します)。 Composeが変更を取得しないようにするには、--no-recreate
フラグを使用します。
完全なCLIリファレンス:
https://docs.docker.com/compose/reference/
Dockerよくある質問では、これは非常に明確に説明されています:
up、run、startの違いは何ですか?
通常、
docker-compose
up
が必要です。 upを使用して、docker-compose.yml
で定義されているすべてのサービスを開始または再起動します。デフォルトの「接続」モードでは、すべてのコンテナのすべてのログが表示されます。 「切り離された」モード(-d)では、コンテナの起動後にComposeが終了しますが、コンテナは引き続きバックグラウンドで実行されます。Docker-compose runコマンドは、「1回限り」または「アドホック」タスクを実行するためのものです。実行するサービス名が必要で、実行中のサービスが依存するサービスのコンテナーのみを開始します。 runを使用して、テストを実行したり、データボリュームコンテナーへのデータの削除や追加などの管理タスクを実行します。 runコマンドはdocker run -tiのように機能し、コンテナへのインタラクティブターミナルを開き、コンテナ内のプロセスの終了ステータスに一致する終了ステータスを返します。
Docker-compose startコマンドは、以前に作成されたが停止されたコンテナを再起動する場合にのみ役立ちます。新しいコンテナは作成されません。