我如何使用 ecr 与其他注册表的正常 docker 登录

Mir*_*age 7 amazon-web-services gitlab docker

我想对docker login正常的东西使用正常,但对于 ecr 我想使用教程中提到的 credHelpers

https://docs.docker.com/engine/reference/commandline/login/#credential-helpers

但看起来它告诉我替换整个文件

~/.docker/config.json 与

{
"credHelpers": {
                "aws_account_id.dkr.ecr.region.amazonaws.com": "ecr-login"
        }

}
Run Code Online (Sandbox Code Playgroud)

但我的文件已经有这个内容,我不想破坏东西

{
        "auths": {
                "registry.gitlab.com": {
                        "auth": "fdfdfdfdfd"
                }
        }
}
Run Code Online (Sandbox Code Playgroud)

我可以做类似的事情吗

{
        "auths": {
                "registry.gitlab.com": {
                        "auth": "fdfdfdfdfd"
                }
        },


"credHelpers": {
                "dfdfdfdfd.dkr.ecr.region.amazonaws.com": "ecr-login"
        }

}
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 7

如配置文件中所示,情况并非如此:您可以同时拥有 credHelper 和登录信息(不在同一域上)

因此,您可以执行您想要的操作,可能会将您的 credHelper 信息手动添加到配置文件中。

第 41 期提到:

通过添加身份验证,我已经能够让 credsStore 正常工作

{
  "auths" : {
    "registry.gitlab.com": { "auth": "fdfdfdfdfd" },
    "[aws_account_id].dkr.ecr.[region].amazonaws.com" : {}
  },
  "credsStore" : "ecr-login"
}
Run Code Online (Sandbox Code Playgroud)

auths因此,您可以在带有凭据或带凭据(空)的 URL中列出{}。后者将由凭证助手管理(例如awslabs/amazon-ecr-credential-helper


imdibiji在评论中报告说,必须使用以下格式来避免:

error: ERRO[0000] Error parsing the serverURL 
error="docker-credential-ecr-login can only be used with 
       Amazon Elastic Container Registry." 
serverURL="index.docker.io/v1" 
Run Code Online (Sandbox Code Playgroud)

格式:

{
  "auths": {
     "index.docker.io/v1": {"auth": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" } }, 
   "credHelpers": { "XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com": "ecr-login" }
}
Run Code Online (Sandbox Code Playgroud)