5
3

More than 3 years have passed since last update.

Amazon ECRのDockerイメージをローカルにpull、pushする

Last updated at Posted at 2021-01-05

はじめに

Amazon ECR(Elastic Container Registry)のDockerイメージを取得するには事前にECRレジストリに対してDockerクライアントを認証させる必要があります。
本記事はDockerクライアントのレジストリ認証の手順についてまとめたものとなります。

Amazon ECR では、ユーザーがレジストリに対して認証したり、AWS ECRレポジトリとの間でイメージをプッシュまたはプルしたりできるためには、事前に IAM ポリシーを通じて ecr:GetAuthorizationToken API へのアクセス権限を許可されている必要があります。
イメージのプル - Amazon ECR

使用環境とバージョン

  • macOS Catalina
  • aws-cli/2.0.28
  • Docker version 19.03.13

記事の対象

  • ある程度AWSとDockerの知識がある方
  • ECSもしくはEKSを利用してアプリケーションを作成している方

事前準備

  • AWS CLIを利用できること
  • IAMユーザもしくはスイッチロール先にecr:GetAuthorizationToken権限が付与されていること ※1

※1 最低限の権限で良ければAmazonEC2ContainerRegistryReadOnlyポリシーをアタッチしておけば大丈夫です。
Amazon ECR 管理ポリシー - Amazon ECR

手順

AWS CLIでECRのログインパスワードを取得し、取得したログインパスワード使ってdocker loginコマンドでログインします。

$ aws ecr get-login-password --region ap-northeast-1 \
    | docker login --username AWS --password-stdin {aws_account_id}.dkr.ecr.{region}.amazonaws.com

ログイン後は通常のdocker pullでローカルにDockerイメージを取得できます。

$ docker pull {aws_account_id}.dkr.ecr.{region}.amazonaws.com/demo-api:latest

docker pullの対象URIはECRコンソールから確認できます。
スクリーンショット 2020-11-05 12.10.09.png

[補足] Dockerイメージを Amazon ECR リポジトリにpushするには

Dockerイメージをpushする場合にもpullと同様に事前にECRレジストリに対してDockerクライアントを認証させる必要があります。
事前に本記事の手順に従って事前に認証を行ってください。

Amazon ECRリポジトリの作成

puah先となるECRリポジトリを事前に作成する必要があります。
AWSコンソールもしくは以下のAWC CLIにてECRリポジトリを作成します。

$ aws ecr create-repository
    --repository-name {aws_account_id}.dkr.ecr.{region}.amazonaws.com/demo-api

create-repository — AWS CLI 1.18.197 Command Reference

dockerイメージ準備

pushしたいdockerイメージを確認します。

$ docker images

REPOSITORY                                                   TAG                 IMAGE ID            CREATED             SIZE
demo-api                                                     latest              9ec9f9c8cabf        5 months ago        402MB
...

次にdockerイメージをECRにpushするためにタグ付けします。

$ docker tag 9ec9f9c8cabf {aws_account_id}.dkr.ecr.{region}.amazonaws.com/demo-api

REPOSITORY                                                   TAG                 IMAGE ID            CREATED             SIZE
demo-api                                                     latest              9ec9f9c8cabf        5 months ago        402MB
+ {aws_account_id}.dkr.ecr.{region}.amazonaws.com/demo-api   latest              5acde687200b        5 months ago        402MB
...

これで準備が整ったのでdocker push コマンドを使用してイメージをpushできます。

docker push {aws_account_id}.dkr.ecr.{region}.amazonaws.com/demo-api

参考記事

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3