docker コマンドと aws コマンド (CLI) を使って、手元の Docker イメージを Elastic Container Registry (ECR) に保存して、とりあえずローカルで実行してみます。(2019年5月現在)
- docker コマンド → https://qiita.com/kawanet/items/30c1acd4bc90ee0e535d
- awscli コマンド → Mac なら
brew install awscli
でインストールできる。
リポジトリの準備
先に AmazonEC2ContainerRegistryFullAccess 権限のついた IAM ユーザのアクセスキー ID・シークレットアクセスキーを取得しておきます。
# アクセスキー ID
export AWS_ACCESS_KEY_ID="xxxxxxxxxxxxxxxxxxxx"
# シークレットアクセスキー
export AWS_SECRET_ACCESS_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# 東京リージョン
export AWS_DEFAULT_REGION="ap-northeast-1"
# Docker を認証する → 「Login Succeeded」と表示されれば成功
aws ecr get-login --no-include-email | sh -v
# ECR 上にリポジトリを作る
aws ecr create-repository --repository-name myalpine
# ECR 上にリポジトリを消す
aws ecr delete-repository --repository-name myalpine
Docker イメージをアップロードする
# 適当なイメージを Docker Hub からダウンロードする
docker pull alpine:latest
# ローカルのイメージの一覧を確認する
docker images
# リポジトリにプッシュするイメージにタグを付ける
# `xxxxxxxxxxx` の部分は、AWS のアカウント ID です。
# `ap-northeast-1` の部分は、リージョン(東京)です。
docker tag alpine:latest xxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/myalpine:latest
# 間違えたら、タグを消す(リージョンの指定を間違えた等)
docker image list
docker image rm xxxxxxxxxxx.dkr.ecr.wrong-region.amazonaws.com/myalpine:latest
# ECR にイメージをプッシュする。
# 「no basic auth credentials」が出たら認証の問題。リージョンが違うとか。
docker push xxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/myalpine:latest
# プッシュした ECR のイメージを確認する
aws ecr list-images --repository-name myalpine
# ローカル側のタグをいちど消しておく
docker image rm -f xxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/myalpine:latest
# ローカル側のタグが削除されたのを確認
docker image list
ECR からイメージをダウンロードして実行する
# ECR 上のイメージをそのまま実行してみる
docker run -it xxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/myalpine:latest sh
# ECR からイメージをプルする
docker image pull xxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/myalpine:latest
# ローカルのイメージが復活したことを確認する
docker image list
# ECR 上のイメージの削除
aws ecr batch-delete-image --repository-name myalpine --image-ids imageTag=latest
# ECR 上のリポジトリの削除
aws ecr delete-repository --repository-name myalpine
参考 → https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/ECR_AWSCLI.html