0%

Amazon ECR Docker Credential Helper使用指南

简介

Amazon ECR Docker Credential Helper是为了让我们更方便的使用Amazon Elastic Container Registry, 最主要的就是省去每次登录都要用一长串命令的麻烦。

传说中的一长串命令:

$ <aws_authenticate> aws --region ap-southeast-2 ecr get-login-password | docker login --username AWS --password-stdin https://<aws_account_id>.dkr.ecr.<region>.amazonaws.com

使用方法,以Mac系统为例

  • 1.使用brew安装docker-credential-helper-ecr
1
$ brew install docker-credential-helper-ecr
  • 2.修改docker的配置文件~/.docker/config.json

修改前大概这样

1
2
3
4
5
6
7
8
9
10
{
"auths": {
"https://index.docker.io/v1/": {},
},
"HttpHeaders": {
"User-Agent": "Docker-Client/19.03.5 (darwin)"
},
"credsStore": "desktop",
"stackOrchestrator": "swarm"
}

修改后大概这样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"auths": {
"https://index.docker.io/v1/": {},
},
"HttpHeaders": {
"User-Agent": "Docker-Client/19.03.5 (darwin)"
},
"credsStore": "desktop",
"credHelpers": {
"<aws_account_id>.dkr.ecr.<region>.amazonaws.com": "ecr-login",
"https://<aws_account_id>.dkr.ecr.<region>.amazonaws.com": "ecr-login"
},
"stackOrchestrator": "swarm"
}

主要就是增加一个credHelpers去帮助我们登录指定的ECR registry, <aws_account_id>.dkr.ecr.<region>.amazonaws.com就是我们要登录的ECR registry的URI,<aws_account_id><region>需要根据实际情况进行替换。有一点需要注意的是只有Docker 1.13.0及以上才能使用credHelpers,否则只能通过将"credsStore": "desktop"替换为"credsStore": "ecr-login"来达到同样的效果。建议还是使用credHelpers的方式,这样不会影响到其他registry的登录。

大功告成

这样设置好以后,每次登录ECR registry的时候,只需要先authenticate到aws,然后直接docker pull就可以拉镜像了,是不是很方便!

Reference

github for amazon-ecr-credential-helper