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 nombremy-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