0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Docker】build, up, run コマンドの違い

Posted at

【Docker】build, up, run コマンドの違い


質問

Dockerを用いて、ローカル環境の構築をしようとしていますが、初心者で手間取っています。
それぞれのコマンドの役割と違いについて教えてください。
また、以下の3つのコマンドで実行する正しい順序や不要なコマンドはありますか?

docker compose bulid
docker compose up
docker compose run

回答

Docker 初心者の方向けに、以下の3つのコマンドの意味と違い、そして実行の正しい順序や不要なものについて丁寧に解説します。


🔍 それぞれのコマンドの意味と役割

1. docker compose build

役割:
docker-compose.yml ファイルに基づいて、必要な Docker イメージ をビルド(作成)します。

ポイント:

  • まだイメージがないときや、コードやDockerfileを更新したときに実行します。
  • キャッシュを利用して再ビルドもできます。

2. docker compose up

役割:
Docker Compose で定義された コンテナを起動 します。

実際にやること:

  • build がまだなら自動的にビルドします(ただし、手動でやった方が確実)。
  • ネットワークやボリュームの作成も行います。
  • -d オプションをつけるとバックグラウンドで起動します(例:docker compose up -d)。

3. docker run

役割:
特定の Docker イメージから、単体のコンテナを起動します。

使う場面:

  • Compose を使わずに、個別に1つのコンテナだけ起動したいとき。
  • 一時的にコンテナを立ち上げるときなど。

違い:

  • docker compose は複数のサービス(コンテナ)をまとめて扱う。
  • docker run は1つのコンテナを個別に操作する。

✅ 実行する正しい順序と不要なコマンド

Compose を使っている場合(通常はこちらがおすすめ):

docker compose build   # ① イメージを作成
docker compose up      # ② コンテナを起動

docker run不要 です。

docker runCompose を使わない場合のみ 使用します。
Compose を使って環境構築しているなら、基本的に使いません。


🎯 まとめ

コマンド 必要か? 用途
docker compose build ✔️ イメージをビルド(構築)する
docker compose up ✔️ コンテナを起動(環境立ち上げ)する
docker run Compose を使わないときにのみ使用

💡補足アドバイス

  • docker compose up --build とすれば、build も一緒にしてくれるので便利です。
  • 途中で変更があった場合は、再度 buildup をやり直すのが基本です。

不明点や docker-compose.yml の中身についても気軽に聞いてください!

質問

docker runとdocker compose runは、異なる役割なのでしょうか?

回答

はい、docker rundocker compose run は似ているようで 目的や使い方が異なります。以下に、初心者でもわかりやすいように違いと使い分けを整理します。


🧭 目的の違い(ざっくり言うと)

コマンド 主な用途
docker run 単体のコンテナを直接実行する(Composeなし)
docker compose run Composeプロジェクト内の1つのサービスを一時的に実行(例:バッチ処理やテスト)

🔍 詳しく比較

比較項目 docker run docker compose run
使用する定義ファイル 使わない(コマンドラインで全て指定) docker-compose.yml を使う
実行対象 任意のイメージやコマンド Compose に定義されたサービスの1つ
ネットワーク デフォルトは個別ネットワーク Compose ネットワークに接続される(他サービスと通信可能)
ボリューム・環境変数等 自分でオプション指定が必要 Compose ファイルに書かれた設定が反映される
主な用途 単発のコンテナ起動、テスト、確認など 開発中のバッチ処理や CLI コマンドの実行など

✅ 具体例で比較

🔸 docker run の例(独立したコンテナを起動)

docker run -it --rm ubuntu bash
  • Ubuntu イメージを使って、対話モードでコンテナを起動。
  • Dockerfile や Compose に依存しない。

🔹 docker compose run の例(Compose に定義されたサービスの一部を実行)

docker compose run web python manage.py migrate
  • web というサービス(例:Django)に対して、マイグレーションコマンドを実行。
  • docker-compose.yml に設定された環境変数、ボリューム、ネットワークなどをそのまま利用。

❗注意点

  • docker compose run は通常、一時的なコマンド実行(バッチや管理用) に使います。
    → 例:manage.pynpm install など

  • サービス全体を起動したいときは docker compose up を使います。


🎯 まとめ(覚え方)

状況 使うべきコマンド
単体で試す・軽く動かす docker run
Compose プロジェクトで一時的なコマンドを実行 docker compose run
複数サービスを連携して起動 docker compose up

必要があれば、具体的な docker-compose.yml 例にあわせた使い方も説明できますよ!

質問

「docker compose build と docker compose up を実行していれば、docker compose run は必要ないですか?」

回答

結論から言うと:

基本は docker compose builddocker compose up だけで十分 なケースが多いです。

  • docker compose build でイメージを作り
  • docker compose up でサービスを起動

これで複数コンテナが連携して動きます。


では docker compose run は何に使う?

  • 一時的にサービス内で特別なコマンドを実行したいとき に使います。

例えば、

  • マイグレーション(例:python manage.py migrate
  • バッチ処理やデータ投入
  • テストの実行
  • コンテナ起動中にシェルを開きたい時
docker compose run web bash

のように、サービス web のコンテナ内でコマンドを実行します。


まとめ

コマンド 使うタイミング
docker compose build イメージを作成・更新したい時に使う
docker compose up サービス群を起動したい時に使う
docker compose run 起動中とは別に一時的にコンテナ内でコマンドを実行したい時に使う

つまり、

  • 普通に環境を立ち上げて使うだけなら
    build + up でOK
  • 特別なコマンドをコンテナ内で走らせたいなら
    docker compose run を使う

もし具体的に「どういう時に使うのかもっと知りたい」や「例を見たい」などあれば教えてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?