AWS CLIをインストールし、ECRへDockerイメージをpushする手順

インフラ

こんにちは。Enjoy IT Life管理人の仁科(@nishina555)です。

AWS上にDocker環境を構築するにあたり、まずやるべきことがDockerリポジトリの作成です。
今回はAWSのDockerコンテナレジストリであるECRの使い方について紹介をします。

今回のゴール
  • AWS CLIの初回セットアップを完了させ、awsコマンドが実行できる環境を構築する
  • ローカルでビルドしたDockerイメージをECRへpushする

下準備: 検証用のDockerファイルを用意する

ECRへpushする検証用のDockerfileを準備します。

今回はWordPressのイメージwordpress:5.4.2-php7.3-apacheをベースに、wp-sampleという名前のDockerイメージを用意しました。

Dockerfile

FROM wordpress:5.2.2-php7.3-apache
WORKDIR /var/www/html
### Dockerファイルがあるディレクトリで以下を実行。
$ docker build -t wp-sample .

### Dockerイメージ一覧
$ docker images
→ wp-sampleが作成されていればOK

REPOSITORY  TAG      MAGE ID            CREATED             SIZE
wp-sample   latest   997228f38b59        2 hours ago         598MB

AWS CLIをインストールと初回セットアップを行う

ECRへDockerイメージをpusuするにはAWS CLIを利用するため、事前にAWS CLIをインストールしておく必要があります。 ここではAWS CLIの初期設定の手順について紹介します。

まず、AWS『AWS CLI のインストール』を参考にAWS CLIをインストールします。

AWS CLIを利用するにはユーザー認証を行う必要があります。

認証にはアクセスキーとシークレットキーが必要になるため作成します。
IAMダッシュボードを開き、『ユーザー』→『認証情報』→『アクセスキーの作成』を選択します。

しばらくするとアクセスキーとシークレットキーのペアが画面に表示されるので控えておきます。
aws configureを実行し、認証を行います。

$ aws configure

### 取得したアクセスキーを入力
> AWS Access Key ID [None]:

### 取得したシークレットキーを入力
> AWS Secret Access Key [None]:

### 以下は必要に応じて回答
> Default region name [None]:
> Default output format [None]:

これで認証は完了です。

–profileオプションを利用することで複数のcredentials情報を管理することもできます。

AWS CLIを利用してECRへDockerイメージをpushする

ECRとはElastic Container Resistoryの略で、Dockerイメージを管理する機能です。
ECRを利用することにより自作のDockerイメージをAWS上で管理できます。

ECRのダッシュボードの『使用方法』を選択します。

リポジトリ名を入力し、『リポジトリを作成』を選択します。リポジトリ名がDockerのイメージ名になります。今回は wp-sampleというリポジトリ名にしました。

『イメージスキャンの設定』を有効にするとDockerイメージの脆弱性を自動でチェックしてくれます。

リポジトリ名をチェックし、『プッシュコマンドの表示』を選択するとコマンドが表示されます。

コマンドには以下のようなDockerイメージをECRにpushする手順が記載されています。
手順に従い、ローカルでDockerイメージをビルドし、ECRへpushします。

### 認証トークンを取得し、レジストリに対して Dockerクライアントを認証
$ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin xxx.dkr.ecr.ap-northeast-1.amazonaws.com
→ 『Login Succeeded』と表示されればOK.

### DockerfileがあるディレクトリでDockerイメージのビルドを実行
$ docker build -t wp-sample .
# -t: イメージのタグ

### ローカルの「wp-sample:latest」イメージを、ECRの「wp-sample」リポジトリの「latest」とタグ付け
$ docker tag wp-sample:latest xxx.dkr.ecr.ap-northeast-1.amazonaws.com/wp-sample:latest

### タグ付けされたイメージの確認
$ docker images

REPOSITORY                                           TAG        IMAGE ID            CREATED             SIZE
wp-sample                                            latest     997228f38b59        About an hour ago   598MB
xxx.dkr.ecr.ap-northeast-1.amazonaws.com/wp-sample   latest     997228f38b59        About an hour ago   598MB
→ ECRのリポジトリが登録されていればOK

### ECRにイメージをpush
$ docker push xxx.dkr.ecr.ap-northeast-1.amazonaws.com/wp-sample:latest

コマンド実行後、ECRにイメージが保存されていればOKです。

なお、Unable to locate credentials. You can configure credentials by running "aws configure"というエラーメッセージが表示された場合はAWS CLIのユーザー認証が完了していない可能性があります。

前項の手順を参考にユーザー認証をまずは完了させてください。

まとめ

以上で、ローカルで作成したDockerイメージをECRへpushする手順の紹介を終わります。

AWS CLIを利用してECRへDockerイメージをpusuする手順
  1. IAMユーザーのアクセスキーとシークレットキーを作成
  2. AWS CLIをインストール
  3. キーペアを利用してAWS CLIのユーザー認証を行う
  4. ECRにリポジトリを作成
  5. プッシュコマンドを実行

この記事がいいなと思いましたらツイッター(@nishina555)のフォローもよろしくお願いします!

AWSオススメ参考書