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?
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.
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 namemy-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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With