このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Docker超入門:Composeで差がつく!docker containerとの違いを理解する

Composeで差がつく!docker containerとの違いを理解する
Dockerを触っていると、似たようなコマンドがいくつも出てきますよね。
たとえば「docker container」と「docker compose」。
どっちを使えばいいの?どう違うの?と思ったことがある人も多いはず。
この記事では、docker compose と docker container の違いを、わかりやすく解説していきます!
Docker Composeとは
Docker Composeは、複数のコンテナをまとめて管理するためのツールです。
1つの「compose.yaml」ファイルに、起動したいサービス(Web・DBなど)を定義しておけば、
コマンド1つで全部まとめて起動・停止・削除までできます。
つまり、チーム開発やマイクロサービス構成には欠かせない便利ツールなんです。
docker compose コマンドの基本一覧
まずはComposeでよく使う主なコマンドをまとめてみましょう👇
| コマンド | 説明 |
|---|---|
| docker compose up | compose.yaml に基づいてコンテナを構築・起動する。 |
| docker compose stop | 起動中のコンテナを停止する。 |
| docker compose start | 停止中のコンテナを再起動する。 |
| docker compose restart | コンテナを再起動する(強制再起動) |
| docker compose ps | Composeで管理中のコンテナ一覧を表示する。 |
| docker compose run | 特定のサービス内で一時的なコマンドを実行する。 |
| docker compose logs | コンテナのログを表示する。 |
| docker compose down | コンテナとネットワークをまとめて削除する。 |
よく使うComposeコマンド例
コンテナの起動
docker compose up -d- 「compose.yaml」に定義されたすべてのサービスを起動
-dオプションをつけるとデタッチモード(バックグラウンド)で実行
特定サービスのみ起動
docker compose up apache→ compose.yaml に書かれた apache サービスだけ起動します。
コンテナの停止
docker compose stopすべてのサービスをまとめて停止します。
もちろん、サービス名を指定して個別に止めることもできます。
docker compose stop nginxコンテナのログ確認
docker compose logsこれで全サービスのログが一度に見られます。
個別に見る場合はサービス名をつけます👇
docker compose logs webコンテナとネットワークの削除
docker compose down「up」で作成したコンテナやネットワークをまとめて削除します。
開発が一段落したときなどに便利です。
docker container コマンドとの違い
Docker Composeとよく比較されるのが、docker container コマンド。
こちらは単一のコンテナに対して操作を行うためのコマンドです。

たとえば、Nginxコンテナを1つだけ起動したい場合は次のようにします。
docker run -d --name web nginx:latestこれでももちろん動作しますが、もしMySQLもRedisも一緒に動かしたい場合、
それぞれ docker run を何度も叩く必要があります。
違いをわかりやすく比較
| 比較項目 | docker container | docker compose |
|---|---|---|
| 操作対象 | 単一コンテナ | 複数コンテナ(サービス単位) |
| 定義方法 | 手動で1つずつコマンドを入力 | compose.yaml で一括定義 |
| 環境変数 | 毎回 -e オプションで設定 | YAML内または.envファイルでまとめて管理 |
| ネットワーク | 手動で作成・接続 | 自動でネットワーク構築 |
| 運用のしやすさ | 小規模・単体検証向け | チーム開発・複数サービス向け |
操作の流れで比べてみよう
たとえば、「Web+DB構成」を作りたい場合の流れを比べてみます。
docker container を使う場合
docker network create webdb-net
docker run -d --name db --network webdb-net mysql:latest
docker run -d --name web --network webdb-net nginx:latest→ すべて手動でネットワークを作り、コンテナを個別起動。
ちょっと面倒ですね。
docker compose を使う場合
# compose.yaml
version: '3'
services:
web:
image: nginx:latest
db:
image: mysql:latestそしてコマンド1つ
docker compose up -d→ 自動的にネットワークを作って、2つのコンテナを一括起動!
この差は大きいです。
まとめ
Docker Composeは「複数のコンテナを1つの単位で動かせる」というのが最大の強みです。
一方で、docker container は「単発で試す」場合に向いています。
✨ まとめると…
- docker container → 単一コンテナ向け(手動)
- docker compose → 複数サービスをまとめて自動管理
- compose.yaml で設定を共有できるからチーム開発にも最適
もし本格的にアプリ開発をするなら、
「docker compose」で構成をコード化しておくのが圧倒的におすすめです!
