「Docker Composeってどうやって使うの?」と思って調べると、docker-compose(ハイフンあり)とdocker compose(スペース)の2種類が出てきて混乱した経験はありませんか。
結論から言うと、現在の推奨はDocker Compose v2です。コマンドはdocker compose(スペース区切り)で、Docker公式リポジトリからdocker-compose-pluginとしてインストールします。Ubuntu 24.04 LTSの標準aptリポジトリには入っていないため、一手間が必要です。
本記事では Ubuntu 24.04 LTS の Docker公式イメージで実際にコマンドを実行し、その出力をそのまま掲載しています。インストール後に複数コンテナを同時に起動する実例まで確認できます。
この記事のポイント
- Ubuntu 24.04 の標準aptリポジトリには Docker Compose v2 が入っていない(Docker公式リポジトリを追加する必要がある)
- インストールされるバージョンは
docker-compose-plugin 5.1.4(2026年6月時点の実測値) - コマンドは
docker compose(スペース)。旧来のdocker-compose(ハイフン)はv1で開発終了済み - 基本的な使い方:
up -dで起動 →psで確認 →downで停止・削除 - ubuntu:24.04 と ubuntu:22.04 の Docker公式イメージで実際に確認した一次データを使用
目次
- Docker Composeとは
- v1とv2の違い
- Docker Composeのインストール手順
- docker-compose.ymlを書いて起動する
- よく使うコマンド
- よくあるエラーと解決策
- まとめ
Docker Composeとは
Docker Composeは、複数のDockerコンテナをひとつのYAMLファイルで管理できるツールです。
たとえばWebアプリを作るとき、「nginxのWebサーバー」「Node.jsのアプリ」「MySQLのデータベース」の3つのコンテナが必要になることがあります。それぞれをdocker runで起動すると、コマンドが長くなって覚えきれません。
Docker Composeを使うと、docker-compose.ymlというファイルにすべての設定をまとめておき、docker compose upの1コマンドで全コンテナを一括起動できます。開発環境のセットアップが格段に楽になります。

v1とv2の違い
検索すると「docker-compose」(ハイフンあり)と「docker compose」(スペース)の両方が出てきます。これはバージョンの違いによるもので、現在はv2が現行の推奨です。
| 項目 | v1(旧) | v2(現行推奨) |
|---|---|---|
| コマンド形式 | docker-compose up |
docker compose up |
| 言語 | Python製 | Go製(高速・軽量) |
| Ubuntu 24.04 aptパッケージ名 | docker-compose |
docker-compose-plugin |
| Ubuntu 24.04 apt候補バージョン | 1.29.2-6ubuntu1(標準repo) | 5.1.4(Docker公式repo) |
| メンテナンス | 開発終了(EOL) | 現行・活発に開発中 |
Ubuntu 24.04の標準aptリポジトリをapt-cache policy docker-composeで確認すると、v1の1.29.2-6ubuntu1しか候補に上がりません(ubuntu:24.04コンテナで2026-06-13に実測)。v2のdocker-compose-pluginはDocker公式リポジトリを追加しないと取得できません。

注意
Ubuntu 24.04 の標準apt に含まれる docker-compose(v1, 1.29.2)は開発終了済みです。新規にインストールするなら、必ずDocker公式リポジトリからv2をインストールしてください。
Docker Composeのインストール手順
Docker Compose v2はDockerのプラグインとして動作します。Docker本体(docker-ce)と一緒にインストールするのが最もスムーズです。
手順1:前提パッケージのインストール
まず必要なパッケージをインストールします。
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Reading package lists… Done
$ sudo apt-get install -y ca-certificates curl
Setting up ca-certificates (20240203) …
Setting up curl (8.5.0-2ubuntu10.6) …
手順2:Docker公式リポジトリのGPGキーを追加
$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
$ sudo chmod a+r /etc/apt/keyrings/docker.asc
GPGキーは/etc/apt/keyrings/docker.ascに保存されます。ここをケチるとあとでNO_PUBKEYエラーが出るので、必ず実行してください。
手順3:Docker公式リポジトリを追加
“deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo “${UBUNTU_CODENAME:-$VERSION_CODENAME}”) stable” \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
Get:1 https://download.docker.com/linux/ubuntu noble InRelease [48.8 kB]
Reading package lists… Done
手順4:Docker本体とDocker Compose v2をインストール
Reading package lists… Done
The following NEW packages will be installed:
containerd.io docker-buildx-plugin docker-ce docker-ce-cli docker-compose-plugin
94 newly installed, 0 to remove and 2 not upgraded.
Get:1 … containerd.io arm64 2.2.4-1~ubuntu.24.04~noble [20.2 MB]
Get:2 … docker-compose-plugin arm64 5.1.4-1~ubuntu.24.04~noble [6932 kB]
Setting up docker-compose-plugin (5.1.4-1~ubuntu.24.04~noble) …
Processing triggers for man-db (2.12.0-4build2) …

手順5:インストール確認
Docker Compose version v5.1.4
$ dpkg -l docker-compose-plugin
ii docker-compose-plugin 5.1.4-1~ubuntu.24.04~noble arm64 Docker Compose (V2) plugin for the Docker CLI.
Docker Compose version v5.1.4 と表示されれば成功です(2026年6月時点の実測値)。バージョン番号は今後更新されますが、コマンドが通れば正常にインストールされています。
docker-compose.ymlを書いて起動する
インストールができたら、実際に複数コンテナを動かしてみましょう。ここではnginxとredisを同時に起動する簡単な例を試します。
①docker-compose.ymlを作成する
作業用ディレクトリを作ってdocker-compose.ymlを書きます。ファイル名はcompose.yamlでも動きますが、慣習的にdocker-compose.ymlが使われます。
$ cat > docker-compose.yml << ‘EOF’
services:
web:
image: nginx:alpine
ports:
– “18080:80”
db:
image: redis:alpine
ports:
– “16379:6379”
EOF
services:の下にサービス名(web、db)を並べ、それぞれにimageとportsを指定します。portsはホスト側ポート:コンテナ側ポートの形式です。
②起動前に構文チェック
services:
db:
image: redis:alpine
networks:
default: null
ports:
– mode: ingress
target: 6379
published: “16379”
networks:
default:
name: myapp_default
docker compose configを実行すると、YAMLを解析して展開された設定が表示されます。エラーがなければ構文は正しいです。正直、これは忘れがちですが、起動前に1回やっておくとタイポで詰まるのを防げます。
③コンテナを起動する(バックグラウンド実行)
Network myapp_default Creating
Network myapp_default Created
Container myapp-web-1 Starting
Container myapp-db-1 Starting
Container myapp-web-1 Started
Container myapp-db-1 Started
-d(detached)オプションでバックグラウンド起動します。コンテナ名はディレクトリ名-サービス名-番号の形式(例:myapp-web-1)になります。
④起動状態を確認する
NAME COMMAND SERVICE STATUS PORTS
myapp-db-1 docker… db running 0.0.0.0:16379->6379/tcp
myapp-web-1 /docker… web running 0.0.0.0:18080->80/tcp
STATUSがrunningになっていればOKです。PORTS列でポートのマッピングも確認できます。
⑤ログを確認する
myapp-web-1 | 2026/06/13 10:05:16 [notice] 1#1: start worker process 32
myapp-web-1 | 2026/06/13 10:05:16 [notice] 1#1: start worker process 33
myapp-db-1 | 1:M 13 Jun 2026 10:05:16.511 * Ready to accept connections tcp
$ docker compose logs -f web
(リアルタイムでnginxのログが流れる。Ctrl+Cで終了)
⑥コンテナを停止・削除する
Container myapp-web-1 Stopping
Container myapp-db-1 Stopping
Container myapp-web-1 Stopped
Container myapp-web-1 Removing
Container myapp-web-1 Removed
Container myapp-db-1 Stopped
Container myapp-db-1 Removing
Container myapp-db-1 Removed
Network myapp_default Removed
docker compose downはコンテナの停止から削除、作成したネットワークの削除まで一括でやってくれます。単純なstopと違いコンテナが消えるので、再度起動するときはupから始めます。

よく使うコマンド

| コマンド | 説明 | よく使うオプション |
|---|---|---|
docker compose up |
コンテナを起動(イメージのpullも自動) | -d(バックグラウンド)、--build(Dockerfileを再ビルド) |
docker compose down |
コンテナ・ネットワークを停止・削除 | -v(ボリュームも削除) |
docker compose ps |
起動中コンテナの一覧を表示 | -a(停止中も含む) |
docker compose logs |
ログを表示 | -f(リアルタイム追跡)、--tail=N(直近N行) |
docker compose exec |
起動中コンテナでコマンドを実行 | docker compose exec web bash(シェルに入る) |
docker compose restart |
サービスを再起動 | docker compose restart web(特定サービスのみ) |
docker compose config |
YAMLの構文チェックと展開 | — |
docker compose pull |
イメージを最新に更新 | — |
docker compose stop |
コンテナを停止(削除しない) | docker compose startで再開可能 |
よく使うパターン:設定変更後の再起動
docker-compose.ymlを編集したあとに変更を反映させるには、upを再実行します。
$ docker compose up -d
Container myapp-web-1 Recreate
Container myapp-web-1 Started
変更のないサービスはそのまま動き続け、変更のあったサービスだけ再作成されます。ここは「down してから up」しなくても大丈夫なのが地味に便利です。
よくあるエラーと解決策
エラー1:「docker: ‘compose’ is not a docker command」
docker: ‘compose’ is not a docker command.
原因:docker-compose-pluginがインストールされていないか、古いDockerが使われています。
解決策:本記事の手順でDocker公式リポジトリからインストールし直してください。docker versionでバージョンを確認し、古すぎる場合はsudo apt-get remove docker.ioで削除してからやり直します。
エラー2:「permission denied while trying to connect to the Docker daemon socket」
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
原因:現在のユーザーがdockerグループに所属していません。
解決策:以下のコマンドでユーザーをdockerグループに追加し、ログインし直します。
$ newgrp docker
# または一度ログアウトして再ログインする
$ docker compose version
Docker Compose version v5.1.4
エラー3:ポートが既に使用中「Bind for 0.0.0.0:80 failed: port is already allocated」
原因:指定したポートが別のプロセスやコンテナで使用中です。
解決策:docker compose downで既存コンテナを停止するか、docker-compose.ymlのポート番号を変更します。
$ sudo ss -tlnp | grep :80
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:((“nginx”,pid=1234,fd=6))
# または docker ps で稼働中コンテナを確認
$ docker ps
エラー4:「yaml: line X: mapping values are not allowed in this context」
原因:docker-compose.ymlのインデントミスです。YAMLはスペースでインデントしますが、タブ文字は使えません。
解決策:docker compose configでYAMLを検証し、エラーの行を修正します。
注意:インデントはスペースのみ
docker-compose.ymlではタブ文字が使えません。テキストエディタの設定でタブをスペースに変換するか、cat -A docker-compose.ymlでタブ(^I)が混入していないか確認してください。
まとめ
Ubuntu 24.04 で Docker Compose v2 をインストールする手順をまとめます。
インストール手順まとめ
- Docker公式リポジトリのGPGキーを
/etc/apt/keyrings/docker.ascに追加 /etc/apt/sources.list.d/docker.listにリポジトリを登録してapt-get updateapt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginでインストールdocker compose versionでv5.1.4(2026年6月)以降が表示されれば完了- Ubuntu 24.04の標準aptには docker-compose v1(1.29.2)しかない点に注意
Docker Composeの基本コマンドはup -d(起動)→ ps(確認)→ logs(ログ確認)→ down(停止・削除)の4つを覚えておけば、日常的な操作はほぼカバーできます。
より実践的なサーバー環境を作りたい方は、VPSを借りてUbuntuにDocker Composeをセットアップするのがおすすめです。Vultrは東京リージョンがあり、月$5〜から始められます。
Docker ComposeをポータブルなGUIで管理したい場合は、Portainerも便利です。



コメント