86 votes

Transférer l'image du menu fixe dans le référentiel amazon ecs

Im nouveau à AWS. Je veux mettre en place une docker référentiel sur AWS ECS instance de conteneur. J'ai créé une archive nommée name. L'exemple de pousser les commandes indiquées par AWS travaillent.

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

Mais avec cette commande que j'construire et poussé une image nommée name et je veux construire une image nommée foo. J'ai donc modifié les commandes à:

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

Cela devrait fonctionner, mais il ne le fait pas. Après une période de retrys j'obtiens l'erreur:

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 '############'

AWS a vraiment besoin d'un entrepôt pour chaque image que je veux pousser?

86voto

Matt Points 25814

L' EC2 Container Registre nécessite un Référentiel d'images à la configuration de chaque image "nom" ou "espace de noms/nom de" vous souhaitez publier dans le registre.

Vous pouvez publier :tags vous voulez dans chaque Référentiel si (La limite par défaut est de 100 étiquettes).

Je n'ai pas vu de n'importe où dans le AWS documentation précise le repository -> image de mappage de nom, mais il est implicite par la Création d'un Référentiel - Section 6d dans le Guide de l'Utilisateur P.

Le Panneau de l'Image de spec inclut la définition d'un Référentiel

Référentiel

Une collection de balises regroupés sous un préfixe commun (le nom de la composante avant d' :). Par exemple, dans une image étiqueté avec le nom de my-app:3.1.4, mon application est le Référentiel de la composante du nom. Un nom du référentiel est composé de barre-nom séparée des composants, éventuellement précédé par un nom d'hôte DNS. Le nom d'hôte doit se conformer à DNS standard de règles, mais ne peut pas contenir _ caractères. Si un nom d'hôte est l'heure actuelle, il peut éventuellement être suivi par un numéro de port dans le format :8080. Nom des composants peuvent contenir des caractères minuscules, des chiffres et des les séparateurs. Un séparateur est défini comme une période, un ou deux des traits de soulignement, ou un ou plusieurs tirets. Un composant de nom ne peut pas commencer ou fin avec un séparateur.

53voto

ecerulm Points 1834

Vous devez créer un référentiel pour chaque nom d'image, mais le nom de l'image peut être de la forme "mycompanyname / helloworld". Donc, vous créez mycompanyname/app1 , mycompanyname/app2 , etc.

 aws ecr create-repository --repository-name mycompanyname/helloworld
aws ecr create-repository --repository-name mycompanyname/app1
aws ecr create-repository --repository-name mycompanyname/app2
docker tag helloworld:latest xxxxxxxx.dkr.ecr.us-west-2.amazonaws.com/mycompanyname/helloworld:latest
docker push xxxxxxxx.dkr.ecr.us-west-2.amazonaws.com/mycompanyname/helloworld:latest
docker tag app1:latest xxxxxxxx.dkr.ecr.us-west-2.amazonaws.com/mycompanyname/app1:latest
docker push xxxxxxxx.dkr.ecr.us-west-2.amazonaws.com/mycompanyname/app1:latest
 

-5voto

AAber Points 3

Pas besoin de créer un repo par image, restructurez simplement le nommage:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X