AWSのECR(Dockerイメージの保存・取得サービス)についてまとめています。
AWSのECRは、コンテナソフトウェアの保存、共有、デプロイ
AWSのECR(Elastic Container Registry)は、コンテナイメージの登録に使えるレジストリサービス。AWSサービスで使用するコンテナイメージを保存しておくと、GitHubやGitLabなどの外部のレジストリサービスを利用するよりも連携が簡単になります。
【関連記事】
▶GitHubとGitLabの違い ユーザ数規模や特徴、価格やサーバ環境を比較
Elastic Container Registryに登録されたコンテナは、Amazon Elastic Container Service (Amazon ECS) か、Amazon Elastic Kubernetes Service (Amazon EKS) での保存や実行が可能です。
【関連記事】
▶AWSのdocker実行はAmazon ECS コンテナアプリケーションをAWS環境で起動
コンテナイメージの操作には、OCI(Open Container Initiative)標準と、Docker Regsitry HTTP API V2をサポートしています。使い慣れたdockerのCLIコマンド(push、pull、list、tagなど)を利用可能です。
Elastic Container Registryでは、自作したコンテナイメージのほかに、公開されているパブリックコンテナイメージやアーティファクトギャラリーからコンテナソフトウェアのイメージを利用可能。また、AWS Market Placeで購入したソフトウエアを利用することができます。
Elastic Container Registryのコンテナイメージとアーティファクトは、Amazon S3に保存され、99.999999999% のデータの耐久性を実現するよう設計されています。
【関連記事】
▶AWS S3ってどんなサービス?初心者向けに機能紹介
Elastic Container Registryに保存されたコンテナイメージは、IAMによってアクセス制御の管理・監視が可能です。外部のリポジトリを利用する場合に比べて、AWS内でコンテナイメージへのアクセス権限の管理ができる点もメリットと言えるでしょう。
【関連記事】
▶AWSのIAMは、AWSサービスとリソースへのアクセス管理とアクセス分析が可能
AWS ECRの使い方
AWSのECRは、AWSマネジメントコンソールから管理画面を呼び出すことができます。
【関連記事】
▶AWSを集中管理したい!AWS マネジメントコンソールを使いこなそう!
AWSマネジメントコンソールの検索窓に「ECR」と入力し、「レジストリ Elastic Container Registstryの機能」をクリックします。
Amazon Elastic Container Registtryの使い方が表示されるので、「リポジトリの作成」をクリックします。
「リポジトリを作成」画面が表示されます。プライベート(非公開で使用)、パブリック(公開して使用)の設定、リポジトリ名、タグのイミュータビリティ(コンテナイメージにつけたタグが同一の場合に上書きするか、別ファイルとして保存するか)、イメージスキャン、暗号化の設定をおこないます。
画面を下にスクロールさせ、「リポジトリの作成」をクリックします。
リポジトリが作成されます。作成済みのリポジトリは、Amazon Container Servicesの「Repositories」にて確認できます。ここでは、プライベートリポジトリで「myrepo」を作成しました。Private、Public、リポジトリ名、URL、各種設定が表示されています。
リポジトリ名をクリックすると、リポジトリに登録されているコンテナイメージが表示されます。
コンテナイメージは、AWS CLI(Linux、Mac OS)か、PowerShellムケAWS Tools(Windows)を使ってプッシュすることでリポジトリへの登録が可能です。具体的なコマンドは「プッシュコマンドの表示」をクリックすると表示されます。
【関連記事】
▶AWS CLIのインストール方法 AWSアクセスキーの登録と疎通確認
例えば、Linux向けにAWS CLIのコマンド+dockerコマンドでイメージをプッシュするには、以下のコマンドを実行します。
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 252883271295.dkr.ecr.us-east-1.amazonaws.com docker build -t myrepo . docker tag myrepo:latest 252883271295.dkr.ecr.us-east-1.amazonaws.com/myrepo:latest docker push 252883271295.dkr.ecr.us-east-1.amazonaws.com/myrepo:latest
Windows向けにPowerShellのAWS Tools+dockerでプッシュを行なう場合は、以下のようになります。
(Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin 252883271295.dkr.ecr.us-east-1.amazonaws.com docker build -t myrepo . docker tag myrepo:latest 252883271295.dkr.ecr.us-east-1.amazonaws.com/myrepo:latest docker push 252883271295.dkr.ecr.us-east-1.amazonaws.com/myrepo:latest
AWS ECRの料金
Elastic Container Registryの利用料金は、リージョンが米国東部(オハイオ)の場合、ストレージ料金が1GBあたり0.1ドル、AWSサービス内でコンテナイメージを使う(データ受信)場合はデータ転送費用は0円です。具体的には、AWS Pricing Calculatorで、ストレージ設定とデータ転送(受信、送信)のデータ量を指定すると見積もりを取得できまs.
【関連記事】
▶AWSの見積もりは、AWS Pricing Calculatorで自動計算 ユースケースから流用も可能
ストレージ容量10GBのレジストリを利用した場合の利用料金は、以下のようになります。
- ストレージ
- 10GB 1.00USD
- データ受信
- すべてのデータ受信 0.00USD/GB
- データ送信
- 1 GB/月まで 0.00USD/GB
- 次の 9.999 TB/月 0.09USD/GB
- 次の 40 TB/月 0.085USD/GB
- 次の 100 TB/月 0.07USD/GB
- 150 TB/月超 0.05USD/GB
データ送信には、リージョン外のデータ転送には、月に1GB以上の転送の際に0.09USD/GBの料金がかかります。オンプレミスサイトやクロスリージョンでAWS ECRのコンテナを利用するような場合は、転送量によっては費用が発生することになります。
AWS ECRのまとめ
- AWSのECR(Elastic Container Registry)は、AWSのコンテナイメージのリポジトリサービス
- コンテナイメージ実体は高可用性のAmazon S3に保存され、IAMにてアクセス権限の管理が可能
- 利用料金はストレージが1GBあたり0.1ドル、同一リージョンのAWS内でコンテナを使う場合は無料