Copiar uma imagem de contêiner de um repositório para outro - Amazon EKS

Ajudar a melhorar esta página

Quer contribuir para este guia do usuário? Role até o final desta página e selecione Editar esta página no GitHub. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.

Copiar uma imagem de contêiner de um repositório para outro

Este tópico descreve como extrair uma imagem de contêiner de um repositório ao qual seus nós não têm acesso e enviar a imagem para um repositório ao qual seus nós têm acesso. Você pode enviar a imagem para o Amazon ECR ou para um repositório alternativo ao qual seus nós têm acesso.

Pré-requisitos
  • O mecanismo do Docker instalado e configurado no computador. Para obter instruções, consulte Instalar mecanismo do Docker na documentação do Docker.

  • A versão 2.12.3 ou superior ou a versão 1.27.160 ou superior da AWS Command Line Interface (AWS CLI) instalada e configurada em seu dispositivo ou no AWS CloudShell. Para verificar sua versão atual, use aws --version | cut -d / -f2 | cut -d ' ' -f1. Gerenciadores de pacotes, como yum, apt-get ou Homebrew para macOS, geralmente estão várias versões atrás da versão mais recente da AWS CLI. Para instalar a versão mais recente, consulte Instalar, atualizar e desinstalar a AWS CLI e Configuração rápida com o aws configure no Guia do usuário da AWS Command Line Interface. A versão da AWS CLI instalada no AWS CloudShell também pode estar várias versões atrás da versão mais recente. Para atualizá-la, consulte Instalar a AWS CLI no diretório inicial no Guia do usuário do AWS CloudShell.

  • Um endpoint da VPC de interface para o Amazon ECR se você quiser que seus nós extraiam imagens de contêiner ou enviem imagens de contêiner para um repositório privado do Amazon ECR pela rede da Amazon. Para obter mais informações, consulte Criação dos endpoints da VPC para o Amazon ECR no Guia do usuário do Amazon Elastic Container Registry.

Conclua as etapas a seguir para extrair uma imagem de contêiner de um repositório e enviá-la para seu próprio repositório. Nos exemplos fornecidos a seguir neste tópico, a imagem do auxiliar de métricas do Amazon VPC CNI plugin for Kubernetes é extraída. Ao seguir estas etapas, certifique-se de substituir os example values por seus próprios valores.

Para copiar uma imagem de contêiner de um repositório para outro
  1. Se você ainda não tem um repositório do Amazon ECR ou outro repositório, crie um ao qual os nós tenham acesso. O comando a seguir cria um repositório privado do Amazon ECR. Um nome de repositório privado do Amazon ECR deve começar com uma letra. Ele pode conter apenas letras minúsculas, números, hifens (-), sublinhados (_) e barras (/). Para obter mais informações, consulte Criar um repositório privado no Guia do usuário do Amazon Elastic Container Registry.

    Você pode substituir cni-metrics-helper por qualquer valor que escolher. Como prática recomendada, crie um repositório separado para cada imagem. Recomendamos isso porque as etiquetas de imagem devem ser exclusivas em um repositório. Substitua region-code por uma Região da AWS compatível com o Amazon ECR.

    aws ecr create-repository --region region-code --repository-name cni-metrics-helper
  2. Determine o registro, o repositório e a etiqueta (opcional) da imagem que seus nós precisam extrair. Essas informações estão no formato registry/repository[:tag].

    Muitos dos tópicos do Amazon EKS sobre a instalação de imagens exigem que você aplique um arquivo manifesto ou instale a imagem usando um chart do Helm. No entanto, antes de aplicar um arquivo manifesto ou instalar um chart do Helm, primeiro visualize o conteúdo do manifesto ou arquivo values.yaml do chart. Dessa forma, é possível determinar o registro, o repositório e a etiqueta a serem extraídos.

    Por exemplo, é possível encontrar a seguinte linha no arquivo manifesto para o auxiliar de métricas do Amazon VPC CNI plugin for Kubernetes. O registro é 602401143452.dkr.ecr.us-west-2.amazonaws.com, que é um registro privado do Amazon ECR. O repositório é cni-metrics-helper.

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

    Você poderá ver as seguintes variações para o local de uma imagem:

    • Somente repository-name:tag. Nesse caso, docker.io geralmente é o registro, mas não especificado, pois o Kubernetes, por padrão, pressupõe que seja um nome de repositório se nenhum Registro for especificado.

    • repository-name/repository-namespace/repository:tag. Um namespace de repositório é opcional, mas às vezes é especificado pelo proprietário do repositório para categorizar imagens. Por exemplo, todas as imagens do Amazon EC2 na Galeria Pública do Amazon ECR usam o namespace aws-ec2.

    Antes de instalar uma imagem com Helm, veja o arquivo values.yaml do Helm para determinar a localização da imagem. Por exemplo, o arquivo values.yaml para o auxiliar de métricas do Amazon VPC CNI plugin for Kubernetes inclui as linhas a seguir.

    image: region: us-west-2 tag: v1.12.6 account: "602401143452" domain: "amazonaws.com"
  3. Extraia a imagem do contêiner especificada no arquivo manifesto.

    1. Se você estiver extraindo de um registro público, como a Galeria pública do Amazon ECR, é possível pular para a próxima subetapa, porque a autenticação não é necessária. Nesse exemplo, você se autentica em um registro privado do Amazon ECR que contém o repositório da imagem do auxiliar de métricas CNI. O Amazon EKS mantém a imagem em cada registro listado em Registros de imagem de contêiner da Amazon. Você pode autenticar em qualquer um dos registros substituindo 602401143452 e region-code pelas informações de um registro diferente. Existe um registro separado para cada Região da AWS em que o Amazon EKS tem suporte.

      aws ecr get-login-password --region region-code | docker login --username AWS --password-stdin 602401143452.dkr.ecr.region-code.amazonaws.com
    2. Extraia a imagem. Nesse exemplo, você extrai do registro no qual se autenticou na subetapa anterior. Substitua 602401143452 e region-code pelas informações fornecidas na subetapa anterior.

      docker pull 602401143452.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.12.6
  4. Etiquete a imagem que você extraiu com seu registro, repositório e etiqueta. O exemplo a seguir pressupõe que você extraiu a imagem do arquivo manifesto e a enviará para o repositório privado do Amazon ECR criado na primeira etapa. Substitua 111122223333 pelo ID da sua conta. Substitua region-code pela Região da AWS na qual você criou o repositório privado do Amazon ECR.

    docker tag cni-metrics-helper:v1.12.6 111122223333.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.12.6
  5. Faça a autenticação em seu registro. Neste exemplo, você autentica no registro privado do Amazon ECR criado na primeira etapa. Para obter mais informações, consulte Registry authentication (Autenticação de registro) no Guia do usuário do 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. Envie a imagem ao seu repositório. Neste exemplo, você envia a imagem ao registro privado do Amazon ECR criado na primeira etapa. Para obter mais informações, consulte Envio de uma imagem do Docker no Guia do usuário do Amazon Elastic Container Registry.

    docker push 111122223333.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.12.6
  7. Atualize o arquivo manifesto usado para determinar a imagem em uma etapa anterior com o registry/repository:tag da imagem que você enviou. Se você estiver instalando com um chart do Helm, muitas vezes há uma opção para especificar o registry/repository:tag. Ao instalar o chart, especifique o registry/repository:tag da imagem que você enviou ao seu repositório.