Docker Composeは、コンテナーを操作するための非常に人気のあるツールです。一方、通常のdocker
CLIは、一度に1つのコンテナーdocker-compose
と対話します。 複数のコンテナをまとめて制御できます。
Composeは現在、Dockerとは独立して配布されるスタンドアロンプロジェクトとして存在します。 Composeを使用する場合は、別途ダウンロードする必要があります。最新のDockerバージョンを提供している場合でも、OSパッケージマネージャーが遅れることが多いため、多くのユーザーはバイナリを直接取得することになります。
Docker Composev2はDockerCon2021で発表されました。これは、docker
に統合することで、Composeエクスペリエンスに大きな変化をもたらすことを約束します。 CLI。 v2には、コンテナスタックの管理に役立つ新しい便利な機能も付属しています。
Docker Compose v2は、Compose機能をDocker自体にもたらします。最新のDockerCLIがインストールされている場所であればどこでも、作成を使用できます。追加の手順は必要ありません。その下で、DockerはComposeプロジェクトによって提供される機能を引き続き使用します。
既存のdocker-compose
コマンドは、新しいdocker compose
に直接マップする必要があります カウンターパート。ほとんどの場合、それ以上の変更を必要とせずにダッシュをドロップできます。 docker compose
少数は実装されませんが、ほとんどすべてのComposev1サブコマンドとフラグをサポートします。
Compose v2は、引き続きdocker-compose
を介した呼び出しをサポートします バイナリ。 docker compose
を使用するようにすぐに更新しなくても、既存のワークフロースクリプトは機能し続けるはずです。 。長期的には、ほとんどの作成者が代わりに新しいフォームに切り替える可能性があります。
DockerComposev2での実験
Composev2は現在ベータ版です。開発中ですが、新しいバイナリはすでにWindowsおよびMac用のDockerDesktopに同梱されています。 Desktop v3.4は、docker compose
のサポートを追加しました コマンドなので、今日すでに使用できる可能性があります。 Linuxパッケージは年内に更新されます。当面の間、手動インストールスクリプトを利用できます。
docker-compose
コマンドは現在v1またはv2を呼び出すことができ、デフォルトはv1です。このオプションは、一部のユーザーに対して自動的にオンになります。最終的にはすべての人にv2を起動します。
docker-compose
を手動で切り替えることができます docker-compose disable-v2
を実行してv1とv2の間で またはdocker-compose enable-v2
。これにより、v2で動作しない既存の作成ファイルとの互換性を維持できます。 docker compose
コマンドは常にv2を使用します。
作成機能をDockerCLIに導入するには、作成仕様を変更する必要があります。これにより、コマンドの実装とdocker-compose.yml
が区別されるようになりました。 YAML形式。
改訂されたアプローチは、追加機能を統合する新しい機会を提供します。実験的な実装をより迅速に提供することができ、作成チームはコミュニティの提案を追加するためのより良い準備ができています。 CLIはYAMLファイル形式からより分離されているため、代替の実装(docker compose
など) )可能性があります。
CLI以外にも、Composer仕様の存在により、クラウドプロバイダーはCompose機能も実装できます。これで、docker compose up
を実行できます クラウドベースのDockerコンテキストに対して、アプリを本番環境で起動します。 Dockerには、AmazonECSおよびMicrosoftACI環境のサポートが組み込まれています。
内部的には、Compose v2はデフォルトでBuildkitを使用して、ビルドを高速化します。より多くのタスクが並行して実行されるため、全体的なパフォーマンスが向上し、処理時間が短縮されます。
v2の新機能
docker-compose
からの切り替え docker compose
v2での変更はこれだけではありません。コンテナスタックとのやり取りに影響を与える新機能もあります。
Compose v1の制限の1つは、プロジェクト名へのアプローチです。 docker-compose up -d
を実行すると 、Composeは、各コンテナのサービス名の前にプロジェクト名を追加します。これにより、すべてのコンテナが確実にグループ化されます。
v1は、作業ディレクトリの名前からプロジェクト名を推測します。 COMPOSE_PROJECT_NAME
を設定することにより、手動で別の名前を選択できます 環境変数。
v2は、プロジェクト名を設定するためのCLIフラグを追加することにより、これを簡素化します。 --project-name
を追加します または-p
環境を変更せずに、作業ディレクトリの名前を無視します。プロジェクト名を手動で設定すると、複数の作業ディレクトリのコンテナを1つのスタックに結合したり、コンテナスタックの複数のインスタンスを開始したりできます。
もう1つの新しいv2機能を使用すると、システム上のすべての作成スタックを一覧表示できます。 docker compose ls
コマンドは、プロジェクト名とそのステータス(実行中または停止中)のテーブルを提供します。これは、docker compose ps
を補完します スタック内のコンテナのステータスを提供するコマンド。
Compose v2は、docker compose cp
のサポートも追加します 。このコマンドは、docker cp
と同様に機能します コンテナの内外にファイルをコピーできます:
docker cp my-container local-file.txt /path/to/container/file.txt
Docker Compose v2は、コンテナー管理ツールの利便性を向上させる大幅なアップグレードです。 ComposeをメインのDockerCLIに統合すると、Dockerがどこにいても利用できるようになります。これにより、アクセスしやすくなり、使い始めるのが簡単になります。
Compose v2には、さまざまなスタックやコンテナでの作業を容易にするための追加のユーティリティコマンドもいくつか用意されています。システムで実行されているものの可視性が向上します。執筆時点ではまだベータ版ですが、WindowsとMacのユーザーは現在v2を使用でき、LinuxのユーザーはGitHubから最新のビルドをダウンロードできます。