こんにちはフロントエンドエンジニアのまさにょんです!
今回は、docker-compose run, up, build, create, start の違いと使い方についてまとめて解説していきます。
目次
docker-compose run, up, build, create, start の違いと使い方
Docker Compose の run コマンドと、upコマンドの違いがわからなかったので、調べてまとめてみました。
また、他の docker-compose コマンドについてもまとめています。
docker-compose up とは?
docker-compose up
コマンドはdocker-compose.yml
で定義したすべてのServiceのDocker Container の作成 & 起動 ( or 再起動 )をします。
ちなみに、Imageが存在しなければ、Docker Imageから作成してくれますが、
Imageをすでにある場合は、Imageを作り直さない(ImageがUpdate)されない点に注意です。
docker-compose up
コマンドの特徴をまとめると、次のとおりです。
depends_on
やlinks
で紐づいているコンテナもまとめて起動する。- サービスを一括でまとめて起動したい場合に使用する。
- デフォルトは「アタッチド」(attached) モードであり、全てのコンテナのログが画面上に表示される。
- 「デタッチド」(detached) モード( -d )では、Compose はコンテナを実行すると終了するが、コンテナはバックグラウンドで動き続ける。
docker-compose up
コマンドは、Docker Composeに紐づくServiceを一括でまとめて起動したい場合に使用します。
docker-compose run とは?
docker-compose run
コマンドはdocker-compose.yml
で定義した、1つのServiceを指定して、Docker Container の作成 & 起動をします。
こちらも、Imageをすでにある場合は、Imageを作り直さない(ImageがUpdate)されない点に注意です。
docker-compose run
コマンドの特徴をまとめると、次のとおりです。
- 実行するには、Service名の指定が必要であり、特定の Service のコンテナを起動し、かつ依存関係のあるコンテナも起動する。
- テストの実行であったり、データ・ボリューム・コンテナに対するデータの追加・削除といったTaskのために実行することが多い。
- run コマンドは実際には
docker run -ti
- コンテナに対してインタラクティブなターミナルを開き、コンテナのプロセスが終了すると、その時点の該当する終了コードを返す。
docker-compose run
コマンドは、Docker Compose の 1つのServiceを指定して、Container を起動して、何か特定のTaskを実行したい時に使用します。
docker-compose run, up, build, create, start の役割
【初心者向け】docker-compose run, up, build, createの違い の docker-compose のコマンドの役割をまとめた対応表がわかりやすいので、引用します。
docker-compose run, up, build, create, start の役割は次の表のようになっています。
コマンド | 処理内容 | 備考 |
---|---|---|
run | イメージ&コンテナ作成&起動 | docker-composeで設定している1つのServiceのみ。 (1つのServiceに対して1つのコマンドのみ) |
up | イメージ&コンテナ作成&起動 | depends_onやlinksで紐づいているコンテナもまとめて起動。 サービスを一括でまとめて起動したい場合に使用する。 |
build | イメージの作成 | – |
create | コンテナの作成 | – |
start | コンテナの起動 | – |
処理の流れ(Docker Compose の 処理フロー)をコマンドで見る
【初心者向け】docker-compose run, up, build, createの違い の docker-compose の処理の流れをまとめた対応表がわかりやすいので、引用します。
処理の流れをコマンドでまとめると次の表のようになります。
イメージ作成 | コンテナ作成 | コンテナ起動 | 内容 |
---|---|---|---|
build | create | start | 1つ1つ個別に実行 |
run | → | → | 1つのサービスだけ起動 |
up | → | → | Docker Composeに定義・紐づくServiceをまとめて起動 |
docker-compose up
またはdocker-compose run
を実行する際に、
イメージが既にある場合は、既存のイメージをそのまま使用することには、注意が必要です。
パッケージを追加したなどで、再度イメージを作り直したい場合は、別途 docker-compose build
を実行して、
その後でdocker-compose up
またはdocker-compose run
を実行する必要があります。
Twitterやってます!Follow Me!
神聖グンマー帝国の逆襲🔥
神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!