Amazon ECR Docker Credential Helper 是 Docker 守护程序的凭证帮助程序,可让您更轻松地使用 Amazon Elastic Container Registry。
先决条件
安装中
亚马逊 Linux 2023 (AL2023)
亚马逊 Linux 2 (AL2)
苹果电脑操作系统
Debian Buster(及未来版本)
Ubuntu 19.04 Disco Dingo 及更新版本
架构Linux
阿尔卑斯Linux
视窗
从源头
配置
码头工人
AWS 凭证
Amazon ECR Docker 凭证助手
用法
故障排除
安全披露
执照
您的系统上必须至少安装了 Docker 1.11。
您还必须拥有可用的 AWS 凭证。 有关如何使用不同 AWS 凭证的详细信息,请参阅 AWS 凭证部分。
您可以从 Amazon Linux 2023 存储库安装 Amazon ECR 凭证帮助程序。
$ sudo dnf install -y amazon-ecr-credential-helper
安装凭证帮助程序后,请参阅配置部分,了解有关如何配置 Docker 以使用该帮助程序的说明。
您可以从docker
或ecs
extras 安装 Amazon ECR Credential Helper。
$ sudo amazon-linux-extras 启用 docker $ sudo yum 安装 amazon-ecr-credential-helper
安装凭证帮助程序后,请参阅配置部分,了解有关如何配置 Docker 以使用该帮助程序的说明。
核心水龙头中提供了社区维护的 Homebrew 公式。
$brew 安装 docker-credential-helper-ecr
在 macOS 上,另一种社区维护的安装方法是使用 MacPorts。
$ sudo port install docker-credential-helper-ecr
安装凭证帮助程序后,请参阅配置部分,了解有关如何配置 Docker 以使用该帮助程序的说明。
您可以从 Debian Buster 档案安装 Amazon ECR Credential Helper。 该软件包也将包含在 Debian 的未来版本中。
$ sudo apt 更新 $ sudo apt install amazon-ecr-credential-helper
安装凭证帮助程序后,请参阅配置部分,了解有关如何配置 Docker 以使用该帮助程序的说明。
您可以从 Ubuntu 19.04 Disco Dingo(及更高版本)存档安装 Amazon ECR Credential Helper。
$ sudo apt 更新 $ sudo apt install amazon-ecr-credential-helper
安装凭证帮助程序后,请参阅配置部分,了解有关如何配置 Docker 以使用该帮助程序的说明。
Arch 用户存储库中提供了社区维护的软件包。
$ git 克隆 https://aur.archlinux.org/amazon-ecr-credential-helper.git $ cd 亚马逊-ecr-凭证-helper $ makepkg -si
安装凭证帮助程序后,请参阅配置部分,了解有关如何配置 Docker 以使用该帮助程序的说明。
Alpine Linux aports 存储库中提供了社区维护的软件包。
$ apk 添加 docker-credential-ecr-login
笔记
徽章仅显示边缘,检查存储库是否有稳定版本或添加--repository=http://dl-cdn.alpinelinux.org/alpine/edge/community
安装凭证帮助程序后,请参阅配置部分,了解有关如何配置 Docker 以使用该帮助程序的说明。
Windows 可执行文件可通过 GitHub 版本获得。
笔记
Windows ARM 支持被认为是实验性的。
参见#795
要构建和安装 Amazon ECR Docker Credential Helper,我们建议在您的系统上安装 Go 1.19 或更高版本、 git
和make
。
如果您刚刚安装了 Go,请确保您也已将其添加到您的 PATH 或环境变量 (Windows) 中。例如:
$ export GOPATH=$HOME/go $ export PATH=$PATH:$GOPATH/bin
或者在 Windows 中:
setx GOPATH %USERPROFILE%go <your existing PATH definitions>;%USERPROFILE%gobin
如果您还没有定义 PATH,则下面的命令将默默失败,并且运行docker-credential-ecr-login
将输出: command not found
您可以通过go
命令行工具安装它。
要安装运行:
go install github.com/awslabs/amazon-ecr-credential-helper/ecr-login/cli/docker-credential-ecr-login@latest
警告
免责声明:此存储库中的 Dockerfile 用于测试 GitHub Actions CI 中 Amazon ECR 凭证帮助程序二进制文件的交叉编译,并作为从源代码本地构建的开发人员实用程序。它是一个参考实现,并未针对构建和运行生产容器进行安全强化。
如果您已经有了 Docker 环境,只需在任何地方克隆此存储库并运行make build-in-docker
即可。此命令在 Docker 容器内使用 Go 构建二进制文件并将其输出到本地目录。
使用TARGET_GOOS
环境变量,您还可以交叉编译二进制文件。
安装凭证帮助程序后,请参阅配置部分,了解有关如何配置 Docker 以使用该帮助程序的说明。
无需使用docker login
或docker logout
。
将docker-credential-ecr-login
二进制文件放在PATH
中,并将~/.docker/config.json
文件的内容设置为:
{“credsStore”:“ecr-登录”}
这会将 Docker 守护程序配置为对所有 Amazon ECR 注册表使用凭证帮助程序。
Amazon ECR Docker Credential Helper 可与您现有的 docker 登录身份验证令牌一起使用:
{“credsStore”:“ecr-login”,“auths”:{“https://index.docker.io/v1/”:{“auth”:[docker.io-auth-token] }, "registry.gitlab.com": { "auth": [gitlab-auth-token] }, } }
使用 Docker 1.13.0 或更高版本,您可以将 Docker 配置为针对不同的 ECR 注册表使用不同的凭证助手。要将此凭证助手用于特定 ECR 注册表,请使用 ECR 注册表的 URI 创建一个credHelpers
部分:
{ "credHelpers": { "public.ecr.aws": "ecr-login", "<aws_account_id>.dkr.ecr.<region>.amazonaws.com": "ecr-login" } }
如果您使用docker
对使用不同身份验证凭据的注册表进行操作,这非常有用。
Amazon ECR Docker Credential Helper 允许您使用存储在不同位置的 AWS 凭证。 标准的包括:
共享凭证文件 ( ~/.aws/credentials
)
AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
环境变量
Amazon ECS 任务的 IAM 角色
Amazon EC2 的 IAM 角色
要在共享凭证文件 ( ~/.aws/credentials
) 中使用与不同命名配置文件关联的凭证,您可以设置AWS_PROFILE
环境变量。
Amazon ECR Docker Credential Helper 读取并支持 AWS 共享配置文件 ( ~/.aws/config
) 中指定的一些配置选项。 要禁用这些选项,您必须将AWS_SDK_LOAD_CONFIG
环境变量设置为false
。 支持的选项包括:
使用role_arn
和source_profile
指定的假定角色
使用credential_process
指定的外部凭证进程
Web 身份,例如 Kubernetes 中服务帐户的 IAM 角色(注意:使用具有非 root 用户的容器的 Kubernetes 用户可能会遇到此错误中描述的权限问题,并且可能需要采用调整 Kubernetes securityContext
解决方法。 )
Amazon ECR Docker Credential Helper 使用与 AWS CLI 和 AWS 开发工具包相同的凭证。有关配置 AWS 凭证的更多信息,请参阅AWS Command Line Interface 用户指南中的配置和凭证文件。
凭证必须应用允许访问 Amazon ECR 的策略。
环境变量 | 样本值 | 描述 |
---|---|---|
AWS_ECR_DISABLE_CACHE | 真的 | 如果设置为非空值,则禁用本地文件身份验证缓存 |
AWS_ECR_CACHE_DIR | 〜/.ecr | 指定本地文件验证缓存目录位置 |
AWS_ECR_IGNORE_CREDS_STORAGE | 真的 | 忽略对 docker 登录或注销的调用并假装成功 |
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
如果您已配置其他配置文件以与 AWS CLI 结合使用,则可以通过在调用docker
时指定AWS_PROFILE
环境变量来使用这些配置文件。例如:
AWS_PROFILE=myprofile docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
无需使用docker login
或docker logout
。
如果您之前已通过手动使用docker login
命令对 ECR 存储库进行了身份验证,则 Docker 可能存储了一个已过期的身份验证令牌。 Docker 将继续尝试使用缓存的身份验证令牌,而不是使用凭证助手。您必须使用docker logout 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository
显式删除之前缓存的过期令牌。之后,Docker 将开始利用 ECR 凭证助手来获取新凭证,您将不再需要使用docker login
或docker logout
。
来自 Amazon ECR Docker Credential Helper 的日志存储在~/.ecr/log
中。
有关 Amazon ECR 的更多信息,请参阅 Amazon Elastic Container Registry 用户指南。
标记为实验性的功能可以选择供用户测试和提供反馈。
如果您测试任何实验性功能,您可以通过该功能的跟踪问题提供有关以下方面的反馈:
您对该功能的体验
问题或问题
建议的改进
实验功能在设计和实现上都不完整。可能随时引入向后不兼容的更改,或者完全放弃支持。因此,不建议在生产环境中使用实验性功能。
如果您认为发现了潜在的安全问题,请不要将其发布在问题中。 相反,请按照此处的说明操作或直接向 AWS 安全人员发送电子邮件。
Amazon ECR Docker Credential Helper 根据 Apache 2.0 许可证获得许可。