Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@TakashiOshikawa

メモ ECR ローカルMacからAWS CLIコマンドでリポジトリ作成/イメージpush/リポジトリ削除まで

More than 1 year has passed since last update.

やること

  • ローカルのMacからAWS CLIでECRにリポジトリを作成し、ビルドしたdocker imageをpush
  • AWSマネジメントコンソールでpushされたイメージ確認
  • AWS CLIでイメージの削除、リポジトリの削除

基本的にやってることはAmazon ECRにおけるdockerの基本と同じ
DockerHubとGoogleCloud Container Registryにしかイメージ上げたことなかったのでECRにも上げてみる

環境

  • Mac
  • Dockerインストール済み
  • aws cli使える(configureまで済ませてある)
  • AWSマネジメントコンソールにログインできる

作業

AWSマネジメントコンソールにログイン

まずはAWSコンソールにログインしてECSと検索する
左側にAmazon ECR リポジトリという項目があるので遷移
作ったリポジトリ一覧が表示されるか空の状態になってる

ローカルからAWS CLIでリポジトリを作成する

おもむろにコマンドをキメる

aws ecr create-repository --region リージョン --repository-name リポジトリ名

リージョンが東京でいいならap-northeast-1にする

今回は10秒毎にechoを繰り返すalpineイメージをpushするのでリポジトリ名はechoalpineとした

aws ecr create-repository --region ap-northeast-1 --repository-name echoalpine

AWSコンソールから確認してリポジトリが作成されていればOK

ECRにpushするdockerイメージのビルド (ただpullしたのでもok)

ここはわざわざビルドしなくてもdocker pull alpineとかで取得したイメージをpushしてもいいけれどechoalpineという名前なのでビルドする

適当にechoalpine イメージ用のディレクトリを作成してその中にDockerfileecho.shというファイルを作成する

mkdir echoalpine
cd echoalpine
touch Dockerfile
touch echo.sh
Dockerfile
FROM alpine:3.9.3

ADD ./echo.sh /tmp/echo.sh

CMD /tmp/echo.sh
echo.sh
#!/bin/ash

count=0
while true
do
    echo "my echoalpine container!! 1.0.0"
    sleep 10
    count=$(expr $count + 1)
    if [ $count -ge 10 ]; then
      echo "kiss of death..."
      exit
    fi
done

ビルドする

docker build -t echoalpine ./

動作確認(10回echoして終了、後のECS再起動確認のため)

docker run --rm -it --name echoalpine echoalpine

ECRにpushするイメージのタグ付け

先程作成したイメージもしくはpullしたイメージをECRのリポジトリにpushするためにtag付けする
形式は以下

docker tag ターゲットイメージ:タグ AWSアカウントID.dkr.ecr.ECRのリージョン.amazonaws.com/ECRリポジトリ名:ECRリポジトリに登録するタグ

echoalpineをタグ付けしたコマンドはこれ
AWSアカウントIDは適宜変更

docker tag echoalpine:latest xxxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/echoalpine:1.0.0

タグ付けしたイメージをリポジトリにpush

まずはECRへのpush権限をdockerに与えるためにawsコマンドを実行

aws ecr get-login --region リージョン --no-include-email
aws ecr get-login --region ap-northeast-1 --no-include-email

> docker login -u AWS -p zzzzzzz== https://xxxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com

dockerログイン用コマンドが出力されるのでそれを実行するとECRのリポジトリにpush出来るようになる
権限の有効期限は12時間らしい

先程タグ付けしたイメージをpushする

docker push xxxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/echoalpine:1.0.0

AWSコンソールの作成したリポジトリを選択してイメージを確認すると1.0.0のイメージが上がっているはず

pullも出来る

docker pull xxxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/echoalpine:1.0.0

作成したイメージとリポジトリの削除

ECRのリポジトリはAWS CLIからだと--forceオプションを付けないと削除できない
イメージを削除してからリポジトリを削除してみる(--forceで削除しないのは誤ってリポジトリを削除しないように使わないようにしている)

イメージの削除はAWS CLIから削除できる

aws ecr batch-delete-image --region リージョン --repository-name リポジトリ名 --image-ids imageTag=バージョン(タグ)
aws ecr batch-delete-image --region ap-northeast-1 --repository-name echoalpine --image-ids imageTag=1.0.0

イメージが消えたのをコンソールから確認したらリポジトリを削除する

aws ecr delete-repository --region リージョン --repository-name リポジトリ名 (--force)
aws ecr delete-repository --region ap-northeast-1 --repository-name echoalpine

リポジトリが消えたのを確認する

まとめ

aws ecr get-loginでECR用の権限を得る以外いつものdockerとあまり変わらない
ECSとかCodeBuildとかで使っていきたい

参考

Amazon ECRにおけるdockerの基本

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?