AWS Cloud9 ya no está disponible para los nuevos clientes. Los clientes existentes de AWS Cloud9 pueden seguir utilizando el servicio con normalidad. Más información
Uso del servicio Amazon ECR en AWS Cloud9
Puede acceder al servicio Amazon Elastic Container Registry (Amazon ECR) directamente desde el Explorador AWS del IDE de AWS Cloud9. Puede utilizar Amazon ECR para insertar una imagen de programa en un repositorio de Amazon ECR. Para comenzar, siga estos pasos:
-
Cree un Dockerfile que contenga la información necesaria para crear una imagen.
-
Cree una imagen a partir de ese Dockerfile y etiquétala para procesarla.
-
Cree un repositorio que esté en su instancia de Amazon ECR.
-
Inserte la imagen etiquetada en el repositorio.
Secciones
Requisitos previos
Para poder utilizar la característica Amazon ECR del kit de herramientas de AWS para AWS Cloud9, asegúrese de cumplir primero con estos requisitos previos. Estos requisitos previos están preinstalados en el IDE de AWS Cloud9 para los entornos de Amazon EC2 de AWS Cloud9 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
-
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.
-
Cree un nuevo archivo llamado Dockerfile.
nota
El IDE de AWS Cloud9 puede solicitarle que seleccione un tipo o una extensión de archivo. Si esto ocurre, seleccione plaintext. AWS Cloud9 IDE 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 de su Dockerfile mediante el IDE de 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:
-
Abra el Dockerfile vacío directamente en el IDE de AWS Cloud9.
-
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.
-
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
-
Para navegar al directorio que contiene su Dockerfile, utilice la CLI de Docker o una CLI que esté integrada con su instancia de Docker.
-
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 .
-
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
-
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
-
En la barra de navegación del IDE de AWS Cloud9, elija el icono del kit de herramientas de AWS.
-
Expanda el menú del Explorador de AWS.
-
Busque el valor predeterminado de Región de AWS asociado a su Cuenta de AWS. A continuación, selecciónelo para ver una lista de los servicios que se encuentran a través del IDE de AWS Cloud9.
-
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).
-
Para completar el proceso, siga las indicaciones.
-
Una vez completado el proceso, puede acceder a su 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:
-
Abra un terminal en su IDE de AWS Cloud9.
-
Utilice el método get-login-password para autenticarse en su registro de ECR privado e introduzca su región junto con su ID de Cuenta de AWS.
aws ecr get-login-password \ --region <
region
> \ | docker login \ --username AWS \ --password-stdin <aws_account_id
>.dkr.ecr.<region>.amazonaws.com.rproxy.goskope.comimportante
En el comando anterior, reemplace
region
yAWS_account_id
con información que sea específica de su Cuenta de AWS. Un valorregion
válido es us-east-1.
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.
-
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
-
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 -
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:latestEl 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 su repositorio, actualice el kit de herramientas de AWS mediante la selección de Refresh Explorer (Actualizar Explorador) en la pestaña del Explorador de AWS. A continuación, está visible en el menú del Explorador de AWS en el IDE de AWS Cloud9.
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:latestEl 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
Hay dos métodos para eliminar una imagen desde el IDE de AWS Cloud9. El primer método consiste en utilizar el Explorador de AWS.
-
Desde el Explorador de AWS, expanda el menú ECR.
-
Expanda el repositorio del que desea eliminar una imagen.
-
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.
-
Para eliminar todas las imágenes almacenadas que están asociadas a esa etiqueta, elija Delete Tag... (Eliminar etiqueta...).
Eliminación de una imagen mediante 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=latestEl resultado es el siguiente.
{ "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 el IDE de AWS Cloud9. El primer método consiste en utilizar el Explorador de AWS:
-
Desde el Explorador de AWS, expanda el menú ECR.
-
Abra el menú contextual (haga clic con el botón derecho) del repositorio que desea eliminar.
-
Elija Delete Repository... (Eliminar repositorio...).
Eliminación de un repositorio de Amazon ECR desde 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
\ --forceEl 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 } }