Uso del servicio Amazon Elastic Container Registry en VS Code - AWS Kit de herramientas para VS Code

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.

Uso del servicio Amazon Elastic Container Registry en VS Code

Puede acceder al servicio Amazon Elastic Container Registry (Amazon ECR) directamente desde el Explorador de AWS en VS Code y usarlo para insertar una imagen de programa en un repositorio de Amazon ECR. Para comenzar, debe seguir 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é dentro de su instancia de Amazon ECR.

  4. Inserte la imagen etiquetada en el repositorio.

Requisitos previos

Para poder utilizar la característica del servicio Amazon ECR del kit de herramientas para VS Code, asegúrese de cumplir estos requisitos previos.

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, debe crear un Dockerfile y, a continuación, crear una imagen a partir de ese Dockerfile.

Creación de un Dockerfile
  1. Use el explorador del kit de herramientas para VS Code para navegar hasta el directorio en el que desee almacenar su Dockerfile.

  2. Cree un nuevo archivo que se llame Dockerfile.

    nota

    VS Code puede solicitarle que seleccione un tipo o una extensión de archivo. Si se le solicita, seleccione plaintext. VS Code tiene una 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 con VS Code

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.

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

  1. Abra el Dockerfile vacío directamente en VS Code.

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

    ejemplo Plantilla de imagen de Dockerfile
    FROM ubuntu:18.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 Ubuntu 18.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.

    importante

    Asegúrese de que el Dockerfile no tenga una extensión asociada al nombre. Un Dockerfile con extensiones podría provocar conflictos con determinadas versiones de Docker u otras aplicaciones asociadas.

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

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

Creación de una imagen a partir del Dockerfile
  1. Utilice la CLI de Docker o una CLI que esté integrada con su instancia de Docker para navegar al directorio que contenga su Dockerfile.

  2. Ejecute el comando Docker build para crear la imagen que está definida en su Dockerfile.

    docker build -t hello-world .
  3. Ejecute el comando Docker images para comprobar que la imagen se ha creado correctamente.

    docker images --filter reference=hello-world
    ejemplo Ejemplo de resultados:
    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  4. nota

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

    Para ejecutar la imagen recién creada, utilice el comando Docker run.

    docker run -t -i -p 80:80 hello-world

    La opción -p que se ha especificado en el ejemplo anterior asigna el puerto 80 expuesto en el contenedor al puerto 80 del sistema host. Si ejecuta Docker de forma local, utilice su navegador web para ir a http://localhost:80. Si el programa se ha ejecutado correctamente, se muestra la declaración “Hello World!”.

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

3. Creación de un repositorio nuevo

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

Creación de un repositorio de Amazon ECR
  1. En la barra de actividades de VS Code, elija el icono del kit de herramientas de AWS.

  2. Expanda el menú del Explorador de AWS.

  3. Busque la región de AWS predeterminada que esté asociada con su cuenta de AWS. A continuación, selecciónela para ver una lista de los servicios que se encuentran a través del kit de herramientas para VS Code.

  4. Elija la opción ECR + para iniciar el proceso de creación de un nuevo repositorio.

  5. Siga las indicaciones para completar el proceso.

  6. Una vez completado el proceso, puede acceder al nuevo repositorio desde la sección ECR del menú del Explorador de AWS.

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, con el Explorador de AWS 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 una línea de comandos del sistema operativo que esté conectado a su instancia de AWS CLI.

  2. Utilice el método get-login-password para autenticarse en su registro de ECR privado.

    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, debe actualizar la region y el AWS_account_id con la información específica de su cuenta de AWS.

Etiquetado e inserción de una imagen en el repositorio

Después de autenticar Docker con su instancia de AWS, inserte una imagen en su repositorio.

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

    docker images
    ejemplo Ejemplo de resultados:
    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 tag.

    docker push AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
    ejemplo Ejemplo de resultados:
    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

Después de que la imagen etiquetada se haya cargado correctamente en el repositorio, estará visible en el menú del Explorador de AWS.

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
    ejemplo Ejemplo de resultados:
    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
Eliminación de una imagen de su repositorio de Amazon ECR

Hay dos métodos para eliminar una imagen desde VS Code . El primer método consiste en utilizar el Explorador de AWS.

  1. Desde el Explorador de AWS, 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 asociada a la imagen que desea eliminar.

  4. Seleccione la opción Eliminar etiqueta… para eliminar todas las imágenes almacenadas que estén asociadas con esa etiqueta.

Eliminación de una imagen mediante la AWS CLI
  • También puede eliminar una imagen de su repositorio con el comando AWS ecr batch-delete-image.

    AWS ecr batch-delete-image \ --repository-name hello-world \ --image-ids imageTag=latest
    ejemplo Ejemplo de resultados:
    { "failures": [], "imageIds": [ { "imageTag": "latest", "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b" } ] }
Eliminación de un repositorio desde la instancia de Amazon ECR

Hay dos métodos para eliminar un repositorio desde VS Code. El primer método consiste en utilizar el Explorador de AWS.

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

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

  3. Elija la opción Eliminar repositorio… del repositorio seleccionado.

Eliminación de un repositorio de Amazon ECR desde la AWS CLI
  • Puede eliminar un repositorio con el comando AWS ecr delete-repository.

    nota

    De forma predeterminada, no puede eliminar un repositorio que contenga imágenes. Sin embargo, el indicador --force le permite hacerlo.

    AWS ecr delete-repository \ --repository-name hello-world \ --force
    ejemplo Ejemplo de resultados:
    { "failures": [], "imageIds": [ { "imageTag": "latest", "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b" } ] }