はじめに
何度かお世話になっているDockerの参考書「プログラマのためのDocker教科書 第2版」を見ていた際に、Docker Composeを起動する方法として「docker-compose」というエイリアス名が使用されていることに違和感を感じた(普段はdocker composeコマンドを使っている)ので調べてみました。
docker composeとは
Compose とは、複数のコンテナを定義し実行する Docker アプリケーションのためのツールです。Compose は YAML ファイルを使い、アプリケーションのサービスを設定します。コマンドを1つ実行するだけで、設定内容に基づいた全てのサービスを生成・起動します。
要約すると複数のDockerコンテナを一括で管理できるのが「docker compose」です。
docker-composeとdocker composeのコマンドの違い
この違いはバージョン変更に伴うコマンド名の変更があるようです。
具体的には、Docker Compose V1が2023年6月にEOLし、その移行先としてDocker Compose V2が実装されたからみたいです。 参考:Docker blog
Docker Compose V1コマンドを利用する場合、別途インストールが必要でしたが、Docker Compose V2ではプラグインとしてデフォルトでDockerに組み込まれています。以前のバージョンでも、compose-pluginをインストールすれば利用可能。
V1とV2の変更点
インストール方法: V1はPythonで実装されており、Pythonの仮想環境にインストールする必要がありました。V2はGoで実装されており、Docker本体に統合されています。
パフォーマンス: V2はGoで実装されているため、V1に比べて高速で効率的です。
コマンド形式: V1ではdocker-composeコマンドを使用しましたが、V2ではdocker composeとスペースを含む形式になりました。
yamlファイルの記述: 基本的v1で作成したdocker-compose.yamlはV2でも流用可能ですが、一部コマンドが利用できなかったり非推奨などにもなっている。V1で書かれているyamlを流用する際は注意が必要そうです。
あとがき
何となくで使っていたDocker Composeでしたが、v1とv2でのパフォーマンス違いや
推奨設定違いなど全然知識がアップデートできていなかったことに気づきました。
これを機会に最新のDockerに関して勉強しなおして行こうと思います。(おすすめの参考書などあれば是非ご教授ください。)
参考