Dockerは、DockerとAWS Elastic Container ServiceおよびAWS Fargateの強化された統合のパブリックベータを発表した。ECS pluginのリリースにより、開発者はDockerエクスペリエンス内の作業で、AWS内で動作するために必要なインフラストラクチャを作成できる。
現在のベータ版のユーザーエクスペリエンスでは、プラグインが短期的に直接利用されるようにDockerコマンドでecs
構文を使用する必要がある。たとえば、docker ecs compose up
を実行すると、compose.yaml
ファイルの記述どおりに、AWS内で必要なアプリケーションとすべてのリソースが作成される。これにより、VPC、ECSクラスター、ECSタスク定義など、Compose仕様の一部ではないAWS ECSリソースを個別に作成する必要がなくなる。
ECS Dockerプラグインでは、必要なAWS API認証情報を選択するためにAWSプロファイルを設定する必要がある。作成されると、AWSプロファイルとリージョンはDockerコンテキスト内に保存される。これは、docker ecs setup
コマンドを使用して開始できる。
プラグインはcompose.yaml
ファイルを解析し、適切なCloudFormationテンプレートに変換する。次に、このテンプレートを所定の順序でアプリケーションリソースを作成するために使用される。リソースは、down
コマンドを使用してクリーンアップでき、デプロイメントが失敗した場合に自動的にクリーンアップされる。
ECS統合は、4つのステップのプロセスを実行する。ロードフェーズでは、compose-goを使用してcompose.yaml
ファイルをロードして解析する。検証フェーズでは、ECSのデフォルトがcompose-goモデルに挿入され、compose.yaml
ファイルにサポートされていない機能が含まれていないことが検証される。変換フェーズでは、AWSのアプリケーションモデルを実装するために必要なすべてのアプリケーションリソースを定義するCloudFormationテンプレートを作成する。最後に、適用フェーズでは、スタックファイルにエクスポートするか、AWSにデプロイすることにより、CloudFormationテンプレートの適用を行う。
Composeサービスはこのプロセス中にECSサービスにマップされる。ComposeはKubernetesポッドやサイドカーなどのマルチコンテナサービスをサポートしていないため、カスタムのCompose拡張機能(x-aws-*
など)を使用して、ECS機能をサービスレベルの機能として公開する。
ネットワーク抽象化は、ComposeモデルからAWSセキュリティグループにマッピングされる。アプリケーションは単一のVPC内に作成され、暗黙のデフォルトを含むセキュリティグループがComposeネットワークごとに作成される。次に、Composeモデルでのネットワークの宣言方法に従って、サービスが接続される。これにより、共通のセキュリティグループにアタッチされたサービスが互いに通信できるようになる。
Cloud Mapプライベート名前空間も、{project}.local
としてアプリケーションごとに作成される。AWS Cloud Mapはリソース検出サービスである。カスタム名でアプリケーションリソースを登録できる。Cloud Mapは、登録されたリソースの状態をチェックして、それらの場所が最新であることを確認する。
GAリリースは今年後半に予定されており、プラグインはDocker Contextsの一部になる予定である。Dockerコンテキストは、単一のCLIインスタンスが複数のコンテキストを持つ方法を提供する。各コンテキストには、クラスターまたはノードの管理に必要なすべての必要なエンドポイントとセキュリティ情報が含まれている。たとえば、開発コンテキストとプロダクションコンテキストが同じラップトップ上に存在する場合がある。コマンドdocker context use <context-name>
を使用してコンテキストを切り替えることができる。
開始するには、Docker Desktop Edge version 2.3.3.0とともにDocker IDが必要である。GitHubリポジトリ内には利用可能なデモアプリケーションがある。Dockerは、ロードマップに掲載される機能要求も求めている。