のぴぴのメモ

自分用のLinuxとかの技術メモ

ECRにdockerログインしてImageをpush/pullしたりリポジトリやイメージ一覧取得)する手順

ECRにログインする

awsコマンドでECRにログインするためのdockerの認証情報を取得してログインします。

$(aws ecr get-login --no-include-email)

実行すると認証用のdockerコマンドの文字列(docker login ....)が出力されるので、それをシェルのコマンド置換"$(...)"を利用してそのまま実行してdockerログインします。

ECRにリポジトリを作成する

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