第6章 コンテナ コンテナ
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
6.0 はじめに
コンテナとは、簡単に言えば、アプリケーション・コード、バイナリ、構成ファイル、ライブラリを、コンテナ・イメージと呼ばれる単一のパッケージにまとめたものである。このようにすべてをまとめてパッケージ化することで、アプリケーションの開発、テスト、実行を、制御性と一貫性を持って行うことができる。ローカルでビルドしたコンテナのパッケージングとテストを素早く開始できる一方、実行する場所に関係なく、まったく同じ実行環境を確保できる。一般化により、何かをビルドして幅広いユーザーに提供するまでの時間が短縮され、デプロイするたびに一貫性が確保される。
コンテナは、実行するホスト(ノートPC、クローゼットの中のサーバ、またはクラウド)の基礎となる計算能力とメモリ能力を活用する、完全に「格納された」環境である。競合することなく、複数のコンテナを同じホスト上で同時に実行できる。また、複数のコンテナを互いに通信する目的で実行させることもできる。例えば、Webサイト向けのバックエンドを実行するコンテナにアクセスするフロントエンドのWebアプリケーションをコンテナとして実行していて、より多くのトラフィックを処理するために複数のインスタンスを同時に実行したいとする。複数のコンテナを一度に実行し、それらが常に利用可能であることを保証することは、いくつかの課題をもたらす可能性がある。一般的なオーケストレーションには様々な種類があるが、よく耳にするものとしてはKubernetesやDocker Swarmがある。
AWS上でコンテナを実行するには、コンテナオーケストレーションとしてAmazon Elastic Container Service(Amazon ECS)やAmazon Elastic Kubernetes Service(Amazon EKS)、カスタム要件のデプロイにはAmazon Elastic Cloud Compute(Amazon EC2)といった選択肢がある。 前述のAWSコンテナオーケストレーションサービス(Amazon ECSとAmazon EKS)はどちらも、Amazon EC2上またはフルマネージドAWS Fargateコンピュートエンジン上でワークロードを実行できる。言い換えれば、Amazon ECSとAmazon EKSでコンテナを実行するEC2インスタンス(またはインスタンス)をコントロールし、ホストをある程度カスタマイズすることもできるし、AWSによって完全に管理されているFargateを使用することもできる。ECS AnywhereとEKS Anywhereを使えば、自分のデータセンター内でECSとEKSを使うこともできる。AWSの Webサイトには、最新のコンテナサービスのリストが網羅表記されている。
いくつかのAWSサービス(AWS CodeDeploy、AWS CodePipeline、Amazon Elastic Containerレジストリ)は、開発ライフサイクルを合理化し、ワークフローを自動化するのに役立つ。 これらはAmazon ECSやAmazon EKSとうまく統合している。 ネットワーク機能を提供するAWSサービスの例としては、Amazon Virtual Private Cloud、AWS Elastic Load Balancing、AWS ...