このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Docker超入門:Composeで差がつく!docker containerとの違いを理解する

Composeで差がつく!docker containerとの違いを理解する

Dockerを触っていると、似たようなコマンドがいくつも出てきますよね。
たとえば「docker container」と「docker compose」。
どっちを使えばいいの?どう違うの?と思ったことがある人も多いはず。

この記事では、docker composedocker container の違いを、わかりやすく解説していきます!

Docker Composeとは

Docker Composeは、複数のコンテナをまとめて管理するためのツールです。
1つの「compose.yaml」ファイルに、起動したいサービス(Web・DBなど)を定義しておけば、
コマンド1つで全部まとめて起動・停止・削除までできます。

つまり、チーム開発やマイクロサービス構成には欠かせない便利ツールなんです。

docker compose コマンドの基本一覧

まずはComposeでよく使う主なコマンドをまとめてみましょう👇

コマンド説明
docker compose upcompose.yaml に基づいてコンテナを構築・起動する。
docker compose stop起動中のコンテナを停止する。
docker compose start停止中のコンテナを再起動する。
docker compose restartコンテナを再起動する(強制再起動)
docker compose psComposeで管理中のコンテナ一覧を表示する。
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 containerdocker 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」で構成をコード化しておくのが圧倒的におすすめです!