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:の下にサービス名(webdb)を並べ、それぞれにimageportsを指定します。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

STATUSrunningになっていれば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 versionv5.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をコピーしました