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};