AWS ECR を使ってみる

2020/03/26

AWS ECR(Elastic Container Repository)を使ってみます。

Amazon Elastic Container Registry

ECRは、Dockerコンテナイメージを保存するレジストリサービスで、DockerHub の AWS版のような感じです。
AWS ECS 、AWS fargate と併用してコンテナを用いたサーバを運用します。

料金

2020/3時点で、以下の枠で無料のようです

Amazon Elastic Container Registry の料金

  • イメージ:500Mまで
  • 転送量:1G/月

リポジトリ作成

マネジメントコンソールもしくは、AWS Client でリポジトリを作成します。

マネジメントコンソールでリポジトリ作成する場合

使用方法にアクセス

 

リポジトリ名を入力、プッシュ時にスキャンを有効にして、リポジトリを作成

 

リポジトリが作成される

AWS CLI でリポジトリ作成する場合

aws コマンドでも、ECR リポジトリを作成できます。


$ aws ecr create-repository --repository-name php

AWS CLI のプロファイル追加

AWS Client を利用して ECRのプロファイルを作成します。

リージョンは東京(ap-northeast-1)としています。


$ aws configure --profile ecr
AWS Access Key ID [None]: AIM アカウント ID
AWS Secret Access Key [None]: AIM シークレットキー
Default region name [None]: ap-northeast-1
Default output format [None]: 

AWS CLI 用の環境変数設定

AWS ECR のリージョン(東京)を環境変数に設定(.bash_profile)します。


$ vi .bash_profile

export AWS_REGION=ap-northeast-1

環境確認


$ source .bash_profile
$ echo $AWS_REGION
ap-northeast-1

Dockerfile 作成


FROM amazonlinux:2

SHELL ["/bin/bash", "-c"]

ARG PROJECT_DIR="projects"
WORKDIR $PROJECT_DIR

CMD ["/bin/bash"]

AWS ECR ログイン


$ aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin xxxxxx

Dockerイメージビルド


$ docker build -t linux2 .

Dockerイメージタグ付け


$ docker tag linux2:latest 517704528142.dkr.ecr.ap-northeast-1.amazonaws.com/linux2:latest

AWS ECR に Dockerイメージをプッシュ


$ docker push xxxx.amazonaws.com/linux2:latest

イメージが作成されたのを確認

AWS ECR リポジトリ確認


$ aws ecr describe-repositories --region ${AWS_REGION}
{
    "repository": {
        "registryId": "xxxxxxxxxxxx",
        "repositoryName": "linux2",
        "repositoryArn": "arn:aws:ecr:ap-northeast-1:xxxxxxxxxxxx:repository/linux2",
            "createdAt": 1585197107.0,
            "imageTagMutability": "MUTABLE",
            "imageScanningConfiguration": {
                "scanOnPush": true
            }
    }
}

AWS ECR イメージ確認

リポジトリ名一覧


$ aws ecr describe-repositories --query 'repositories[].repositoryName'

リポジトリを指定した詳細


$ aws ecr list-images --repository-name linux2 --region=${AWS_REGION}

 

AWS ECR イメージ削除


$ aws ecr batch-delete-image --repository-name linux2 --image-ids imageTag=v2.0
カスタムのペジネーションを作る
2020/03/30
node-sass を使って sass をコンパイルする
2020/03/30
Log ファサードでSQLログを分離して書き出す
2020/03/29
いちから始める Docker - 複数のコンテナを使う - (2020年)
2020/03/28
いちから始める Docker - docker-compose を使う - (2020年)
2020/03/28
AWS ECR を使ってみる
2020/03/26
Laravel7 でマルチ認証
2020/03/24
Mac に AWS Client を設定する
2020/03/22
Laravel 7 リリース
2020/03/19
v-html でHTML表示する
2020/03/17
Laravel で Vue コンポーネントを使う
2020/03/15
Laravel で Nuxt.js を使ってみる(Docker環境)
2020/03/15
いちから始める Docker -コンテナをビルド- (2020年)
2020/03/12
いちから始める Docker -起動してみる- (2020年)
2020/03/11
Mac で MySQL(8系)
2020/03/03
composer で vendor がインストールできない
2020/03/02
Eloquent の日付を Carbon で扱う
2020/03/01
webpack 4 入門(npm編)
2020/02/27
[Mac]容量を減らす
2020/02/14
DIコンテナはじめ
2020/02/08
freee SDKを Laravel で使ってみる
2020/02/06
freee API を使ってみる
2020/02/06
Segueを利用しない画面遷移
2020/02/01
Xcode11.3 で XVim2 を利用する
2020/01/31
Codable で JSONを読み込み
2020/01/30
Webpack入門(yarn編)
2020/01/24
MacからLaradock PostgreSQLで接続エラー
2020/01/21
Dockerで不要なコンテナ・イメージを削除
2020/01/18
Mac で Laradock の構築
2020/01/18
yarn インストール&プロジェクト作成
2020/01/12
Laravel 6.x 構築(Homestead編)
2020/01/12
Composer インストール
2020/01/12
nvm インストール
2020/01/12
npm install が Mac でエラー
2020/01/05
HTMLタグでカーソルが同時処理(ミラーリング)されてしまう
2020/01/04
DI(依存性注入)
2019/12/30
[Ubuntu]Let's Encryptで無料の証明書を利用する
2019/12/22
[Apache]Apache2.4のアクセス制限が変更
2019/12/22
[Ubuntu]rootのログインとsudo権限追加
2019/12/22
タミヤ マイコンロボット工作セットをMacに接続してみた
2019/12/21
pgAdimn4 でブラウザで開けなくなる
2019/09/28
Java8 を HomebrewとjEnvで構築
2019/09/28
Android Studio環境構築 2019
2019/09/24
ロケールの再構築
2019/08/27
vagrant グループに Apacheを追加
2019/08/27
Linux2 Apache2 + PHP7.3 + PostgreSQL10
2019/08/25
Anadondaの削除
2019/08/25
[Mac]初期設定メモ(CentOS)
2019/08/21
[Mac]PostgreSQL起動
2019/08/20
[Debian]Node.js安定板インストール
2019/08/09