AWSのコンテナについてまとめています。
AWSのコンテナサービス
コンテナとは、アプリケーションと実行環境を、OSごと個別の仮想環境としてまとめたものです。コンテナとしてアプリケーションを実行することで、個別の環境設定やOSパッチの適用、関連ライブラリのバージョン合わせなどが不要になり、即実行することができます。
AWSでは、コンテナを扱うためのサービスが用意されています。
- Amazon ECS
- Amazon ECR
- Amazon EKS
- AWS Fargate
- Amazon EC2
コンテナを実行するには、Amazon ECS(Amazon Elastic Container Service)サービスを利用するのがもっとも簡単。Amazon ECSは、フルマネージドコンテナオーケストレーションサービスで、コンテナアプリケーションのデプロイ、管理、スケーリングが簡単です。
【関連記事】
▶AWSのdocker実行はAmazon ECS コンテナアプリケーションをAWS環境で起動
コンテナイメージを圧縮、暗号化するにはAmazon ECRを利用します。Amazon ECRはコンテナイメージのレジストリで、インフラストラクチャをインストールせずに、コンテナイメージのAmazon ECRにプッシュ、プルが可能。コンテナ操作はOpen Container Initiative(OCI)標準とDocker Registry HTTP API V2をサポートしています。
【関連記事】
▶AWSのECRは、コンテナイメージの保存、共有、デプロイを行なう
Kubernetes(クベルネテス)でコンテナを管理するには、Amazon EKS(Amazon Elastic Kubernetes Service)を利用します。コンテナが実行されるクラスター環境を自分で制御したいという場合に最適です。クラウド上でのコンテナ実行以外に、オンプレミスでKubernetesクラスターを使ってコンテナ管理が可能。クラスターのコントロールプレーンにセキュリティパッチを自動適用するため、安全にKubernetes環境の維持が可能です。
関連)Amazon EKS(AWS でマネージド Kubernetes を実行)
サーバーレス環境でコンテナを実行したい場合は、AWS Fargateが便利です。サーバーやクラスターの管理が不要で、実行に即応性が求められないアプリケーションの実行環境をコストを抑えて実現できます。AWS Fargateは、Amazon ECSとAmazon EKSの両方に対応しています。
【関連記事】
▶AWSのFargateは、サーバーレスでコンテナを実行/EC2アプリのコンテナ化の方法
ツールやソフトウェアの簡易的な試用環境を作りたい場合や、コンテナの学習用などの目的で、EC2上でdockerなどのコンテナ管理ソフトウェアをインストールしてコンテナアプリケーションの実行も可能です。OS、コンテナ管理ソフト(docker)、コンテナをすべて自分で制御することができます。ただし、他の方法に比べると実行速度面や環境制御の手間、コスト面でも特にメリットはありません。
【関連記事】
▶AWSのインスタンス Amazon EC2サービスの料金と使い方
AWSのコンテナサポートツール
AWSには、上記サービス以外に、コンテナをサポートする各種ツールがあります。
- コンテナ化されたアプリケーションをすばやく起動して管理する AWS Copilot
- すべてのサービスのためのアプリケーションレベルのネットワーキング AWS App Mesh
- クラウドリソース検出サービス AWS Cloud Map
- Lambda 関数をコンテナイメージとしてパッケージ化およびデプロイ AWS Lambda
- コンテナ化されたアプリケーションを完全マネージド型サービスで構築・実行する AWS App Runner
- シンプルなコンテナ化されたアプリケーションを月額固定料金で実行する Amazon Lightsail
- 既存のアプリケーションをコンテナ化して移行する AWS App2Container
- 顧客が管理するインフラでコンテナを実行 Res_ECS-Anywhere Amazon ECS Anywhere
- 独自のインフラストラクチャで Kubernetes クラスターを作成して運用する Amazon-EKS-Anywhere_32 Amazon EKS Anywhere
- コンテナおよびサーバーレスデプロイメント向けの管理の自動化 AWS-Proton_32 AWS Proton
- フルマネージドなターンキーアプリケーションプラットフォーム Red-Hat-OpenShift_32 AWS での Red Hat OpenShift サービス (ROSA)
- Amazon EKS を強化する Kubernetes ディストリビューションを実行する Amazon-EKS-Distro_32 Amazon EKS Distro
- 既存のアプリケーションをコンテナ化して移行する Amazon-Elastic-Container-Service_Icon_32_Squid AWS App2Container
例えば、AWS Copilotは、コンテナ化アプリケーションを簡単に実行できるコマンドラインインタフェースですし、Amazon Lightsailのサービスの一つであるLightsail Container Serviceは、ネットからコンテナ化されたアプリケーションを実行し安全にアクセスできるサービスです。
【関連記事】
▶AWSのVPS、Amazon Lightsailの特徴と用途 EC2へのアップグレードも可能
AWSのコンテナ入門
AWSのコンテナ入門に役立つコンテンツを集めました。まずは、初心者向けのスライドや動画の図を見て、コンテナの概念をイメージで理解するのが良いでしょう。
まずは「コンテナという言葉くらいは聞いたことがある」という人向けの、初心者向けコンテンツ。
関連)スタートアップのためのコンテナ入門 – 導入編 | AWS Startup ブログ
コンテナの基本概念が理解できるようになる学習コンテンツ。以下の内容で構成されています。
- コンテナとは
- コンテナオーケストレーション
- コンテナ利用時・検討時によくある誤解
- コンテナへの移行ステップ
特に前半の「コンテナとは」が、挿絵入りでコンテナを抽象的にざっくり理解するのに役立ちます。
次に、AWS Black Belt Online Seminarで公開されたセミナー動画。
関連)[AWS Black Belt Online Seminar] CON141 コンテナ入門 資料公開 | Amazon Web Services ブログ
- 06:00「コンテナ」という解決策
- 08:39 仮想マシンとコンテナ
- 14:56 思っていたよりも手作業?
- 17:21 Amazon Elastic Container Service (ECS)
- 37:21 コンテナ関連セッション
動画の解説に加えて、Slideshareにて、動画内で使われているスライドの確認ができます。流し見して、コンテナを考える上で関係してくる用語やコンテナ利用のメリットなどを見ておくといいでしょう。
こちらは、AWS Summit Tokyo 2019のセミナー動画です。
関連)【初級】AWS コンテナサービス入門 | AWS Summit Tokyo 2019 – YouTube(38分08秒の動画)
想定聴講者は以下の通りです。
- docker runをしたことがある
- コンテナの特性はなんとなく知っている
- コンテナワークロード構築を検討中
- AWSが提供するコンテナサービスの特徴、どういうときに使うものか知りたい
この動画を視聴することで、AWSの各コンテナサービスが解決しようとしている課題を理解することができ、自身のアプリケーションをコンテナ化してAWS上で動かす際、どのコンテナサービスが必要かを判断できるようになります。
AWSのコンテナのまとめ
- AWSのコンテナサービスはECSやEKSなど複数あり、目的に応じて使い分ける
- AWSのコンテナサポートツールをあわせて使うと、コンテナの管理や操作手順の簡便化できる
- AWSのコンテナ入門には、公開されているスライドや動画の図を見て、まずはコンテナの概念を理解すると良い