Copiar una imagen de contenedor de un repositorio a otro repositorio - Amazon EKS

Copiar una imagen de contenedor de un repositorio a otro repositorio

En este tema se describe cómo extraer una imagen de contenedor de un repositorio al que los nodos no tienen acceso y enviar la imagen a un repositorio al que tienen acceso los nodos. Puede enviar la imagen a Amazon ECR o a un repositorio alternativo al que tengan acceso sus nodos.

Requisitos previos

  • El motor de Docker instalado y configurado en su computadora. Para ver instrucciones, consulte Install Docker Engine (Instalar motor de Docker) en la documentación de Docker.

  • Versión 2.4.9 o posterior, o bien, la versión 1.22.30 o posterior de la AWS CLI instalada y configurada en su computadora o AWS CloudShell. Para obtener más información, consulte Instalar, actualizar y desinstalar la AWS CLI y Configuración rápida con aws configure en la Guía del usuario de AWS Command Line Interface.

  • Un punto de conexión de VPC de interfaz para Amazon ECR si desea que los nodos extraigan imágenes de contenedor o envíen imágenes de contenedor a un repositorio privado de Amazon ECR a través de la red de Amazon. Para obtener más información, consulte Crear los puntos de conexión de VPC para Amazon ECR en la Guía del usuario de Amazon Elastic Container Registry.

Siga los siguientes pasos para extraer una imagen de contenedor de un repositorio y enviarla a su propio repositorio. En los siguientes ejemplos que se proporcionan en este tema, se extrae la imagen del Auxiliar de métricas de CNI. Cuando siga estos pasos, asegúrese de reemplazar los valores de ejemplo por sus propios valores.

Para copiar una imagen de contenedor de un repositorio a otro

  1. Si todavía no tiene un repositorio de Amazon ECR u otro repositorio, cree uno al que tengan acceso sus nodos. El comando siguiente crea un repositorio privado de Amazon ECR. El nombre de un repositorio privado de Amazon ECR debe comenzar por una letra. Solo puede contener letras minúsculas, números, guiones (-), guiones bajos (_) y barras inclinadas (/). Para obtener más información, consulte Creación de un repositorio privado en la Guía del usuario de Amazon Elastic Container Registry.

    Puede reemplazar cni-metrics-helper por lo que elija. Como práctica recomendada, cree un repositorio independiente para cada imagen. Recomendamos esto porque las etiquetas de imagen deben ser únicas dentro de un repositorio. Reemplace region-code por una Región de AWS compatible con Amazon ECR.

    aws ecr create-repository --region region-code --repository-name cni-metrics-helper
  2. Determine el registro, el repositorio y la etiqueta (opcional) de la imagen que deben extraer los nodos. Esta información se encuentra en el formato registry/repository[:tag].

    Muchos de los temas de Amazon EKS sobre la instalación de imágenes requieren aplicar un archivo de manifiesto o instalar la imagen mediante un gráfico de Helm. Sin embargo, antes de aplicar un archivo de manifiesto o instalar un gráfico de Helm, consulte primero el contenido del manifiesto o el archivo values.yaml del gráfico. Así podrá determinar el registro, el repositorio y la etiqueta que desea extraer.

    Por ejemplo, puede encontrar la siguiente línea en el archivo de manifiesto para el Auxiliar de métricas de CNI. El registro es 602401143452.dkr.ecr.us-west-2.amazonaws.com, que es un registro privado de Amazon ECR. El repositorio es cni-metrics-helper.

    image: "602401143452.dkr.ecr.us-west-2.amazonaws.com/cni-metrics-helper:v1.10.2"

    Podría ver las siguientes variaciones para la ubicación de una imagen:

    • Solo repository-name:tag. En este caso, docker.io suele ser el registro, pero no se especifica ya que Kubernetes lo antepone a un nombre de repositorio de forma predeterminada si no se especifica ningún registro.

    • repository-name/repository-namespace/repository:tag. Un espacio de nombres de repositorio es opcional, pero a veces lo especifica el propietario del repositorio para clasificar las imágenes. Por ejemplo, todas las imágenes de Amazon EC2 en la galería pública de Amazon ECR usan el espacio de nombres aws-ec2.

    Antes de instalar una imagen con Helm, consulte el archivo values.yaml de Helm para determinar la ubicación de la imagen. Por ejemplo, el archivo values.yaml para el Auxiliar de métricas de CNI incluye las siguientes líneas.

    image: region: us-west-2 tag: v1.10.2 account: "602401143452" domain: "amazonaws.com"
  3. Extraiga la imagen del contenedor especificada en el archivo de manifiesto.

    1. Si la extracción es de un registro público, como la galería pública de Amazon ECR, puede pasar al siguiente subpaso porque no es necesaria la autenticación. En este ejemplo, se autentica en el registro privado de Amazon ECR especificado en el manifiesto del paso anterior. Amazon EKS mantiene varias imágenes y las replica en los registros enumerados en Registros de imágenes de contenedor de Amazon. Puede autenticarse en cualquiera de los registros reemplazando 602401143452 y region-code por la información de otro registro. Existe un registro independiente para cada Región de AWS compatible con Amazon EKS.

      aws ecr get-login-password --region region-code | docker login --username AWS --password-stdin 602401143452.dkr.ecr.region-code.amazonaws.com
    2. Extraiga la imagen. En este ejemplo, hará la extracción del registro en el que se autenticó en el subpaso anterior reemplazando 602401143452 y region-code por los mismos valores que usó en el subpaso anterior.

      docker pull 602401143452.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.10.2
  4. Etiquete la imagen extraída con su registro, repositorio y etiqueta. En el siguiente ejemplo se supone que ha extraído la imagen del archivo de manifiesto y la va a enviar al repositorio privado de Amazon ECR que creó en el primer paso. Reemplace 111122223333 por su ID de cuenta y region-code por la Región de AWS en la que creó su repositorio privado de Amazon ECR.

    docker tag cni-metrics-helper:v1.10.2 111122223333.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.10.2
  5. Realice la autenticación del registro. En este ejemplo, se autentica en el registro privado de Amazon ECR que creó en el primer paso. Para obtener más información, consulte Autenticación de registros en la Guía del usuario de Amazon Elastic Container Registry.

    aws ecr get-login-password --region region-code | docker login --username AWS --password-stdin 111122223333.dkr.ecr.region-code.amazonaws.com
  6. Inserte la imagen en el repositorio. En este ejemplo, inserta la imagen en el repositorio privado de Amazon ECR que creó en el primer paso. Para obtener más información, consulte Inserción de una imagen de Docker en la Guía del usuario de Amazon Elastic Container Registry.

    docker push 111122223333.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.10.2
  7. Actualice el archivo de manifiesto que utilizó para determinar la imagen en un paso anterior con el registry/repository:tag para la imagen que insertó. Si hace la instalación con un gráfico de Helm, a menudo hay una opción para especificar el registry/repository:tag. Al instalar el gráfico, especifique el registry/repository:tag para la imagen que insertó a su repositorio.