【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