【问题标题】:Amazon ECS private DockerHub repo: Unable to decode provided docker credentials errorAmazon ECS 私有 DockerHub 存储库:无法解码提供的 docker 凭证错误
【发布时间】:2015-11-25 18:57:01
【问题描述】:

我在 DockerHub 上有一个私有存储库,我正在尝试使用 ECS 进行部署。我总是收到以下错误:

Unable to decode provided docker credentials module="ecs credentials" type="dockercfg"

或者如果我尝试使用 docker 类型:

Unable to decode provided docker credentials module="ecs credentials" type="docker"

我已经尝试了 ECS 开发者论坛上提到的所有可能性。

我试过了:

ECS_ENGINE_AUTH_TYPE=dockercfg
ECS_ENGINE_AUTH_DATA='{"https://index.docker.io/v1/":{"auth":"<token>","email":"<email>"}}'

我也试过了:

ECS_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA='{"https://index.docker.io/v1/":{"username":"<username>","password":"<password>","email":"<email>"}}'

还有(因为https://godoc.org/github.com/aws/amazon-ecs-agent/agent/engine/dockerauth 的文档):

ECS_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA='{"https://index.docker.io/v1/<username>":{"username":"<username>","password":"<password>","email":"<email>"}}'

我也尝试过在 JSON 周围不使用 '' 和使用 "" .. 效果相同。我总是遇到同样的错误。

我应该补充一点,我正在从一个运行良好的 S3 容器中获取 ecs.config。我还手动重新键入了文件,以防在下载文件时出现一些可疑的格式(尽管我不知道这是怎么回事,因为 S3 文件以字节流的形式出现)。

如果我通过 SSH 连接到实例并执行以下操作:

docker login --username=<username> --password=<password> --email=<email>

然后我可以成功拉取图像:docker pull A/B:latest

但是,即使在我登录后(因此 docker 会生成 ~/.docker/config.json 文件),我仍然会从 ECS 收到相同的错误。

我应该提到更改 ecs.config 文件的所有操作如下:

  1. 将任务数更改为 0
  2. 等待完成
  3. sudo stop ecs
  4. 更改配置文件
  5. sudo start ecs
  6. 将任务数更改为 1

重复...

这变得非常令人沮丧.. 这应该如何工作或自编写文档以来它发生了哪些变化?

任何帮助将不胜感激。

编辑

我还尝试在 /etc/ecs/ecs.config.json 的 JSON 配置文件中设置 docker auth:

{
        "EngineAuthType": "docker",
        "EngineAuthData": {
                "https://index.docker.io/v1/": {
                        "username": "<me>",
                        "password": "<password>",
                        "email": "<email>"
                }
        }
}

此处描述了 JSON 配置:https://godoc.org/github.com/aws/amazon-ecs-agent/agent/config。这里的代码cmets中也有提到:https://github.com/aws/amazon-ecs-agent/blob/b197eddd9d5272eeac7dddaa2a84cc4c85522354/agent/engine/dockerauth/doc.go

更具体地说:

可以通过设置环境变量来设置这些键 “ECS_ENGINE_AUTH_TYPE”和“ECS_ENGINE_AUTH_DATA”或通过在位于配置的“ECS_AGENT_CONFIG_FILE_PATH”的JSON配置文件中设置键“EngineAuthData”和“EngineAuthType”(参见http://godoc.org/github.com/aws/amazon-ecs-agent/agent/config

又是这样,报同样的错误……

【问题讨论】:

    标签: amazon-web-services docker docker-registry dockerhub amazon-ecs


    【解决方案1】:

    花了一些时间查看 ECS 代理 (https://github.com/aws/amazon-ecs-agent) 的代码后,我意识到问题出在哪里。问题出在应该删除的电子邮件字段中!

    所以,回顾一下如何做到这一点:

    您需要按照此处的说明操作:http://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html

    但是,那里的所有示例都包括电子邮件字段。

    ecs.config 应如下所示:

    ECS_ENGINE_AUTH_TYPE=dockercfg
    ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"<your auth token>"}}
    

    要在创建实例时从 S3 容器加载 ecs.config,请按照以下步骤操作:http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html,尤其是“在 Amazon S3 中存储 ecs.config 文件”和“从 Amazon 加载 ecs.config 文件”启动时的 S3”标题。

    【讨论】:

      猜你喜欢
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 2015-03-08
      • 2016-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-05
      相关资源
      最近更新 更多