UbuntuにDocker Composeをインストールして使う方法【v2対応】

UbuntuにDocker Composeをインストールして使う方法【v2対応】 Docker

「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公式イメージで実際に確認した一次データを使用

目次

  1. Docker Composeとは
  2. v1とv2の違い
  3. Docker Composeのインストール手順
  4. docker-compose.ymlを書いて起動する
  5. よく使うコマンド
  6. よくあるエラーと解決策
  7. まとめ

Docker Composeとは

Docker Composeは、複数のDockerコンテナをひとつのYAMLファイルで管理できるツールです。

たとえばWebアプリを作るとき、「nginxのWebサーバー」「Node.jsのアプリ」「MySQLのデータベース」の3つのコンテナが必要になることがあります。それぞれをdocker runで起動すると、コマンドが長くなって覚えきれません。

Docker Composeを使うと、docker-compose.ymlというファイルにすべての設定をまとめておき、docker compose upの1コマンドで全コンテナを一括起動できます。開発環境のセットアップが格段に楽になります。

Docker Compose v1 vs v2 の違い(実測データ参照)
Docker Compose v1 vs v2 の違い(実測データ参照)

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 22.04/24.04 バージョン比較(実測)
Ubuntu 22.04/24.04 バージョン比較(実測)

注意

Ubuntu 24.04 の標準apt に含まれる docker-compose(v1, 1.29.2)は開発終了済みです。新規にインストールするなら、必ずDocker公式リポジトリからv2をインストールしてください。

Docker Composeのインストール手順

Docker Compose v2はDockerのプラグインとして動作します。Docker本体(docker-ce)と一緒にインストールするのが最もスムーズです。

手順1:前提パッケージのインストール

まず必要なパッケージをインストールします。




ubuntu@linuxlab: ~
$ sudo apt-get update
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キーを追加




ubuntu@linuxlab: ~
$ sudo install -m 0755 -d /etc/apt/keyrings
$ 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公式リポジトリを追加




ubuntu@linuxlab: ~
$ echo \
“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をインストール




ubuntu@linuxlab: ~
$ sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
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) …
docker-compose-plugin インストール実ログ(Ubuntu 24.04)
docker-compose-plugin インストール実ログ(Ubuntu 24.04)

手順5:インストール確認




ubuntu@linuxlab: ~
$ docker compose version
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月時点の実測値)。バージョン番号は今後更新されますが、コマンドが通れば正常にインストールされています。

著者アイコン
著者アイコン

Ubuntu 24.04 で apt install docker-compose をそのまま実行すると、v1の 1.29.2 が入ります。コマンドが docker-compose(ハイフン)になるので気づきにくいのですが、v1は開発終了済みです。Docker公式リポジトリを追加してからインストールするのが正解です。

docker-compose.ymlを書いて起動する

インストールができたら、実際に複数コンテナを動かしてみましょう。ここではnginxとredisを同時に起動する簡単な例を試します。

①docker-compose.ymlを作成する

作業用ディレクトリを作ってdocker-compose.ymlを書きます。ファイル名はcompose.yamlでも動きますが、慣習的にdocker-compose.ymlが使われます。




ubuntu@linuxlab: ~
$ mkdir myapp && cd myapp
$ 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はホスト側ポート:コンテナ側ポートの形式です。

②起動前に構文チェック




ubuntu@linuxlab: ~/myapp
$ docker compose config
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回やっておくとタイポで詰まるのを防げます。

③コンテナを起動する(バックグラウンド実行)




ubuntu@linuxlab: ~/myapp
$ docker compose up -d
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)になります。

④起動状態を確認する




ubuntu@linuxlab: ~/myapp
$ docker compose ps
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列でポートのマッピングも確認できます。

⑤ログを確認する




ubuntu@linuxlab: ~/myapp
$ docker compose logs –tail=5
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で終了)

⑥コンテナを停止・削除する




ubuntu@linuxlab: ~/myapp
$ docker compose down
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/ps/down 実行ログ(実測)
docker compose up/ps/down 実行ログ(実測)

よく使うコマンド

docker compose よく使うコマンド一覧(実測)
docker compose よく使うコマンド一覧(実測)
コマンド 説明 よく使うオプション
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を再実行します。




ubuntu@linuxlab: ~/myapp
# YMLを編集後、変更のあったコンテナだけ再起動される
$ docker compose up -d
Container myapp-web-1 Recreate
Container myapp-web-1 Started

変更のないサービスはそのまま動き続け、変更のあったサービスだけ再作成されます。ここは「down してから up」しなくても大丈夫なのが地味に便利です。

よくあるエラーと解決策

エラー1:「docker: ‘compose’ is not a docker command」




ubuntu@linuxlab: ~
$ docker compose up
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」




ubuntu@linuxlab: ~
$ docker compose up -d
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

原因:現在のユーザーがdockerグループに所属していません。
解決策:以下のコマンドでユーザーをdockerグループに追加し、ログインし直します。




ubuntu@linuxlab: ~
$ sudo usermod -aG docker $USER
$ 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のポート番号を変更します。




ubuntu@linuxlab: ~
# ポート80を使用中のプロセスを確認
$ 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 update
  • apt-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も便利です。

コメント

タイトルとURLをコピーしました