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
-
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.
-
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.
-
Actualice la caché de paquetes y los paquetes instalados en la instancia.
sudo yum update -y -
Instale el paquete de Community Edition de Docker más reciente.
sudo yum install docker -
Abra el servicio de Docker.
sudo service docker start -
Agregue el
ec2-useral grupodockerpara que pueda ejecutar comandos de Docker sin usarsudo.sudo usermod -a -G docker ec2-user -
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 dedockeradecuados. -
Compruebe que el
ec2-userpuede ejecutar comandos de Docker sinsudo.docker infonota
En algunos casos, es posible que tenga que reiniciar su instancia para que el
ec2-usertenga 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
-
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 -
Edite el
Dockerfileque 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.shEste Dockerfile utiliza la imagen pública de Amazon Linux 2 alojada en Amazon ECR Public. Las instrucciones
RUNactualizan 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 folletoEXPOSEexpone el puerto 80 en el contenedor y las instruccionesCMDinician el servidor web. -
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 . -
Incluya la imagen de su contenedor.
docker images --filter reference=hello-worldSalida:
REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 194MB
-
Ejecute la nueva imagen. La opción
-p 80:80asigna 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-worldnota
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" -
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-namecon el nombre de la máquina docker que esté usando.docker-machine ipmachine-name
Debería ver una página web que diga "Hello, World!" statement.
-
-
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-namehello-repository\ --regionregion
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 --regionregion| docker login --username AWS --password-stdin.dkr.ecr.aws_account_idregion.amazonaws.com -
Get-ECRLoginCommand (AWS Tools for Windows PowerShell)
(Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin.dkr.ecr.aws_account_idregion.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
-
Muestre las imágenes que ha almacenado localmente para identificar la que desea etiquetar e insertar.
docker imagesSalida:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
-
Etiquete la imagen que desea insertar en el repositorio.
docker tag hello-world:latestaws_account_id.dkr.ecr.region.amazonaws.com/hello-repository -
Inserte la imagen.
docker pushaws_account_id.dkr.ecr.region.amazonaws.com/hello-repository:latestSalida:
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 pullaws_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 foraws_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 \ --regionregion
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 \ --regionregion