Cómo mover 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.

Cómo mover 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 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 termines con la imagen de muestra, borra la imagen de muestra y el repositorio.

Para usar el AWS Management Console en lugar del AWS CLI, consulteCreación de un repositorio privado de Amazon ECR para almacenar imágenes.

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

Requisitos previos

Si no dispone de la última versión AWS CLI ni de Docker instalado y listo para usarse, siga estos pasos para instalar ambas herramientas.

Instale el AWS CLI

Para usarlo AWS CLI con Amazon ECR, instale la AWS CLI versión más reciente. 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. Conecte con la instancia . Para obtener más información, consulte Conectarse a su 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 lo utiliza docker-machine en un ordenador Windows o Mac, busque la dirección IP de la VirtualBox máquina virtual que aloja Docker con el docker-machine ip comando y sustituya el nombre de la máquina docker por el nombre de la máquina docker que está utilizando.

      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: autenticar en su registro predeterminado

Una vez que haya instalado y configurado AWS CLI, autentique la CLI de Docker en su registro predeterminado. De este modo, el comando docker puede extraer e insertar imágenes con Amazon ECR. AWS CLI Proporciona un get-login-password comando para simplificar 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-ECR () LoginCommandAWS Tools for Windows PowerShell

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

Paso 3: 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 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 docker CLI para enviar imágenes una vez que se cumplan los siguientes requisitos previos:

  • La versión mínima de docker está instalada: 1.7.

  • El token de autorización de Amazon ECR se configuró condocker 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

    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 la imagen se haya enviado a su repositorio de Amazon ECR, podrá extraerla de otras ubicaciones. Utilice la docker CLI para extraer imágenes una vez que se cumplan los siguientes requisitos previos:

  • La versión mínima de docker está instalada: 1.7.

  • El token de autorización de Amazon ECR se configuró condocker 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 en uno de sus repositorios, puede eliminarla. Para eliminar una imagen, especifica el repositorio en el que se encuentra y un imageDigest valor imageTag o para la imagen. En el siguiente ejemplo, se elimina una imagen del hello-repository repositorio con la etiqueta latest de imagen. Para eliminar la imagen de ejemplo del repositorio, ejecuta 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 necesitas un repositorio completo de imágenes, puedes eliminarlo. En el siguiente ejemplo, se utiliza la --force marca 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