Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Push docker image to amazon ecs repository

Im new to AWS. I want to set up a private docker repository on an AWS ECS container instance. I created a repository named name. The example push commands shown by AWS are working.

aws ecr get-login --region us-west-2  docker build -t name . docker tag name:latest ############.dkr.ecr.us-west-2.amazonaws.com/name:latest  docker push ############.dkr.ecr.us-west-2.amazonaws.com/name:latest 

But with this commands I build and pushed an image named name and I want to build an image named foo. So I altered the commands to:

docker build -t foo . docker tag foo ###########.dkr.ecr.us-west-2.amazonaws.com/name/foo docker push ###########.dkr.ecr.us-west-2.amazonaws.com/name/foo 

This should work, but it doesn't. After a period of retrys I get the error:

The push refers to a repository [###########.dkr.ecr.us-west-2.amazonaws.com/name/foo] 8cc63cf4528f: Retrying in 1 second ... name unknown: The repository with name 'name/foo' does not exist in the registry with id '############' 

Does AWS really require a dedicated repository for every image i want to push?

like image 370
Ohmen Avatar asked May 31 '16 08:05

Ohmen


People also ask

How do I build and push docker images to AWS ECR?

Docker Login Go to hub.docker.com/signup and create your account. To connect your system with your Docker account, execute docker login in the terminal. You will see Login succeeded prompted in the terminal. Once Docker is installed and configured in your system, let's move to the next section.


1 Answers

The EC2 Container Registry requires an image Repository to be setup for each image "name" or "namespace/name" you want to publish to the registry.

You can publish any :tags you want in each Repository though (The default limit is 100 tags).

I haven't seen anywhere in the AWS documentation that specifically states the repository -> image name mapping but it's implied by Creating a Repository - Section 6d in the ECR User Guide

The Docker Image spec includes it's definition of a Repository

Repository

A collection of tags grouped under a common prefix (the name component before :). For example, in an image tagged with the name my-app:3.1.4, my-app is the Repository component of the name. A repository name is made up of slash-separated name components, optionally prefixed by a DNS hostname. The hostname must comply with standard DNS rules, but may not contain _ characters. If a hostname is present, it may optionally be followed by a port number in the format :8080. Name components may contain lowercase characters, digits, and separators. A separator is defined as a period, one or two underscores, or one or more dashes. A name component may not start or end with a separator.

like image 182
Matt Avatar answered Oct 06 '22 12:10

Matt