O Amazon ECR Docker Credential Helper é um auxiliar de credenciais para o daemon Docker que facilita o uso do Amazon Elastic Container Registry.
Pré-requisitos
Instalando
Amazon Linux 2023 (AL2023)
Amazon Linux 2 (AL2)
Mac OS
Debian Buster (e versões futuras)
Ubuntu 19.04 Disco Dingo e mais recente
Arco Linux
Alpino Linux
Windows
Da fonte
Configuração
Docker
Credenciais AWS
Auxiliar de credenciais do Docker do Amazon ECR
Uso
Solução de problemas
Divulgações de segurança
Licença
Você deve ter pelo menos Docker 1.11 instalado em seu sistema.
Você também deve ter credenciais da AWS disponíveis. Consulte a seção de credenciais da AWS para obter detalhes sobre como usar diferentes credenciais da AWS.
Você pode instalar o Amazon ECR Credential Helper nos repositórios do Amazon Linux 2023.
$ sudo dnf install -y amazon-ecr-credential-helper
Depois de instalar o auxiliar de credencial, consulte a seção Configuração para obter instruções sobre como configurar o Docker para funcionar com o auxiliar.
Você pode instalar o Amazon ECR Credential Helper a partir do docker
ou dos extras ecs
.
$ sudo amazon-linux-extras habilitar docker $ sudo yum instalar amazon-ecr-credential-helper
Depois de instalar o auxiliar de credencial, consulte a seção Configuração para obter instruções sobre como configurar o Docker para funcionar com o auxiliar.
Uma fórmula Homebrew mantida pela comunidade está disponível na torneira principal.
$ brew install docker-credencial-helper-ecr
No macOS, outro método de instalação mantido pela comunidade é usar MacPorts.
$ sudo port install docker-credential-helper-ecr
Depois de instalar o auxiliar de credencial, consulte a seção Configuração para obter instruções sobre como configurar o Docker para funcionar com o auxiliar.
Você pode instalar o Amazon ECR Credential Helper a partir dos arquivos do Debian Buster. Este pacote também será incluído em versões futuras do Debian.
$ sudo atualização apt $ sudo apt instalar amazon-ecr-credential-helper
Depois de instalar o auxiliar de credencial, consulte a seção Configuração para obter instruções sobre como configurar o Docker para funcionar com o auxiliar.
Você pode instalar o Amazon ECR Credential Helper dos arquivos do Ubuntu 19.04 Disco Dingo (e mais recentes).
$ sudo atualização apt $ sudo apt instalar amazon-ecr-credential-helper
Depois de instalar o auxiliar de credencial, consulte a seção Configuração para obter instruções sobre como configurar o Docker para funcionar com o auxiliar.
Um pacote mantido pela comunidade está disponível no Arch User Repository.
$ git clone https://aur.archlinux.org/amazon-ecr-credential-helper.git $ cd amazon-ecr-credential-helper $ makepkg -si
Depois de instalar o auxiliar de credencial, consulte a seção Configuração para obter instruções sobre como configurar o Docker para funcionar com o auxiliar.
Um pacote mantido pela comunidade está disponível no repositório Alpine Linux aports.
$ apk adicionar docker-credential-ecr-login
Observação
O emblema mostra apenas o Edge, verifique o repositório para versões estáveis ou adicione --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community
Depois de instalar o auxiliar de credencial, consulte a seção Configuração para obter instruções sobre como configurar o Docker para funcionar com o auxiliar.
Os executáveis do Windows estão disponíveis nas versões do GitHub.
Observação
O suporte do Windows ARM é considerado experimental.
Veja #795
Para criar e instalar o Amazon ECR Docker Credential Helper, sugerimos Go 1.19 ou posterior, git
e make
instalado em seu sistema.
Se você acabou de instalar o Go, certifique-se de tê-lo adicionado também ao seu PATH ou Environment Vars (Windows). Por exemplo:
$ export GOPATH=$HOME/go $ export PATH=$PATH:$GOPATH/bin
Ou no Windows:
setx GOPATH %USERPROFILE%go <your existing PATH definitions>;%USERPROFILE%gobin
Se você não definiu o PATH, o comando abaixo falhará silenciosamente e a execução docker-credential-ecr-login
produzirá: command not found
Você pode instalar isso por meio da ferramenta de linha de comando go
.
Para instalar execute:
go install github.com/awslabs/amazon-ecr-credential-helper/ecr-login/cli/docker-credential-ecr-login@latest
Aviso
Isenção de responsabilidade: o Dockerfile neste repositório é usado para testar a compilação cruzada dos binários auxiliares de credenciais do Amazon ECR no GitHub Actions CI e como um utilitário de desenvolvedor para compilar localmente a partir da fonte. É uma implementação de referência e não uma segurança reforçada para construir e executar contêineres de produção.
Se você já possui um ambiente Docker, basta clonar este repositório em qualquer lugar e executar make build-in-docker
. Este comando constrói o binário com Go dentro do contêiner Docker e o envia para o diretório local.
Com a variável de ambiente TARGET_GOOS
, você também pode compilar o binário de forma cruzada.
Depois de instalar o auxiliar de credencial, consulte a seção Configuração para obter instruções sobre como configurar o Docker para funcionar com o auxiliar.
Não há necessidade de usar docker login
ou docker logout
.
Coloque o binário docker-credential-ecr-login
em seu PATH
e defina o conteúdo do seu arquivo ~/.docker/config.json
como:
{ "credsStore": "ecr-login"}
Isso configura o daemon do Docker para usar o auxiliar de credenciais para todos os registros do Amazon ECR.
O Amazon ECR Docker Credential Helper pode ser usado junto com seus tokens de autenticação de login do Docker existentes:
{ "credsStore": "ecr-login", "auths": { "https://index.docker.io/v1/": { "auth": [docker.io-auth-token] }, "registry.gitlab.com": { "auth": [gitlab-auth-token] }, } }
Com o Docker 1.13.0 ou superior, você pode configurar o Docker para usar diferentes auxiliares de credenciais para diferentes registros ECR. Para usar este auxiliar de credencial para um registro ECR específico, crie uma seção credHelpers
com o URI do seu registro ECR:
{ "credHelpers": { "public.ecr.aws": "ecr-login", "<aws_account_id>.dkr.ecr.<region>.amazonaws.com": "ecr-login" } }
Isso é útil se você usar docker
para operar em registros que usam credenciais de autenticação diferentes.
O Amazon ECR Docker Credential Helper permite usar credenciais da AWS armazenadas em locais diferentes. Os padrão incluem:
O arquivo de credenciais compartilhadas ( ~/.aws/credentials
)
As variáveis de ambiente AWS_ACCESS_KEY_ID
e AWS_SECRET_ACCESS_KEY
Uma função do IAM para uma tarefa do Amazon ECS
Uma função do IAM para Amazon EC2
Para usar credenciais associadas a um perfil nomeado diferente no arquivo de credenciais compartilhadas ( ~/.aws/credentials
), você pode definir a variável de ambiente AWS_PROFILE
.
O Amazon ECR Docker Credential Helper lê e oferece suporte a algumas opções de configuração especificadas no arquivo de configuração compartilhado da AWS ( ~/.aws/config
). Para desabilitar essas opções, você deve definir a variável de ambiente AWS_SDK_LOAD_CONFIG
como false
. As opções suportadas incluem:
Funções assumidas especificadas com role_arn
e source_profile
Processos de credenciais externas especificados com credential_process
Identidades da Web como funções IAM para contas de serviço no Kubernetes ( Observação: usuários do Kubernetes que usam contêineres com um usuário não root podem encontrar problemas de permissão descritos neste bug e podem precisar empregar uma solução alternativa ajustando o securityContext
do Kubernetes. )
O Amazon ECR Docker Credential Helper usa as mesmas credenciais que a AWS CLI e os AWS SDKs. Para obter mais informações sobre como configurar credenciais da AWS, consulte Arquivos de configuração e credenciais no Guia do usuário do AWS Command Line Interface .
As credenciais devem ter uma política aplicada que permita acesso ao Amazon ECR.
Variável de ambiente | Valor da amostra | Descrição |
---|---|---|
AWS_ECR_DISABLE_CACHE | verdadeiro | Desativa o cache de autenticação de arquivo local se definido com um valor não vazio |
AWS_ECR_CACHE_DIR | ~/.ecr | Especifica a localização do diretório de cache de autenticação do arquivo local |
AWS_ECR_IGNORE_CREDS_STORAGE | verdadeiro | Ignore as chamadas para fazer login ou logout do docker e finja que foram bem-sucedidas |
docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
docker push 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
docker pull public.ecr.aws/amazonlinux/amazonlinux:latest
Se você configurou perfis adicionais para uso com a AWS CLI, poderá usar esses perfis especificando a variável de ambiente AWS_PROFILE
ao invocar docker
. Por exemplo:
AWS_PROFILE=myprofile docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
Não há necessidade de usar docker login
ou docker logout
.
Se você já se autenticou anteriormente com um repositório ECR usando o comando docker login
manualmente, o Docker pode ter armazenado um token de autenticação que já expirou. O Docker continuará tentando usar esse token de autenticação em cache em vez de utilizar o auxiliar de credencial. Você deve remover explicitamente o token expirado armazenado em cache anteriormente usando docker logout 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository
. Depois disso, o Docker começará a utilizar o auxiliar de credenciais ECR para buscar novas credenciais, e você não precisará mais usar docker login
ou docker logout
.
Os logs do Amazon ECR Docker Credential Helper são armazenados em ~/.ecr/log
.
Para obter mais informações sobre o Amazon ECR, consulte o Guia do usuário do Amazon Elastic Container Registry.
Os recursos marcados como experimentais são opcionalmente disponibilizados aos usuários para testar e fornecer feedback.
Se você testar algum recurso experimental, poderá fornecer feedback por meio do problema de rastreamento do recurso sobre:
Sua experiência com o recurso
Questões ou problemas
Melhorias sugeridas
Os recursos experimentais estão incompletos em design e implementação. Alterações incompatíveis com versões anteriores podem ser introduzidas a qualquer momento ou o suporte pode ser totalmente abandonado. Portanto, os recursos experimentais não são recomendados para uso em ambientes de produção.
Se você acha que encontrou um possível problema de segurança, não o publique na seção Problemas. Em vez disso, siga as instruções aqui ou envie um e-mail diretamente para a segurança da AWS.
O Amazon ECR Docker Credential Helper é licenciado sob a licença Apache 2.0.