Amazon ECS私有DockerHub存储库:无法解码提供的docker凭据错误

Iul*_*ian 6 amazon-web-services amazon-ecs docker dockerhub docker-registry

我在DockerHub上有一个私有存储库,我试图用ECS部署它.我总是得到以下错误:

Unable to decode provided docker credentials module="ecs credentials" type="dockercfg"
Run Code Online (Sandbox Code Playgroud)

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

Unable to decode provided docker credentials module="ecs credentials" type="docker"
Run Code Online (Sandbox Code Playgroud)

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

我试过了:

ECS_ENGINE_AUTH_TYPE=dockercfg
ECS_ENGINE_AUTH_DATA='{"https://index.docker.io/v1/":{"auth":"<token>","email":"<email>"}}'
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

ECS_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA='{"https://index.docker.io/v1/":{"username":"<username>","password":"<password>","email":"<email>"}}'
Run Code Online (Sandbox Code Playgroud)

而且(因为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>"}}'
Run Code Online (Sandbox Code Playgroud)

我也试过没有围绕JSON的''和'""相同的效果.我总是得到同样的错误.

我应该添加我从S3容器获取ecs.config工作正常.我还手动重新输入文件,以防下载文件时出现一些可疑的格式(虽然我不知道这是怎么回事,因为S3文件是一个字节流).

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

docker login --username=<username> --password=<password> --email=<email>
Run Code Online (Sandbox Code Playgroud)

然后我可以成功地拉动图像: 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>"
                }
        }
}
Run Code Online (Sandbox Code Playgroud)

此处描述了JSON配置:https://godoc.org/github.com/aws/amazon-ecs-agent/agent/config.在这里的代码评论中也提到了它: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)

这又是一次,给出了同样的错误......

Iul*_*ian 6

花了一些时间查看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>"}}
Run Code Online (Sandbox Code Playgroud)

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