開発1GのOです。
早いものでAWS&docker環境構築ももう3回目となりました。
といってもまだまだ折り返しくらいなのでもう少し環境構築も続きそうです。
さて今回はECRのdockerイメージをローカル環境にpullする方法についてやっていきたいと思います。
ローカル環境についてはWindows10 Proであることを想定しています
例によってECRにあるdockerイメージを使うのでECRにdockerイメージをpushする方法がわからない方は第2回の記事を参考にしてください
前回までは結構長かったので今回は短めに行こうかと思います。
事前準備
さて本題に入る前にいくつか準備しておく必要があります。 必要な準備は以下の通りです。
- ・ECRのリポジトリにdockerイメージをpushしておく
- ・dockerをローカル環境にインストールしておく ※今回はdocker for windowsを使用しています
- ・ECRにアクセス可能なユーザーのアクセスキーIDとシークレットキーIDを用意しておく
AWS CLI 準備
ECRにローカル環境からアクセスするためにAWS CLIを使用します
そのためAWS CLIをインストールする必要があります。
インストール方法について下手に記載にするよりも公式の手順に従ったほうが確実なので以下のサイトの手順に従ってください。
インストールが完了したらコマンドプロンプトから以下のコマンドを入力してください
===============
aws configure
===============
入力した場合、いくつか入力する必要があります。入力内容は以下の通りです。
- AWS Access Key ID 用意しておいたアクセスキーのID
- AWS Secret Access Key 用意しておいたシークレットアクセスキーの値
- Default region name ap-northeast-1
- Default output format json

リージョンはそれぞれ利用するリージョンを指定してください。 ここでは東京リージョンを使用しています。
・ローカル環境からECRにアクセスする方法
それではローカル環境からECRにアクセスする方法について解説していきます。 まずdockerにAWSログイン情報を付与する必要があるのでコマンドプロンプトで以下のコマンドを実行してください
===========================================================================
aws ecr get-login --no-include-email --region ap-northeast-1
===========================================================================
そうすると以下のようなコマンドが表示されます。
aws configure で登録したIDのユーザーに権限がない場合はここで失敗します。
※以下の画像は例として自分の環境で実行した際に表示されたコマンドの一部です

表示されたコマンドをコピーして実行してください。 成功すれば以下のようなメッセージが表示されます

自分の環境依存なのかどうかはわかりませんがここでログインがタイムアウトする場合はdockerの再起動を試してみてください。 そして注意点なのですがこのログイン情報は12時間しか保持されないようです。 なので翌日とかにまた接続したい場合は再度ログインコマンドの取得からやり直す必要があります。
dockerでECSからイメージをpullする
それではいよいよECSからイメージを取得していきたいと思います。 といってイメージのURIを打ち込むだけです。 コマンドは以下のようになるかと思います
======================================================================================
docker pull xxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/xxxxxx:xxxxx
======================================================================================
イメージのURLはECRのイメージ一覧から参照できます 下記画像の「Image URI」の部分です。

ちなみにymlファイルから指定したい場合は以下のように書きます。
======================================================================================
version: '3'
services:
AWSTEST:
image: xxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/xxxxxx:xxxxx
volumes:
- ./src:/src
ports:
- "8000:80"
======================================================================================
おわりに
さて今回はECRからイメージを取得する方法を紹介してきました。
今回はwindowsからアクセスしましたがほぼ同じ方法でEC2のインスタンスからも取得できるのでE2にdocker環境を構築することができるようになります。
さて次回は少しdockerから離れてPHPのソースコードをCodeCommitからEC2にデプロイする方法について紹介したいと思います。