AWS CLI - Log Docker client into Amazon Elastic Container Registry (Amazon ECR)
Set region and get AWS account ID
Logins are unique to each region.
region=us-east-1;
account_id=$(aws sts get-caller-identity --query Account --output text);
Log in
Using AWS CLI >= v1.17.10
or v2
:
aws ecr get-login-password --region ${region} \
| sudo docker login --username AWS --password-stdin \
${account_id}.dkr.ecr.${region}.amazonaws.com;
Using AWS CLI < v1.17.10
sudo $(aws ecr get-login --region ${region} --no-include-email --registry-ids ${account_id});
--registry-ids ${account_id}
is optional if same account.
Create repository in Amazon ECR
Set variable for repository name:
region=us-east-1;
repo_name=my-repo-name;
Create repository:
aws ecr --region ${region} create-repository --repository-name ${repo_name}
Pull image
sudo docker pull ${account_id}.dkr.ecr.${region}.amazonaws.com/${repo_name}:latest
Push image
Set variable for locally built image and target repository name:
image_name=my-image-name;
repo_name=my-repo-name;
Tag with full repository name:
sudo docker tag ${image_name} ${account_id}.dkr.ecr.${region}.amazonaws.com/${repo_name}:latest
Push image to repository:
sudo docker push ${account_id}.dkr.ecr.${region}.amazonaws.com/${repo_name}:latest
Clean up
Delete all images in repository and delete repository.
# Delete all images
aws ecr --region ${region} batch-delete-image \
--repository-name ${repo_name} \
--image-ids "$(aws ecr --region ${region} list-images --repository-name ${repo_name} --query 'imageIds[*]';)";
# Delete repository
aws ecr --region ${region} delete-repository --repository-name ${repo_name};