【Docker】docker compose up -d の意味と「サービス」と「コンテナ」の関係を整理する
はじめに
docker compose up -d は開発でよく使うコマンドですが、
「-d って何を意味しているのか?」「サービスとコンテナってどう違うのか?」と疑問に思ったことはありませんか?
本記事では、docker compose up -d の動作と、
「サービス」と「コンテナ」の関係を整理して理解します。
-d の意味:detached(デタッチ)モード
-d は detached(デタッチ)モード の略で、
コンテナを バックグラウンドで起動する ためのオプションです。
フォアグラウンドとバックグラウンドの違い
-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