ecr aws amazon-web-services docker containers

amazon web services - aws - Empuje la imagen de la ventana acoplable al repositorio de Amazon ECS



amazon repository (3)

Soy nuevo en AWS. Quiero configurar un repositorio privado de acopladores en una instancia de contenedor de AWS ECS. Creé un repositorio llamado name . Los ejemplos de comandos push mostrados por AWS están funcionando.

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

Pero con estos comandos construyo y empujo una imagen llamada name y quiero construir una imagen llamada foo . Entonces alteré los comandos para:

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

Esto debería funcionar, pero no lo hace. Después de un período de devoluciones me sale el 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 ''############''

¿AWS realmente requiere un repositorio dedicado para cada imagen que quiero impulsar?


Debe crear un repositorio para cada nombre de imagen, pero el nombre de la imagen puede tener la forma "mycompanyname / helloworld". Entonces crea mycompanyname/app1 mycompanyname/app2 , 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


El Registro de Contenedores EC2 requiere que se configure un Repositorio de imágenes para cada "nombre" o "espacio / nombre" de la imagen que desee publicar en el registro.

Sin embargo, puede publicar cualquier :tags que desee en cada repositorio (el límite predeterminado es de 100 etiquetas).

No he visto en ninguna parte de la documentación de AWS que indique específicamente el repositorio -> asignación de nombre de imagen, pero está implícito en Crear un repositorio - Sección 6d en la Guía del usuario de ECR

La especificación de la imagen de Docker incluye su definición de repositorio

Repositorio

Una colección de etiquetas agrupadas bajo un prefijo común (el componente de nombre antes : . Por ejemplo, en una imagen etiquetada con el nombre my-app:3.1.4 , my-app es el componente Repositorio del nombre. Un nombre de repositorio está compuesto por componentes de nombre separados por barras, opcionalmente precedidos por un nombre de host DNS. El nombre de host debe cumplir con las reglas DNS estándar, pero no puede contener _ caracteres. Si hay un nombre de host presente, opcionalmente puede ir seguido de un número de puerto en el formato :8080 . Los componentes de nombre pueden contener caracteres en minúscula, dígitos y separadores. Un separador se define como un punto, uno o dos guiones bajos o uno o más guiones. Un componente de nombre no puede comenzar o terminar con un separador.


No es necesario crear un repositorio por imagen, solo reestructurar los nombres:

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