docker-composeとdocker composeの違いについて調べてみた

最近突然、docker-composeコマンドが使えなくなり、調べてみるとdocker-composeが非推奨となり、docker composeを推奨するようになっていました。
docker-composeが非推奨になったのは、2年前頃の話なので、かなり今更ですがこの2つの違いについて調べたので、備忘録的に書いておきます。
docker-composeとdocker composeの違い
項目 | docker-compose | docker compose |
---|---|---|
提供形式 | 独立した Python 製 CLI ツール | Docker CLI に統合されたサブコマンド |
実行方法 | docker-compose up | docker compose up |
インストール | 別途インストールが必要 | Docker に標準で含まれる(v20.10.13〜) |
バージョン | Compose V1 | Compose V2(現行) |
サポート状況 | メンテナンスモード(非推奨) | 公式推奨 |
パフォーマンス | 標準的 | より高速で安定(Go 製) |
主な違いのポイント
- docker-composeは、Pythonで作られた古いCLIツールで、Docker CLIとは別プロセスとして動作します。
- docker composeは、Go言語で書き直されており、Docker CLIに統合されたサブコマンドです(Compose V2と呼ばれます)。
つまり、コマンド名の違いだけでなく、中身もまったく別物になっています。
docker-composeが非推奨になった背景
Dockerは2021年〜2022年にかけて、Composeのアーキテクチャを大きく見直しました。
背景1:CLI統合によるユーザー体験の向上
docker-compose はDocker CLIとは別のツールであったため、操作感や連携の面で一貫性に欠けていました。
これを解決するために、Docker CLIのサブコマンドとしてComposeを統合し、docker compose という形になりました。
背景2:Python製からGo製への移行
従来の docker-compose はPython製だったため、以下のような問題がありました。
- 環境によって依存関係の不整合が起きやすい
- パフォーマンスの限界
- Docker Desktopや他のツールとの統合が難しい
これを解消するため、Docker公式はGoで再実装されたCompose V2を開発し、2021年末から正式にリリースを始めました。
背景3:メンテナンス性と将来性
Compose V2はDocker EngineやDocker Desktopに直接組み込まれているため、アップデートや保守の一元化が可能になります。
これにより、セキュリティや新機能対応も迅速に行えるようになります。
まとめ
- docker-compose は従来のPython製ツールで、現在は非推奨になっている
- docker compose はDocker CLIに統合された新しいCompose(V2)で推奨されている