Ayude a mejorar esta página
¿Quiere contribuir a esta guía del usuario? Desplácese hasta el final de esta página y seleccione Editar esta página en GitHub. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.
Copiar una imagen de contenedor de un repositorio en 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 equipo. Para ver instrucciones, consulte Instalar motor de Docker
en la documentación de Docker. -
La versión
2.12.3
o posterior, o bien, la versión1.27.160
o posterior de la AWS Command Line Interface (AWS CLI) instalada y configurada en su dispositivo o AWS CloudShell. Para comprobar su versión actual, utilice
. Los administradores de paquetes tales comoaws --version | cut -d / -f2 | cut -d ' ' -f1
yum
,apt-get
o Homebrew para macOS suelen estar atrasados varias versiones respecto de la versión de la AWS CLI más reciente. Para instalar la versión más reciente, 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. La versión de AWS CLI instalada en AWS CloudShell también puede estar atrasada varias versiones respecto de la versión más reciente. Para actualizarla, consulte Instalación de la AWS CLI en el directorio de inicio en la Guía del usuario de AWS CloudShell. -
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 Amazon VPC CNI plugin for Kubernetes
por sus propios valores.example values
Para copiar una imagen de contenedor de un repositorio a otro
-
Si todavía no tiene un repositorio de Amazon ECR u otro repositorio, cree uno al que tengan acceso sus nodos. El siguiente comando 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
con 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. Reemplacecni-metrics-helper
por una Región de AWS compatible con Amazon ECR.region-code
aws ecr create-repository --region
region-code
--repository-namecni-metrics-helper
-
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 Amazon VPC CNI plugin for Kubernetes . El registro es 602401143452.dkr.ecr.us-west-2.amazonaws.com
, que es un registro privado de Amazon ECR. El repositorio escni-metrics-helper
.image: "602401143452.dkr.ecr.us-west-2.amazonaws.com/cni-metrics-helper:v1.12.6"
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
. Es opcional definir un espacio de nombres para el repositorio, pero a veces lo especifica el propietario del repositorio para clasificar las imágenes. Por ejemplo, todas las imágenes de Amazon EC2 de la galería pública de Amazon ECRusan 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 archivovalues.yaml
para el auxiliar de métricas Amazon VPC CNI plugin for Kubernetesincluye las siguientes líneas. image: region: us-west-2 tag: v1.12.6 account: "602401143452" domain: "amazonaws.com"
-
-
Extraiga la imagen del contenedor especificada en el archivo de manifiesto.
-
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 un registro privado de Amazon ECR que contiene el repositorio de la imagen auxiliar de métricas de CNI. Amazon EKS mantiene la imagen en cada registro que aparece en Visualización de los registros de imágenes de contenedores de Amazon para los complementos de Amazon EKS. Puede autenticarse en cualquiera de los registros reemplazando
y602401143452
por la información de otro registro. Existe un registro independiente para cada Región de AWS compatible con Amazon EKS.region-code
aws ecr get-login-password --region
region-code
| docker login --username AWS --password-stdin602401143452
.dkr.ecr.region-code
.amazonaws.com -
Extraiga la imagen. En este ejemplo, extrae del registro en el que se autenticó en el subpaso anterior. Reemplace
y602401143452
con la información proporcionada en el subpaso anterior.region-code
docker pull
/cni-metrics-helper:v602401143452
.dkr.ecr.region-code
.amazonaws.com1.12.6
-
-
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
por su ID de cuenta. Reemplace111122223333
por su Región de AWS que creó en su repositorio privado de Amazon ECR.region-code
docker tag cni-metrics-helper:
v1.12.6
111122223333
.dkr.ecr.
/region-code
.amazonaws.comcni-metrics-helper
:v1.12.6
-
Realice la autenticación del registro. En este ejemplo, se autenticará 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
| docker login --username AWS --password-stdinregion-code
111122223333
.dkr.ecr.region-code
.amazonaws.com -
Inserte la imagen en el repositorio. En este ejemplo, envía 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.comcni-metrics-helper
:v1.12.6
-
Actualice el archivo de manifiesto que utilizó para determinar la imagen en un paso anterior con el
registry/repository:tag
para la imagen que envió. Si hace la instalación con un gráfico de Helm, a menudo hay una opción para especificar elregistry/repository:tag
. Al instalar el gráfico, especifique elregistry/repository:tag
para la imagen que envió a su repositorio.