Desplazamiento de una imagen a lo largo de su ciclo de vida en Amazon ECR - Amazon ECR

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.

Desplazamiento de una imagen a lo largo de su ciclo de vida en Amazon ECR

Si utiliza Amazon ECR por primera vez, siga los siguientes pasos con la CLI de Docker y la AWS CLI para crear una imagen de muestra, autenticarse en el registro predeterminado y crear un repositorio privado. A continuación, inserte una imagen en el repositorio privado y extráigala. Cuando termine, borre la imagen de muestra y el repositorio.

Para utilizar Consola de administración de AWS en lugar de AWS CLI, consulte Creación de un repositorio privado de Amazon ECR para almacenar imágenes.

Para obtener más información sobre otras herramientas de administración de recursos de AWS, incluidos los distintos conjuntos de herramientas de IDE, los SDK de AWS y las herramientas de línea de comandos de Windows PowerShell, consulte http://aws.amazon.com/tools/.

Requisitos previos

Si no dispone de la versión más reciente de la AWS CLI y Docker instaladas y listas para usarse, siga los pasos siguientes para instalar estas dos herramientas.

Instala la AWS CLI

Para utilizar la AWS CLI con Amazon ECR, instale la última versión de la AWS CLI. Para obtener información, consulte Instalar la AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface.

Instalar Docker

Docker está disponible en muchos sistemas operativos diferentes, incluidas las distribuciones de Linux más modernas, como Ubuntu, e incluso en macOS y Windows. Para obtener más información sobre cómo instalar Docker en su sistema operativo concreto, consulte la guía de instalación de Docker.

No necesita un sistema de desarrollo local para usar Docker. Si ya utiliza Amazon EC2, puede lanzar una instancia de Amazon Linux 2023 e instalar Docker para empezar.

Si ya tiene Docker instalado, pase a Paso 1: creación de una imagen de Docker.

Instalación de Docker en una instancia de Amazon EC2 mediante una AMI de Amazon Linux 2023
  1. Lance una instancia con la AMI de Amazon Linux 2023. Para obtener más información, consulte Lanzamiento de una instancia en la Guía del usuario de Amazon EC2.

  2. Conéctese a la instancia. Para obtener más información, consulte Conexión con la instancia de Linux en la Guía del usuario de Amazon EC2.

  3. Actualice la caché de paquetes y los paquetes instalados en la instancia.

    sudo yum update -y
  4. Instale el paquete de Community Edition de Docker más reciente.

    sudo yum install docker
  5. Abra el servicio de Docker.

    sudo service docker start
  6. Agregue el ec2-user al grupo docker para que pueda ejecutar comandos de Docker sin usar sudo.

    sudo usermod -a -G docker ec2-user
  7. Cierre sesión y vuelva a iniciarla para actualizar los nuevos permisos de grupo de docker. Para ello, cierre la ventana de su terminal de SSH actual y vuelva a conectarse a la instancia en una ventana nueva. De esta forma, la nueva sesión de SSH tendrá los permisos de grupo de docker adecuados.

  8. Compruebe que el ec2-user puede ejecutar comandos de Docker sin sudo.

    docker info
    nota

    En algunos casos, es posible que tenga que reiniciar su instancia para que el ec2-user tenga los permisos necesarios para acceder al daemon de Docker. Intente reiniciar su instancia si ve el siguiente error:

    Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Paso 1: creación de una imagen de Docker

En este paso, va a crear una imagen de Docker de una aplicación web simple y la va a probar en su sistema local o en la instancia de Amazon EC2.

Creación de una imagen Docker de una aplicación web simple
  1. Cree un archivo denominado Dockerfile. Un Dockerfile es un manifiesto que describe la imagen base para su imagen Docker y qué desea instalar y que se ejecute en ella. Para obtener más información acerca de los archivos Docker, consulte Docker Reference.

    touch Dockerfile
  2. Edite el Dockerfile que acaba de crear y agregue el siguiente contenido.

    FROM public.ecr.aws/amazonlinux/amazonlinux:latest # Install dependencies RUN yum update -y && \ yum install -y httpd # Install apache and write hello world message RUN echo 'Hello World!' > /var/www/html/index.html # Configure apache RUN echo 'mkdir -p /var/run/httpd' >> /root/run_apache.sh && \ echo 'mkdir -p /var/lock/httpd' >> /root/run_apache.sh && \ echo '/usr/sbin/httpd -D FOREGROUND' >> /root/run_apache.sh && \ chmod 755 /root/run_apache.sh EXPOSE 80 CMD /root/run_apache.sh

    Este Dockerfile utiliza la imagen pública de Amazon Linux 2 alojada en Amazon ECR Public. Las instrucciones RUN actualizan la caché del paquete, instalan algunos paquetes de software para el servidor web y, a continuación, escriben el contenido “Hello World!”. en la raíz de documentos del servidor web. El folleto EXPOSE expone el puerto 80 en el contenedor y las instrucciones CMD inician el servidor web.

  3. Cree la imagen Docker desde el Dockerfile.

    nota

    Algunas versiones de Docker pueden requerir la ruta completa a su Dockerfile en el siguiente comando en lugar de la ruta relativa que se muestra a continuación.

    docker build -t hello-world .
  4. Incluya la imagen de su contenedor.

    docker images --filter reference=hello-world

    Salida:

    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hello-world         latest              e9ffedc8c286        4 minutes ago       194MB
  5. Ejecute la nueva imagen. La opción -p 80:80 asigna el puerto 80 expuesto en el contenedor al puerto 80 del sistema de host. Para obtener más información acerca de docker run, diríjase a la referencia de ejecución de Docker.

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

    La salida desde el servidor web Apache se muestra en la ventana de la terminal. Puede hacer caso omiso del mensaje "Could not reliably determine the fully qualified domain name"

  6. Abra un navegador y encuentre el servidor que está ejecutando Docker y alojando su contenedor.

    • Si utiliza una instancia de EC2, este es el valor DNS público para el servidor, que es la misma dirección que utiliza para conectarse a la instancia con SSH. Asegúrese de que el grupo de seguridad para la instancia permite el tráfico entrante en el puerto 80.

    • Si ejecuta Docker de forma local, dirija el navegador a http://localhost/.

    • Si utiliza docker-machine en un equipo Windows o Mac, encuentre la dirección IP del VirtualBox VM que aloja Docker con el comando docker-machine ip y sustituya machine-name con el nombre de la máquina docker que esté usando.

      docker-machine ip machine-name

    Debería ver una página web que diga "Hello, World!" statement.

  7. Detenga el contenedor de Docker escribiendo Ctrl + c.

Paso 2: crear un repositorio

Ahora que ya tiene una imagen para insertar en Amazon ECR, debe crear un repositorio para almacenarla. En este ejemplo, va a crear un repositorio llamado hello-repository en el que insertará después la imagen hello-world:latest. Para crearlo, ejecute este comando:

aws ecr create-repository \ --repository-name hello-repository \ --region region

Paso 3: autenticar en su registro predeterminado

Una vez instalada y configurada la AWS CLI, puede autenticar la CLI de Docker en el registro predeterminado. De este modo, el comando docker puede extraer e insertar imágenes con Amazon ECR. La AWS CLI proporciona un comando get-login-password que simplifica el proceso de autenticación.

Para autenticar Docker en un registro de Amazon ECR con get-login-password, ejecute el comando aws ecr get-login-password. Al pasar el token de autenticación al comando docker login, utilice el valor AWS para el nombre de usuario y especifique el URI del registro de Amazon ECR en el que desea autenticarse. Si se autentica en varios registros, deberá repetir el comando con cada registro.

importante

Si recibe un error, instale o actualice a la versión más reciente de la AWS CLI. Para obtener más información, consulte Installing the AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface.

  • get-login-password (AWS CLI)

    aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
  • Get-ECRLoginCommand (AWS Tools for Windows PowerShell)

    (Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com

Paso 4: Insertar una imagen en Amazon ECR

Ahora puede insertar la imagen en el repositorio de Amazon ECR que ha creado en la sección anterior. Utilice la CLI de docker para insertar imágenes cuando se cumplan los siguientes requisitos previos:

  • La versión instalada es la versión mínima de docker: 1.7.

  • El token de autorización de Amazon ECR se configuró con docker login.

  • Debe existir el repositorio de Amazon ECR y el usuario debe disponer de acceso para insertar imágenes en él.

Si se cumplen estos requisitos previos, podrá insertar la imagen en el repositorio recién creado del registro predeterminado de su cuenta.

Etiquetado e inserción de una imagen en Amazon ECR
  1. Muestre las imágenes que ha almacenado localmente para identificar la que desea etiquetar e insertar.

    docker images

    Salida:

    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
  2. Etiquete la imagen que desea insertar en el repositorio.

    docker tag hello-world:latest aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository
  3. Inserte la imagen.

    docker push aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository:latest

    Salida:

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

Paso 5: Extraer una imagen de Amazon ECR

Una vez que se inserta la imagen en el repositorio de Amazon ECR, puede extraerla de otras ubicaciones. Utilice la CLI de docker para extraer imágenes cuando se cumplan los siguientes requisitos previos:

  • La versión instalada es la versión mínima de docker: 1.7.

  • El token de autorización de Amazon ECR se configuró con docker login.

  • Debe existir el repositorio de Amazon ECR y el usuario debe tener acceso para extraer imágenes de él.

Si se cumplen estos requisitos previos, podrá extraer la imagen. Para extraer la imagen de ejemplo de Amazon ECR, ejecute este comando:

docker pull aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository:latest

Salida:

latest: Pulling from hello-repository
0a85502c06c9: Pull complete
0998bf8fb9e9: Pull complete
a6785352b25c: Pull complete
e9ae3c220b23: Pull complete
Digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636EXAMPLE
Status: Downloaded newer image for aws_account_id.dkr.region.amazonaws.com/hello-repository:latest

Paso 6: eliminar una imagen

Si ya no necesita una imagen de uno de los repositorios, puede eliminarla. Para eliminar una imagen, especifique el repositorio en el que esta se encuentra y seleccione un valor imageTag o imageDigest. En el ejemplo siguiente, se elimina una imagen del repositorio hello-repository con la etiqueta de imagen latest. Para eliminar la imagen de ejemplo del repositorio, ejecute el siguiente comando:

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

Paso 7: eliminar un repositorio

Si ya no necesita un repositorio completo de imágenes, puede eliminarlo. En el siguiente ejemplo, se utiliza la marca --force para eliminar un repositorio que contiene imágenes. Para eliminar un repositorio que contiene imágenes (y todas las imágenes con él), ejecute este comando:

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