🔖

【Docker】docker compose up -d の意味と「サービス」と「コンテナ」の関係を整理する

に公開

はじめに

docker compose up -d は開発でよく使うコマンドですが、
-d って何を意味しているのか?」「サービスとコンテナってどう違うのか?」と疑問に思ったことはありませんか?

本記事では、docker compose up -d の動作と、
「サービス」と「コンテナ」の関係を整理して理解します。

-d の意味:detached(デタッチ)モード

-ddetached(デタッチ)モード の略で、
コンテナを バックグラウンドで起動する ためのオプションです。

フォアグラウンドとバックグラウンドの違い

-d を付けない場合(フォアグラウンドモード)

docker compose up

コンテナがフォアグラウンドで起動し、起動ログがリアルタイムで流れ続けます。
この間、ターミナルにログが表示され続けます。
コンテナを停止するには Ctrl+C を押します。

-d を付けた場合(バックグラウンドモード)

docker compose up -d

コンテナがバックグラウンドで起動します。
起動処理がすぐに完了し、ターミナルで次のコマンドを打てるようになります。
ログを確認したい場合は docker compose logs で確認できます。

「サービス」と「コンテナ」の関係

Docker Compose で定義するのは サービス(service) です。
それぞれのサービス定義から、コンテナ(container) が作られます。

services:
  web:
    image: nginx
  db:
    image: mysql

この場合:

  • web サービス → myapp-web-1 のようなコンテナ
  • db サービス → myapp-db-1 のようなコンテナ

というように、サービスごとにコンテナが起動します。

補足
コンテナ名は <プロジェクト名>-<サービス名>-<番号> という形式で自動的に付けられます。
プロジェクト名は、デフォルトではディレクトリ名が使用されます。

つまり、

「サービス」は設計図、
「コンテナ」はその実体(実際に動作するアプリケーション)です。

まとめ

用語 意味
-d detached(バックグラウンドで起動)
サービス docker-compose.yml に定義されたアプリ単位
コンテナ サービス定義から作られる、実際に動作するアプリケーション

おわりに

docker compose up -d は「バックグラウンドで、定義されたサービス(=複数コンテナ)をまとめて起動する」コマンドです。

意味を理解しておくと、ログを確認したり、停止・再起動したりといった操作もスムーズになります。

本記事が参考になれば幸いです。

Discussion