

 AWS Cloud9 ya no está disponible para nuevos clientes. Los clientes existentes de AWS Cloud9 pueden seguir utilizando el servicio con normalidad. [Más información](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

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 de Amazon ECR en IDE AWS Cloud9
<a name="ecr"></a>

Amazon Elastic Container Registry (Amazon ECR) es AWS un servicio gestionado de registro de contenedores seguro y escalable. Se puede acceder a varias funciones del servicio Amazon ECR desde el explorador del AWS kit de herramientas:
+ Creación de un repositorio.
+ Crear un AWS App Runner servicio para su repositorio o imagen etiquetada.
+ Acceder a la etiqueta de imagen y al repositorio URIs o ARNs.
+ Eliminación de etiquetas y repositorios de imágenes.

También puede acceder a toda la gama de funciones de Amazon ECR a través de la AWS Cloud9 consola instalando la AWS CLI y otras plataformas.

Para obtener más información acerca de Amazon ECR, consulte [¿Qué es Amazon ECR?](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) en la Guía del usuario de Amazon Elastic Container Registry.

## Requisitos previos
<a name="prereqs-awstoolkit-vscode-ecr"></a>

Lo siguiente viene preinstalado en el AWS Cloud9 IDE para EC2 entornos de AWS Cloud9 Amazon. Son necesarios para acceder al servicio Amazon ECR desde el AWS Cloud9 IDE. 

### Credenciales de IAM
<a name="create-an-iam-user"></a>

El rol de IAM que creó y utilizó para la autenticación en la consola de AWS . Para obtener más información acerca de IAM, consulte la [Guía del usuario de AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/).

### Configuración de Docker
<a name="create-an-iam-user"></a>

Docker viene preinstalado en el AWS Cloud9 IDE para entornos de AWS Cloud9 Amazon EC2 . Para obtener más información sobre Docker, consulte [Install Docker Engine](https://docs.docker.com/engine/install/) (Instalación del motor de Docker).

### AWS Configuración CLI versión 2
<a name="create-an-iam-user"></a>

AWS La versión 2 de CLI viene preinstalada en el AWS Cloud9 IDE para EC2 entornos de AWS Cloud9 Amazon. Para obtener más información sobre la versión 2 de la AWS CLI, consulte [Instalación, actualización y desinstalación de la AWS CLI versión 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

**Topics**
+ [Requisitos previos](#prereqs-awstoolkit-vscode-ecr)
+ [Uso de Amazon ECR con IDE AWS Cloud9](ecr-working.md)

# Trabajar con el servicio Amazon ECR en AWS Cloud9
<a name="ecr-working"></a>

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.

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

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

1. Inserte la imagen etiquetada en el repositorio.

**Topics**
+ [Requisitos previos](#prereqs-vscode-ecr)
+ [1. Creación de un Dockerfile](#dockerfile-ecr-cloud9toolkit)
+ [2. Creación de la imagen a partir del Dockerfile](#build-docker-image)
+ [3. Creación de un nuevo repositorio](#create-repository)
+ [4. Inserción, extracción y eliminación de imágenes](#push-image)

## Requisitos previos
<a name="prereqs-vscode-ecr"></a>

Antes de poder utilizar la función Amazon ECR del AWS kit de herramientas AWS Cloud9, asegúrese de cumplir primero estos [requisitos previos](ecr.md#prereqs-awstoolkit-vscode-ecr). Estos requisitos previos vienen preinstalados en el AWS Cloud9 IDE para los EC2 entornos de AWS Cloud9 Amazon y son necesarios para acceder a Amazon ECR.

## 1. Creación de un Dockerfile
<a name="dockerfile-ecr-cloud9toolkit"></a>

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 .

1. 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 de su 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 

1. Copie el contenido del siguiente ejemplo en su Dockerfile.  
**Example 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\$1" 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.

1. Guarde el archivo Dockerfile.

## 2. Creación de la imagen a partir del Dockerfile
<a name="build-docker-image"></a>

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.

1. 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 .
   ```

1. Ejecute el comando **docker images** para comprobar que la imagen se creó correctamente.

   ```
   docker images --filter reference=hello-world
   ```  
**Example**  

   El resultado es el siguiente.

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. 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
   ```  
**Example**  

   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](https://docs.docker.com/engine/reference/run/) (Referencia de Docker run) en el sitio web de Docker.

## 3. Creación de un nuevo repositorio
<a name="create-repository"></a>

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**.

1. Expanda el menú del Explorador de AWS .

1. 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.

1. 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).

1. Para completar el proceso, siga las indicaciones.

1. 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
<a name="push-image"></a>

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. 

1. Utilice el **get-login-password**mé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\$1account\$1id** 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
   ```  
**Example**  

   El resultado es el siguiente.

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. 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
   ```

1. Inserte la imagen etiquetada en su repositorio con el comando **Docker push**.
**importante**  
Asegúrate de que el nombre de tu repositorio local sea el mismo que el de tu EC2 repositorio de AWS Amazon. 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](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html).

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

   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 el 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
  ```  
**Example**  

  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.**

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

1. 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.

1. 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 de su repositorio con el batch-delete-image comando **AWS ecr.**

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

  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.**

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

1. 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
  ```  
**Example**  

  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
      }
  }
  ```