Cómo configurar Elastic Container Registry (ECR) para Docker en AWS

Amazon Elastic Container Registry (ECR) es un servicio de registro de contenedores gestionado de AWS. Este servicio se encuentra en «Compute» en la consola de AWS. Se utiliza para almacenar, gestionar y desplegar imágenes de contenedores Docker. ECR está integrado en Amazon Elastic Container Service (ECS).

Con ECR, no hay cuotas por adelantado. Sólo pagamos por la cantidad de datos que almacenamos en nuestros repositorios y por los datos transferidos a Internet. Para saber más sobre la facturación de ECR, haz clic aquí.

Antes de continuar, vamos a entender algunos términos que vamos a ver más adelante en este artículo.

Registro: Es un lugar en el que podemos crear repositorios de imágenes y almacenarlas en él.

Token de autorización: El cliente Docker debe autenticarse en los registros de Amazon ECR como usuario de AWS antes de poder enviar y retirar imágenes. Las credenciales de autenticación se pueden recuperar desde el comando get-login de la CLI de AWS que proporciona para pasarlas a Docker.

Repositorio: El repositorio de imágenes contiene imágenes Docker. Política del repositorio

Imagen: Podemos empujar y extraer imágenes Docker a nuestros repositorios. Podemos utilizar estas imágenes localmente en nuestro sistema.

En este artículo, veremos cómo crear un registro ECR, un repositorio, y empujar y tirar de la imagen Docker hacia/desde él. Intentaré que este documento sea lo más sencillo posible para que aquellos que sean nuevos en esto no necesiten mucho esfuerzo para entenderlo.

Requisitos previos

  1. Cuenta de AWS (Crea si no tienes una)
  2. Servidor Ubuntu 18.04 o Instancia EC2 Ubuntu 18.04 (Haz clic aquí para aprender a crear una instancia EC2 si no tienes una o si quieres aprender )
  3. Docker preinstalado en tu sistema.

¿Qué vamos a hacer?

  1. Iniciar sesión en AWS.
  2. Crear un Repositorio ECR.
  3. Instalar AWS CLI en el servidor Linux
  4. Autentificar el cliente Docker desde el Terminal y Etiquetar y subir la Imagen local al Repositorio ECR.
  5. Desetiqueta y borra la Imagen del sistema local y saca el Repositorio ECR.

Inicia sesión en AWS

  1. Haz clic en aquí para ir a la página de inicio de sesión de AWS.

Cuando pulsemos el enlace anterior, veremos una página web como la siguiente en la que se nos pide que iniciemos sesión con nuestros datos de acceso.

Consola de administración de AWS

Crear un Repo ECR

Para crear un Repo de ECR haz clic en la flecha cerca de «Servicios» y verás una lista de Servicios de AWS.

Haz clic en «ECR» de la lista. Puedes elegir la región deseada. Aquí estoy procediendo con París.

Crear un repositorio ECR

Verás una pantalla como la siguiente.

Haz clic en «Empezar» para crear tu primer repo.

Crear el primer repo

Ahora, en la siguiente pantalla, dale el nombre que quieras al repo que se va a crear.

En la misma pantalla, puedes ver dos opciones disponibles.

  1. Inmutabilidad de la etiqueta:
    Esta función evita que las etiquetas de las imágenes sean sobrescritas por posteriores empujes de imágenes que utilicen la misma etiqueta.
  2. Escanearalempujar:
    Con esta función podemos activar el escaneo al empujar para que cada imagen sea escaneada automáticamente después de ser empujada a un repositorio.

Por ahora, no habilitaremos estas funciones.

Simplemente haz clic en «Crear Repositorio» para proceder.

Crear Repositorio

Ahora puedes ver que el repositorio está listo para ser utilizado.

El repositorio está listo para ser utilizado

Instalar AWS CLI en un servidor Linux

También necesitarás el comando «aws» en tu sistema.

Para instalar «aws» en el sistema Ubuntu sólo tienes que escribir los siguientes comandos

apt-get  update
apt-get  install awscli

instalar awscli

Autentificar el cliente Docker desde el terminal y etiquetar y subir la imagen existente a la Repo de ECR.

Una vez que tenemos el comando «aws» en nuestro sistema, necesitamos autenticar al cliente Docker ennuestro registro y para ello necesitamos tener un sistema con Docker instalado en él.

Puedes consultar la página oficial de Docker para instalar Docker en tu sistema.

Podemos verificar la versión de Docker con el comando «docker –version».

Comprueba la versión de Docker

Antes de autenticar al cliente Docker en nuestro registro, necesitamos exportar nuestra aws_access_key_id y aws_secret_access_key.

Consulta ladocumentación oficial de AWS para saber más sobre esto.

Utiliza los siguientes comandos para exportar las claves necesarias.

aws configure set aws_access_key_id YOUR_ACCESS_KEY
aws configure set aws_secret_access_key YOUR_SECRET_KEY
aws configure set default.region YOUR_DEFAULT_REGION
aws configure set default.output json

Una vez que hayamos exportado estos valores, estaremos listos paraautenticar al cliente Docker en nuestro registro.

Primero, haz clic en el repo y luego en «Ver comandos push»:

Ver comandos push

Veremos todos los comandos necesarios una vez que hagamos clic en «View Push Commands»:

Ver comandos push

Copia el primer comando y ejecútalo desde tu sistema paraautentificar al cliente Docker en nuestro registro.

Conseguir el acceso al ECR

Ahora vamos a sacar una imagen de Docker Hub que empujaremos a la Repo de ECR o construiremos nosotros mismos desde nuestro Dockerfile. Aquí sacaré la imagen apache/httpd y luego la empujaré

docker pull httpd

Enumerar las imágenes para ver las imágenes disponibles en el sistema local.

docker images

Copia el segundo comando si quieres construir tu propia imagen o ve al tercer comando y ejecútalo

docker tag <Nombre_de_la_imagen>:<Etiqueta> <ECR_Repo>:<Etiqueta>

Aquí lo tienes,

docker tag httpd:latest 064827688814.dkr.ecr.eu-west-3.amazonaws.com/rahul-ecr-repo:latest

NO UTILICES esta dirección porque ya he eliminado el repo.

Ahora estamos listos para enviar la imagen a ECR.

Copia el cuarto comando y ejecútalo.

Esto empujará con éxito la imagen al repositorio ECR.

empujar la imagen a ECR Repo

Visión general de ECR Repo

Destapa y borra la imagen del sistema local y sácala del repositorio ECR

Podemos eliminar la imagen local si ya no la necesitas.

docker rmi <Nombre_de_la_imagen>

Aquí lo tienes,

docker  rmo httpd

De la misma manera, puedes eliminar la Imagen etiquetada del sistema local.

Luego puedes intentar sacar la Imagen del repo de ECR.

Ve al repo y copia el URI de la imagen:

docker  pull “IMAGE_URI”

sacar la imagen del repo de ECR

Conclusión

En este artículo hemos aprendido a crear un Repositorio ECR, iniciar sesión en elcliente Docker, etiquetar la Imagen local y empujarla al Repo ECR y tirar de la misma.

También te podría gustar...