ECRにdockerイメージを登録してみる

今回AWSのECRを利用してコンテナイメージを登録してみたいと思います。
ECRを利用することでコンテナイメージを皆と共有したり、デプロイしたりすることができます。
サンプルとしてApacheのコンテナを準備してやってみます。

ECRとは

Amazon Elastic Container Registry (ECR) はコンテナのイメージを保存・共有できるサービスです。Amazon Elastic Container Service (ECS)やAmazon Elastic Kubernetes Service (EKS)などと連携して保存したイメージからデプロイすることができます。

前提知識

  • dockerの基本的な知識があること

実施した環境

  • CentOS 7.9
  • dockerがインストールされていること(バージョン 20.10.3)
  • aws cliがインストールされていること(バージョン2.1.25)

実行手順

dockerコンテナを準備

まずはApacheのイメージを公式レジストリから取ってきます。

# docker pull httpd

docker imagesでイメージが追加されたのが分かります。

# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
httpd        latest    683a7aad17d3   3 weeks ago   138MB

docker runでコンテナを起動し、ブラウザからhttp://localhostにアクセスすると、It works!と表示されるはずです

docker run -rm -p 80:80 httpd

このイメージをECRに登録します。

ECRにリポジトリを作成

AWSマネジメントコンソールからECRの画面を開きます。
リポジトリを作成」ボタンをクリックします。

f:id:d-akmts:20210210132943p:plain
ECR
可視性設定に「プライベート」を選択、リポジトリ名に「httpd」を入力します。
画面下部の「リポジトリを作成」ボタンをクリックします。
f:id:d-akmts:20210210133658p:plain
リポジトリを作成
作成したリポジトリが一覧に追加されました。
リポジトリを選択し画面上部の「プッシュコマンドの表示」をクリックします。
f:id:d-akmts:20210210134238p:plain
プッシュコマンドを表示
このリポジトリにイメージを登録するためのコマンドが4つ表示されます。
4つのコマンドをメモしておきましょう。
f:id:d-akmts:20210210134550p:plain
プッシュコマンド

リポジトリにプッシュ

メモした4つのコマンドを実行していきます。
1つ目のコマンドでAWSへのdockerクライアント認証を行います。

aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin xxx.ecr.ap-northeast-1.amazonaws.com

2つ目のコマンドでビルドします。今回はApacheのイメージをそのままECRに登録するので実施不要です。

docker build -t httpd .

3つ目のコマンドECRのhttpdリポジトリについてlatestというタグ付けを行います。
タグはv1, v2のようにバージョンとすると運用しやすくなります。

docker tag httpd:latest xxx.ecr.ap-northeast-1.amazonaws.com/httpd:latest

4つ目のコマンドで作成したタグをECRにプッシュします。

docker push xxx.ecr.ap-northeast-1.amazonaws.com/httpd:latest

ECRの画面を確認するとプッシュしたタグが追加されているのが分かります。

f:id:d-akmts:20210210145932p:plain
プッシュ後

参考