Docker Compose for Amazon ECS が利用可能に

Docker は本日をもって Docker Compose および Amazon ECS との統合が V1 に達し、GA になったことをお知らせします。🎉

この作業は、今年の初めに、Compose仕様を コミュニティが運営するプロジェクトに移行するという最初のステップから始まりました。 その後、7 月に AWS と協力して、Docker コマンドラインを使用して Compose アプリケーションを ECS に簡単にデプロイできるようにする方法 を発表しました 。 本日より、すべての Docker Desktop ユーザーが安定した ECS エクスペリエンスを利用できるようになり、開発者は ECS コンテキストで docker 作成コマンドを使用して、ECS に対してコンテナーを実行できるようになります。

その一環として、これを実現するのを手伝ってくれたAWSチーム、カルメン・プッチオ、デビッド・キルモン、スラヴァン・レンガラジャン、ウッタラ・スリダール、マッシモ・レ・フェレ、ジョナ・ジョーンズ、デビッド・ダフィーに感謝します。

Docker Compose & ECS の使用を開始する

既存のECSユーザーまたは新しいスターターとして行う必要があるのは、最新のDocker デスクトップコミュニティバージョン (2.5.0.1以降)に更新し、イメージをDocker Hubに保存してデプロイできるようにすることだけです( ここでHubを開始できます)、 AWSでセットアップ してから、最後にそのアカウントを使用してECSコンテキストを作成する必要があります。 次に、Composeファイルを使用してECSでアプリケーションの実行を開始するように読み取られます。

AWS とともにいくつかのブログ投稿とビデオを作成し、ECS エクスペリエンスの開始方法や使用方法について説明します。 

この体験について他に質問がある場合やフィードバックをお寄せになりたい場合は、 Compose CLI リポジトリ または コミュニティ Slack の #docker-ecs チャンネルにメッセージをお送りください。

Docker Compose ECS 統合の新機能 

過去数か月にわたってECS統合に新しい機能を追加してきましたが、より興奮している機能のいくつかを紹介したいと思います。

GPU のサポート 

ECSの最新バージョンの一部として、開発者がEC2内でGPUなどの独自のインスタンスタイプ/機能を利用できるように、(デフォルトのファーゲートではなく)EC2にデプロイする機能を提供しました。 

これを行うには、作成ファイルの一部としてGPUインスタンスタイプが必要であることを指定するだけで、残りはCompose CLIが処理します。 

services:
   learn:
       image: itamarost/object-detection-app:latest-gpu
       command: python app.py
       ports:
           - target: 8000
             protocol: tcp
             x-aws-protocol: http
       deploy:
           resources:
               # devices:
               #   - capabilities: ["gpu"]
               reservations:
                  memory: 30Gb
                  generic_resources:
                    - discrete_resource_spec:
                        kind: gpus
                        value: 1

EFS のサポート

開発者から、クラウドに移行しようとしているときに、データを保持するためにマネージド サービスに移行する準備ができていない場合があり、アプリケーションでボリュームを使用する可能性があるというフィードバックを早期に受け取りました。 これを解決するために、エラスティックファイルシステム(EFS)ボリュームのサポートをCompose CLIに追加し、ユーザーがボリュームを作成してComposeアプリケーションの一部として使用できるようにしました。 これは保持ポリシーを使用して作成されるため、アプリケーションのシャットダウン時にデータが削除されることはありません。 同じアプリケーション (同じプロジェクト名) が再度デプロイされると、ファイル システムが再アタッチされ、開発者が docker-compose を使用してローカルで使用していたのと同じユーザー エクスペリエンスが提供されます。

これを行うには、すでに作成した既存のファイルシステムを指定できます。

volumes:
   my-data:
     external: true
     name: fs-123abcd

または、構成方法に関する情報を提供することで、新しいものを最初から作成することもできます。

volumes:
   my-data:
     driver_opts:
       # Filesystem configuration
       backup_policy: ENABLED
       lifecycle_policy: AFTER_14_DAYS
       performance_mode: maxIO
       throughput_mode: provisioned
       provisioned_throughput: 1

また、docker volumeコマンドを使用してこれらを管理し、リソースを一覧表示および管理して、不要になったときに削除することもできます。

コンテキスト作成の改善 

また、コンテキスト作成フローを改善して、これをよりシンプルでインタラクティブにする方法を検討しながら、パワーユーザーがコンテキストの構成方法を知っている場合は、より前もって物事を指定できるようにしました。 

開始すると、新しいコンテキストを作成するための3つのオプションがあります。 

? Create a Docker context using:  [Use arrows to move, type to filter]
> An existing AWS profile
 A new AWS profile
 AWS environment variables

既存のプロファイルを選択すると、選択可能なプロファイルが一覧表示され、このコンテキストに関連付けるプロファイルを選択するだけで済みます。 

$ docker context create ecs test2
? Create a Docker context using: An existing AWS profile
? Select AWS Profile nondefault
Successfully created ecs context "test2"
 
$ docker context inspect test2
[
   {
       "Name": "test2",
       "Metadata": {
           "Description": "(eu-west-3)",
           "Type": "ecs"
       },
       "Endpoints": {
           "ecs": {
               "Profile": "nondefault",
           }
       ...
   }
]

新しいプロファイルを作成する場合は、作成フローの一部としてこれを行うために必要な資格情報を求められ、このプロファイルが保存されます。

? Create a Docker context using: A new AWS profile
? AWS Access Key ID fiasdsdkngjgwka
? Enter AWS Secret Access Key *******************
? Region eu-west-3
Saving to profile "test3"
Successfully created ecs context "test3"
 
$ docker context inspect test3
[
   {
       "Name": "test3",
       "Metadata": {
           "Description": "(eu-west-3)",
           "Type": "ecs"
       },
       "Endpoints": {
           "ecs": {
               "Profile": "test3",
           }
       },
       ...
   }
]

既存のAWS環境変数を使用してこれを行う場合は、このオプションを選択して、これらのenv変数を参照してコンテキストを作成するため、作業中は引き続きそれらを尊重します。

$ docker context create ecs test1
? Create a Docker context using: AWS environment variables
Successfully created ecs context "test1"
$ docker context inspect test1
[
   {
       "Name": "test1",
       "Metadata": {
           "Description": "credentials read from environment",
           "Type": "ecs"
       },
       "Endpoints": {
           "ecs": {
               "CredentialsFromEnv": true
           }
       },
       ...
   }
]

この新しい簡素化された開始方法と、この一部をオーバーライドできるようにここに追加したフラグが、以前よりもさらに迅速にECSを開始するのに役立つことを願っています。 

ECSで構築した新しいエクスペリエンスに本当に興奮していますので、エクスペリエンスに関するフィードバックや、Compose CLIの他のバックエンドのアイデアがある場合は、 パブリックロードマップでお知らせください。

DockerのPeter McKeeとAWSのJonah Jones T とのワークショップ「Docker – AWS ECS Integrationでそれができることを知らなかった」に参加してください。2020年11月24日(月)午前10:00(太平洋時間)/午後1:00(東部標準時) 登録する ここは

アマゾンecsのために作成