ECR
ECRはAmazon EC2 Container Registryの略で、docker hubやquay.ioと同じdockerイメージのregistryです。
ここでは、自分のnginxイメージをECRにpushして使ってみます。
準備
aws cliのインストール
$ sudo easy_install pip
$ sudo pip install awscli --ignore-installed six
credentialの設定
$ aws configure
IAMでユーザー作ってcredential.csvダウンロード
$ aws configure
AWS Access Key ID [None]: AK*******
AWS Secret Access Key [None]:***************
Default region name [None]: us-east-1
Default output format [None]: json
ECSからregistryを選択
ECSへの初回アクセス時に「ECSで何したい?」みたいなこと聞かれるのでimageをregistryしたいです。みたいなチェックボックスのみチェックして先に進みます。
進んだ先にある「create repogitory」をクリックして名前を入力して先に進めば指示が出てきます。だいたいこの指示に従えば良いです。
イメージをpushする
次にログインコマンドを得ます。
$ aws ecr get-login --region us-east-1
docker login -u AWS -p AQECAHhwm0YaISJeRtJm5n1G6uqeekXuoXXPe5UFce9Rq8/14wAAAuUwggLhBgkqhkiG9w0BBwagggLSMIICzgIBADCCAscGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMNB*****d37hSvJ5bYCU82qmBnuV*****0sy9YUzAYEU4HcqZfE84gQAtajmQkMSEyAyMg= -e none https://*****.dkr.ecr.us-east-1.amazonaws.com
ここで出たdocker login
コマンドをコピペして実行
そしてnginxのDockerfileがあるディレクトリまで移動してビルドします。
$ docker build -t dev_nginx .
そのあと作ったイメージにタグ付けします
$ docker tag dev_nginx:latest ****.dkr.ecr.us-east-1.amazonaws.com/dev_nginx:latest
最後にpushすれば完了です
$ docker push *****.dkr.ecr.us-east-1.amazonaws.com/dev_nginx:latest
The push refers to a repository [******.dkr.ecr.us-east-1.amazonaws.com/dev_nginx]
e7a4abc5075e: Pushed
5f70abc8a086: Pushed
4b26abc9a475: Pushed
ccb1abcd3fb7: Pushed
e387abcd2065: Pushed
63babc221cce: Pushed
e02dabc53481: Pushed
dea2e4abcd29: Pushed
latest: digest: sha256:******************* size: 10704
docker-composeへの設定
docker-composeのimageにpushしたイメージを以下のような形式で書けば完了です。
# docker-compose.yml
nginx:
image: *****.dkr.ecr.us-east-1.amazonaws.com/dev_nginx:latest
.
.
.
これでbuildし直してdocker-compose up
して起動を確認したら完了です。
出たエラー
An error occurred (AccessDeniedException) when calling the GetAuthorizationToken
IAMのECRの権限が足りません。追加しましょう。