AmazonECRで自分で作成したDockerfileのイメージを管理する

概要

AmazonECR(Amazon Elastic Container Registry)の使い方メモ。

公式ドキュメント

パブリックなイメージだったら、hub.docker.comで良いと思うが、会社で使うイメージはプライベートなリポジトリが必要である。
Dockerが公式に出しているregistryコンテナを使えば、プライベートリポジトリを管理できるようだが、AWSではECRというマネージドのサービスがある。
今回はECRにリポジトリを作成して、イメージをPushする所まで。

リポジトリ作成

まず、AWSでECSの画面を表示し、リポジトリを選択。

次にリポジトリを作成を選択。

任意のリポジトリ名を設定する。role単位(example-app,example-phpなど)で作成。

これで作成完了。超簡単。画面下にイメージプッシュの手順が記載されている。

イメージのプッシュ

まずはECRへログインする。もちろん、自分のアカウントがECRにアクセスできる権限でないと駄目。

$(aws ecr --profile ここにプロファイル名 get-login --no-include-email --region ap-northeast-1)
Login Succeeded

手順だとprofile名抜けているので、初めてだとアクセスできなくて詰まるかもしれない。

自分で作成したDockerfileをビルドする。

docker build -t inamuu-test01 .
Sending build context to Docker daemon   7.68kB
Step 1/5 : From nginx:latest
 ---> 71c43202b8ac
Step 2/5 : MAINTAINER inamuu
 ---> Using cache
 ---> 6ad1e68f5596
Step 3/5 : COPY ./var/www/html /var/www/html
 ---> Using cache
 ---> 8fa5219e2db1
Step 4/5 : COPY ./etc/nginx/ /etc/nginx/
 ---> Using cache
 ---> 86b8cc1b1cc8
Step 5/5 : EXPOSE 80
 ---> Using cache
 ---> 984f04c8d26a
Successfully built 984f04c8d26a
Successfully tagged inamuu-test01:latest

プッシュするためにタグをつける。タグは手順に書いてある。

$ docker tag inamuu-test01:latest XXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/inamuu-test01:latest
$ docker images
REPOSITORY                                                        TAG                 IMAGE ID            CREATED             SIZE
XXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/inamuu-test01   latest              8fcd7e8d2cfb        36 seconds ago      109MB
inamuu-test01                                                     latest              8fcd7e8d2cfb        36 seconds ago      109MB

イメージをプッシュ。

docker push XXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/inamuu-test01:latest
The push refers to repository [XXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/inamuu-test01]
77ed14bcd80c: Pushed
f1c347200dc3: Pushed
64ef7c2d456f: Pushed
7f2cffb520ed: Pushed
cdb3f9544e4c: Pushed
latest: digest: sha256:bb332489ee40c0dbb4deebba45ec87eaed6007f4469169a0f0af5ffcb77f203a size: 1362

イメージがプッシュされていることを確認。

これで、ECRにログインをすれば、イメージをダウンロードできるようになる。

まとめ

過去にhub.docker.comを使ったことがあるので、この辺の手順はdocker-cliを使ってできる点において、全く変わらずにできて便利だなぁと思う。
ただ、hub.docker.comはGithubのリポジトリと連携して、buildまでやってくれるので、そこはECRだけではできず、codebuildなどが必要そう。
その辺はまた検証して、ブログにアップしながら知識を深めていこうと思う。