Ejecute el contenedor Docker en AWS ECS y cargue la imagen de Docker en ECR

Puede descargar este artículo en formato PDF a través del siguiente enlace para apoyarnos.
Descarga la guía en formato PDFapagar

Este artículo es la segunda parte de una guía de tres partes para ejecutar contenedores Docker en AWS ECS. ECS significa Servicio de contenedor elástico. Es un servicio de contenedor administrado que puede ejecutar contenedores acoplables. Aunque AWS también proporciona gestión de contenedores a través de Kubernetes (EKS), también tiene su propia solución patentada (ECS).

Esta es la parte 1 del artículo: Uso de ECS para ejecutar contenedores Docker en AWS-Parte 1

La guía cubrirá:

  • Crear clúster ECS
  • Configure el registro de imágenes (ECR) y envíe la imagen de la ventana acoplable al registro.
  • Implementar contenedores en el clúster mediante definiciones de tareas y servicios
  • Cree una canalización para actualizar los servicios que se ejecutan en el clúster ECS

La parte 2 de esta guía explicará cómo crear un registro de imágenes (ECR) y enviar la imagen al registro.

Para esta demostración, usaremos una imagen simple de hola mundo. Extraeremos la imagen de la ventana acoplable y la enviaremos a nuestro registro de contenedores (ECR).

Configurar requisitos/requisitos previos

Antes de continuar leyendo esta guía, el usuario/lector debe asegurarse de que se cumplan los siguientes requisitos. Esto incluye:

  • Una cuenta de AWS.
  • Se crea un usuario en la cuenta y el usuario tiene permiso para aprovisionar recursos en la cuenta.
  • Un depósito de S3 para almacenar nuestros artefactos de CodeBuild.
  • Un grupo de registros de CloudWatch o un depósito de S3 para almacenar los registros de su proyecto de compilación.

Crear AWS ECR (Registro de contenedores elásticos)

Elastic Container Registry (ECR) es un registro de contenedores alojado en AWS para almacenar imágenes de Docker. Usaremos la plantilla de CloudFormation a continuación para crear el registro.

AWSTemplateFormatVersion: "2010-09-09"
Description: 'Template to create an ECR repository'

Parameters:
  ECR:
    Type: String
    Description: "The Name of your ECR registry"

Resources:
  ECRRepository1:
    Type: "AWS::ECR::Repository"
    Properties:
      RepositoryName: test-ecr
      ImageScanningConfiguration:
        scanOnPush: "true"
      Tags: 
        - Key: Name
          Value: !Ref ECR
        - Key: createdBy
          Value: Maureen Barasa
        - Key: Project
          Value: test-ecs

Outputs:
  RegistryName:
    Value: !Ref ECR
    Description: Name of the ECR Registry

Los lectores/usuarios deben personalizar la plantilla para reflejar sus requisitos específicos. Los aspectos específicos de la plantilla a personalizar son:

  • etiqueta.
  • Propiedades del repositorio.

Para crear manualmente un registro en la consola de ECR, haga lo siguiente: Haga clic en Crear repositorio. Crear un repositorio

Luego configure los ajustes del repositorio.Configurar los ajustes del repositorio

Cuando termine, haga clic en Crear. Ahora creará su repositorio ECR.

Cargue imágenes en AWS ECR mediante AWS CodeBuild

Una vez que tenga un repositorio de imágenes, es hora de cargar imágenes en el repositorio. Usaremos CodeBuild para extraer la imagen del Docker Hub y enviarla al registro ECR.

En la consola de CodeBuild, haga clic en "Crear proyecto de compilación".Crear, construir proyecto

A continuación, en la configuración del proyecto y de la fuente, ingrese el nombre y la descripción de su proyecto. Además, puede agregar etiquetas para crear proyectos.

Para la fuente, seleccione Sin fuente. Si su archivo acoplable está en un repositorio o depósito s3, seleccione la fuente como repositorio. Las opciones de fuente incluyen:

  • GitHub
  • cubo de bits
  • Envío de código
  • Edición empresarial de GitHub
  • cubo S3

Configuración de proyecto y fuente.

Luego, en ese entorno, seleccione el entorno donde desea ejecutar el proyecto de compilación. Como nuestra imagen es una imagen de Linux, elegimos el entorno Linux.Elija el entorno de construcción

Para el rol, seleccione el nuevo rol de servicio.NÓTESE BIEN:Asegúrese de que el rol tenga una política adicional de AmazonEC2ContainerRegistryFullAccess. De lo contrario, CodeBuild no funcionará correctamente.

A continuación, en buildspec, seleccione el comando insertar compilación y pegue una de las dos plantillas siguientes:

version: 0.2
phases:
  install:
    runtime-versions:
       docker: 19
    commands:
      - curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
      - unzip awscliv2.zip
      - ./aws/install
  pre_build:
    commands:
      - echo logging to ecr
      - $(aws ecr get-login --no-include-email --region eu-central-1)
  build:
    commands:
      - docker pull hello-world
      - docker tag hello-world:latest 429758582529.dkr.ecr.eu-central-1.amazonaws.com/hello-world:latest
      
  post_build:
    commands:
      - echo build completed on 'date'
      - echo pushing to repo
      - docker push 429758582529.dkr.ecr.eu-central-1.amazonaws.com/hello-world:latest
      - echo Writing definitions file...
      - printf '[{"name":"Hello_World","imageUri":"%s"}]' 429758582529.dkr.ecr.eu-central-1.amazonaws.com/hello-world:latest > HelloWorldtaskdefinition.json
artifacts:
  files: HelloWorldtaskdefinition.json

En caso de que desee crear una imagen a partir de un archivo acoplable, puede enviar el código. Utilice la siguiente especificación de compilación.

version: 0.2
phases:
  install:
    runtime-versions:
       docker: 19
    commands:
      - curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
      - unzip awscliv2.zip
      - ./aws/install
  pre_build:
    commands:
      - echo logging to ecr
      - $(aws ecr get-login --no-include-email --region eu-central-1)
  build:
    commands:
      - echo starting build on 'date'
      - cd ./
      - docker build -t hello-world .
      - docker tag hello-world:latest 429758582529.dkr.ecr.eu-central-1.amazonaws.com/hello-world:latest
  post_build:
    commands:
      - echo build completed on 'date'
      - echo pushing to repo
      - docker push 429758582529.dkr.ecr.eu-central-1.amazonaws.com/hello-world:latest
      - echo Writing definitions file...
      - printf '[{"name":"Hello_World","imageUri":"%s"}]' 429758582529.dkr.ecr.eu-central-1.amazonaws.com/hello-world:latest > HelloWorldtaskdefinition.json
artifacts:
  files: HelloWorldtaskdefinition.json

Luego, debajo del componente, seleccione el depósito s3 creado previamente de acuerdo con la lista de requisitos.

construir artefactos

Finalmente, en "Registros", puede elegir entre CloudWatch Log Group o S3 Bucket.Seleccionar opciones de grabación

Cuando termine, haga clic en Crear para construir el proyecto. Después de crear el proyecto, ahora puede hacer clic para comenzar a construir.

A medida que se ejecuta el proyecto de compilación, puede verificar el progreso en los detalles de "Registro de compilación" y "Fase". Vea el proyecto de construcción a continuación.Establecer el estado del proyecto

La imagen ha sido enviada al registro.

Ahora, hemos extraído con éxito la imagen de la ventana acoplable y la hemos enviado a nuestro registro ECR. En el próximo artículo, estudiaremos cómo implementar la imagen en un clúster de AWS ECS.

Otras pautas de AWS:

  • Cómo montar el sistema de archivos AWS EFS en una instancia EC2
  • Cree usuarios y grupos de AWS IAM mediante AWS CLI

¡Feliz edificio! ! !

Puede descargar este artículo en formato PDF a través del siguiente enlace para apoyarnos.
Descarga la guía en formato PDFapagar

Artículos Relacionados