Trabajar con el servicio Amazon Elastic Container Registry en AWS Cloud9 - AWS Cloud9

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Trabajar con el servicio Amazon Elastic Container Registry en AWS Cloud9

Puede acceder al servicio Amazon Elastic Container Registry (Amazon ECR) directamente desde AWS el explorador del IDE. AWS Cloud9 Puede utilizar Amazon ECR para insertar una imagen de programa en un repositorio de Amazon ECR. Para comenzar, siga estos pasos:

  1. Cree un Dockerfile que contenga la información necesaria para crear una imagen.

  2. Cree una imagen a partir de ese Dockerfile y etiquétala para procesarla.

  3. Cree un repositorio que esté en su instancia de Amazon ECR.

  4. Inserte la imagen etiquetada en el repositorio.

Requisitos previos

Antes de poder utilizar la función Amazon ECR del AWS kit de herramientas AWS Cloud9, asegúrese de cumplir primero estos requisitos previos. Estos requisitos previos vienen preinstalados en el AWS Cloud9 IDE para los entornos de Amazon AWS Cloud9 EC2 y son necesarios para acceder a Amazon ECR.

1. Creación de un Dockerfile

Docker usa un archivo llamado Dockerfile para definir una imagen que se puede insertar y almacenar en un repositorio remoto. Para poder subir una imagen a un repositorio de ECR, cree un Dockerfile y, a continuación, cree una imagen a partir de ese Dockerfile.

Creación de un Dockerfile
  1. Para navegar hasta el directorio en el que desea almacenar el Dockerfile, elija la opción Toggle Tree (Alternar árbol) en la barra de navegación izquierda de su IDE de AWS Cloud9 .

  2. Cree un nuevo archivo llamado Dockerfile.

    nota

    AWS Cloud9 Es posible que el IDE le pida que seleccione un tipo o una extensión de archivo. Si esto ocurre, seleccione texto sin formato. AWS Cloud9 El IDE tiene la extensión «dockerfile». Sin embargo, no recomendamos usarla. Esto se debe a que la extensión puede provocar conflictos con determinadas versiones de Docker u otras aplicaciones asociadas.

Edición del Dockerfile mediante IDE AWS Cloud9

Si el Dockerfile tiene una extensión de archivo, abra el menú contextual (haga clic con el botón derecho) del archivo y elimine la extensión de archivo. Un Dockerfile con extensiones podría provocar conflictos con determinadas versiones de Docker u otras aplicaciones asociadas.

Después de eliminar la extensión de archivo del Dockerfile:

  1. Abre el Dockerfile vacío directamente en el IDE. AWS Cloud9

  2. Copie el contenido del siguiente ejemplo en su Dockerfile.

    ejemplo Plantilla de imagen de Dockerfile
    FROM ubuntu:22.04 # Install dependencies RUN apt-get update && \ apt-get -y install apache2 # Install apache and write hello world message RUN echo 'Hello World!' > /var/www/html/index.html # Configure apache RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \ echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \ echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ chmod 755 /root/run_apache.sh EXPOSE 80 CMD /root/run_apache.sh

    Se trata de un archivo Dockerfile que utiliza una imagen de Ubuntu 22.04. Las instrucciones RUN actualizan las memorias caché de paquete. Instale algunos paquetes de software para el servidor web y, a continuación, escriba el contenido "Hello World!" en la raíz de documentos del servidor web. La instrucción EXPOSE expone el puerto 80 en el contenedor y la instrucción CMD inicia el servidor web.

  3. Guarde el archivo Dockerfile.

2. Creación de la imagen a partir del Dockerfile

El Dockerfile que creó contiene la información necesaria para crear una imagen para un programa. Para poder insertar esa imagen en su instancia de Amazon ECR, primero cree la imagen.

Creación de una imagen a partir del Dockerfile
  1. Para navegar al directorio que contiene su Dockerfile, utilice la CLI de Docker o una CLI que esté integrada con su instancia de Docker.

  2. Para crear la imagen que está definida en su Dockerfile, ejecute el comando Docker build desde el mismo directorio que el Dockerfile.

    docker build -t hello-world .
  3. Ejecute el comando docker images para comprobar que la imagen se creó correctamente.

    docker images --filter reference=hello-world

    El resultado es el siguiente.

    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  4. Para ejecutar la imagen recién creada basada en Ubuntu 22.04, use el comando echo.

    nota

    Este paso no es necesario para crear o insertar su imagen. Sin embargo, puede ver cómo funciona la imagen del programa cuando se ejecuta.

    FROM ubuntu:22.04 CMD ["echo", "Hello from Docker in Cloud9"]

    A continuación, ejecute y cree el dockerfile. Debe ejecutar este comando en el mismo directorio que el dockerfile.

    docker build -t hello-world . docker run --rm hello-world

    El resultado es el siguiente.

    Hello from Docker in Cloud9

    Para obtener más información sobre el comando Docker run, consulte Docker run reference (Referencia de Docker run) en el sitio web de Docker.

3. Creación de un nuevo repositorio

Para subir la imagen a su instancia de Amazon ECR, cree un nuevo repositorio en el que pueda almacenarse.

Creación de un nuevo repositorio de Amazon ECR
  1. En la barra de navegación del AWS Cloud9 IDE, selecciona el icono del AWS kit de herramientas.

  2. Expanda el menú del Explorador de AWS .

  3. Busca el valor predeterminado Región de AWS que está asociado a tu. Cuenta de AWS A continuación, selecciónelo para ver una lista de los servicios que están disponibles a través del AWS Cloud9 IDE.

  4. Abra el menú contextual (haga clic con el botón derecho) de la opción ECR para iniciar el proceso Create new repository (Creación de nuevo repositorio). A continuación, seleccione Create Repository (Crear repositorio).

  5. Para completar el proceso, siga las indicaciones.

  6. Una vez finalizado el proceso, podrá acceder a su nuevo repositorio desde la sección ECR del menú del AWS explorador.

4. Inserción, extracción y eliminación de imágenes

Después de crear una imagen a partir de su Dockerfile y crear un repositorio, puede insertarla en su repositorio de Amazon ECR. Además, si utiliza el AWS explorador con Docker y la AWS CLI, puede hacer lo siguiente:

  • Extraer una imagen del repositorio.

  • Eliminar una imagen que esté almacenada en su repositorio.

  • Eliminar su repositorio.

Autenticación de Docker con su registro predeterminado

Se requiere autenticación para intercambiar datos entre las instancias de Amazon ECR y Docker. Para autenticar Docker con su registro:

  1. Abra un terminal dentro de su AWS Cloud9 IDE.

  2. Utilice el get-login-passwordmétodo para autenticarse en su registro ECR privado e introduzca su región e Cuenta de AWS ID.

    aws ecr get-login-password \ --region <region> \ | docker login \ --username AWS \ --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
    importante

    En el comando anterior, reemplace region y AWS_account_id con información que sea específica de su Cuenta de AWS. Un valor region válido es us-east-1.

Etiquetado e inserción de una imagen en el repositorio

Después de autenticar Docker con tu instancia de AWS, envía una imagen a tu repositorio.

  1. Use el comando de imágenes de Docker para ver las imágenes que ha almacenado localmente e identifique la que desea etiquetar.

    docker images

    El resultado es el siguiente.

    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  2. Etiquete su imagen Docker con el comando Docker tag.

    docker tag hello-world:latest AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
  3. Inserte la imagen etiquetada en su repositorio con el comando Docker push.

    importante

    Asegúrese de que el nombre del repositorio local sea el mismo que el del repositorio de AWS Amazon EC2. En este ejemplo, ambos repositorios se deben llamar hello-world. Para obtener más información sobre cómo insertar imágenes con docker, consulte Inserción de una imagen de Docker.

    docker push AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest

    El resultado es el siguiente.

    The push refers to a repository [AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world] (len: 1) e9ae3c220b23: Pushed a6785352b25c: Pushed 0998bf8fb9e9: Pushed 0a85502c06c9: Pushed latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b size: 6774

Una vez que la imagen etiquetada se haya cargado correctamente en el repositorio, actualice el AWS kit de herramientas seleccionando Actualizar explorador en la pestaña AWS Explorador. A continuación, estará visible en el menú del AWS explorador del AWS Cloud9 IDE.

Extracción de una imagen de Amazon ECR
  • Puede extraer una imagen en su instancia local del comando Docker tag.

    docker pull AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest

    El resultado es el siguiente.

    azonaws.com/hello-world:latest latest: Pulling from hello-world Digest: sha256:e02c521fd65eae4ef1acb746883df48de85d55fc85a4172a09a124b11b339f5e Status: Image is up to date for 922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world.latest
Eliminación de una imagen de su repositorio de Amazon ECR

Existen dos métodos para eliminar una imagen del AWS Cloud9 IDE. El primer método consiste en utilizar el AWS Explorador.

  1. Desde el AWS Explorador, expanda el menú ECR.

  2. Expanda el repositorio del que desea eliminar una imagen.

  3. Abra el menú contextual (haga clic con el botón derecho) de la etiqueta de imagen que está asociada a la imagen que desea eliminar.

  4. Para eliminar todas las imágenes almacenadas que están asociadas a esa etiqueta, elija Delete Tag... (Eliminar etiqueta...).

Eliminar una imagen mediante la AWS CLI
  • También puede eliminar una imagen del repositorio con el batch-delete-image comando AWS ecr.

    aws ecr batch-delete-image \ --repository-name hello-world \ --image-ids imageTag=latest

    El resultado es el siguiente.

    { "failures": [], "imageIds": [ { "imageTag": "latest", "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b" } ] }
Eliminación de un repositorio desde la instancia de Amazon ECR

Existen dos métodos para eliminar un repositorio del AWS Cloud9 IDE. El primer método consiste en utilizar el AWS Explorador:

  1. Desde el AWS Explorador, expanda el menú ECR.

  2. Abra el menú contextual (haga clic con el botón derecho) del repositorio que desea eliminar.

  3. Elija Delete Repository... (Eliminar repositorio...).

Eliminar un repositorio de Amazon ECR de la AWS CLI
  • Puede eliminar un repositorio con el comando AWS ecr delete-repository.

    nota

    Normalmente no puede eliminar un repositorio sin eliminar primero las imágenes que contiene. Sin embargo, si agrega la marca --force, puede eliminar un repositorio y todas sus imágenes en un solo paso.

    aws ecr delete-repository \ --repository-name hello-world \ --force

    El resultado es el siguiente.

    --repository-name hello-world --force { "repository": { "repositoryUri": "922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world", "registryId": "922327013870", "imageTagMutability": "MUTABLE", "repositoryArn": "arn:aws:ecr:us-west-2:922327013870:repository/hello-world", "repositoryName": "hello-world", "createdAt": 1664469874.0 } }