5

У меня есть приватный репозиторий на DockerHub, который я пытаюсь развернуть с ECS. Я всегда получаю следующее сообщение об ошибке:Amazon ECS private DockerHub repo: Не удалось декодировать предоставленную учетную запись docker error

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

или если я пытаюсь с типом грузчиком:

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 .. тот же эффект. Я всегда получаю ту же ошибку.

Я должен добавить, что получаю ecs.config из контейнера S3, который отлично работает. Я также перепечатал файл вручную в случае, если есть некоторая сомнительная формация при загрузке файла (хотя я не вижу, как это может произойти, поскольку файл S3 поступает как поток байтов).

Если я SSH в экземпляр и сделайте следующее:

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

можно затем вытащить изображение успешно: docker pull A/B:latest

Однако, даже после того, как войти (и, следовательно, Докер генерирует ~/.docker/config.json), я все равно получаю ту же ошибку от ECS.

Я должен упомянуть все операции изменения файла ecs.config были сделаны следующим образом:

  1. Изменение числа задач до 0
  2. Wait, чтобы закончить
  3. sudo stop ecs
  4. Изменить конфигурационный файл
  5. sudo start ecs
  6. Изменение количества заданий на 1

Repeat ...

Это становится очень сложно .. Как следует эта работа или как есть она меняется, поскольку документация была написана?

Любая помощь будет оценена по достоинству.

EDIT

Я также попытался установить Docker авторизацию в конфигурационном файле JSON в /etc/ecs/ecs.config.JSON:

{ 
     "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. Он также упоминается в коде комментарии здесь: https://github.com/aws/amazon-ecs-agent/blob/b197eddd9d5272eeac7dddaa2a84cc4c85522354/agent/engine/dockerauth/doc.go

Более конкретно:

These keys may be set by either setting the environment variables "ECS_ENGINE_AUTH_TYPE" and "ECS_ENGINE_AUTH_DATA" or by setting the keys "EngineAuthData" and "EngineAuthType" in the JSON configuration file located at the configured "ECS_AGENT_CONFIG_FILE_PATH" (see http://godoc.org/github.com/aws/amazon-ecs-agent/agent/config)

Это снова дает ту же ошибку ...

ответ

5

Пробыв некоторое время, глядя через код из Агент 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>"}} 

Для загрузки ecs.config из контейнера S3, когда создаются ваши экземпляры следуют за этим: http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html, в частности, «Чтобы сохранить файл ecs.config в Amazon S3» и «Загрузка файла ecs.config из заголовков Amazon S3 при запуске».