ECRにログインする
awsコマンドでECRにログインするためのdockerの認証情報を取得してログインします。
$(aws ecr get-login --no-include-email)
実行すると認証用のdockerコマンドの文字列(docker login ....)が出力されるので、それをシェルのコマンド置換"$(...)"を利用してそのまま実行してdockerログインします。
awsコマンドの"aws ecr create-repository"でECRのリポジトリを作成します。その際に後続のpushで利用するので、 "repositoryUri"を控えておきます。
aws ecr create-repository --repository-name sample-app
{
"repository": {
"registryId": "xxxxxxxxxxxx",
"repositoryName": "sample-app",
"repositoryArn": "arn:aws:ecr:ap-northeast-1:xxxxxxxxxxxx:repository/sample-app",
"createdAt": xxxxxxxxxxxx.0,
"repositoryUri": "xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/sample-app"
}
}
ECRにイメージをpushする
(1)dockerイメージの確認
"docker images"コマンドでイメージ一覧を取得しpushするdockerイメージを確認する。今回は、sample-appをpushする。
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sample-app latest 688a2109cc33 23 minutes ago 368MB
php 7.0-apache 8e2efe9163dd 10 days ago 368MB
centos latest 75835a67d134 2 weeks ago 200MB
(2)push用のtag付け
リポジトリにプッシュするイメージにタグを付けます。 "sample-app:latest"を"[repositoryUri]:latest"にタグ付けします。
docker tag sample-app:latest xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/sample-app:latest
(3)ECRへのdockerイメージpush
作成したタグを利用してECRのレポジトリにpushします。
docker push xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/sample-app:latest
(4)ECRレポジトリのイメージ確認
awsコマンド”aws ecr describe-images”でpushしたイメージを確認します。
aws ecr describe-images --repository-name sample-app
(5)(オプション)ローカルのdockerイメージ削除
必須でないですが、ローカルのdockerイメージを削除する場合は"docker rmi -f [Image ID] [Image ID] [Image ID]"コマンドで削除します。
ECRからイメージをpullする
ECRのレポジトリとイメージを確認する
(1)ECRレポジトリを確認する
”aws ecr describe-repositories”コマンドでレポジトリ一覧を取得して、"repositoryUri"を確認します。
aws ecr describe-repositories
{
"repositories": [
{
"registryId": "xxxxxxxxxxxx",
"repositoryName": "sample-app",
"repositoryArn": "arn:aws:ecr:ap-northeast-1:xxxxxxxxxxxx:repository/sample-app",
"createdAt": xxxxxxxxxxxx.0,
"repositoryUri": "xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/sample-app"
}
]
}
(2)対象レポジトリ内のイメージを確認する
aws cliの”aws ecr describe-images --repository-name php-sample”コマンドでレポジトリ一覧を取得して"imageTags"を確認します。
aws ecr describe-images --repository-name sample-app
{
"imageDetails": [
{
"imageSizeInBytes": 133346056,
"imageDigest": "sha256:8401bb0035eedc2f101d96eabdf9ed37269f76f14daed080fe924d54d9772037",
"imageTags": [
"latest"
],
"registryId": "xxxxxxxxxxxx",
"repositoryName": "sample-app",
"imagePushedAt": xxxxxxxxxxxx.0
}
]
}
docker pullする
(1)dockerコマンドで、"docker pull [repositoryUri]:[Tag]"でイメージをpullします。
docker pull xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/sample-app:latest
(2)"docker images"でpullしたイメージを確認する
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/sample-app latest 688a2109cc33 About an hour ago 368MB