Подтвердить что ты не робот

Не удается выполнить проверку подлинности докеров в эластичном бобовом стебле через S3

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_image.html#docker-singlecontainer-dockerrun-privaterepo

Следуя инструкциям здесь, чтобы подключиться к частному контейнеру концентратора докеров от Elastic Beanstalk, но он упрямо отказывается работать. Похоже, что при вызове docker login в Docker 1.12 результирующий файл не имеет свойства электронной почты, но похоже, что aws ожидает его, поэтому я создаю файл с именем dockercfg.json, который выглядит так:

{
    "https://index.docker.io/v1/": {
        "auth": "Y2...Fz",
        "email": "[email protected]"
    }
}

Соответствующий фрагмент моего файла Dockerrun.aws.json выглядит следующим образом:

  "Authentication": {
    "Bucket": "elasticbeanstalk-us-west-2-9...4",
    "Key": "dockercfg.json"
  },

И у меня есть файл, загруженный в корень ведра S3. Почему я все еще получаю ошибки, которые говорят Error: image c...6/w...t:23 not found. Check snapshot logs for details. Я уверен, что имена правильные, и что это будет работать, если это публичный репозиторий. Полная ошибка ниже. Я развертываю из GitHub с Circle CI, если это имеет значение, с удовольствием предоставит любую другую необходимую информацию.

INFO: Deploying new version to instance(s).                         
WARN: Failed to pull Docker image c...6/w...t:23, retrying...
ERROR: Failed to pull Docker image c...6/w...t:23: Pulling repository docker.io/c...6/w...t
Error: image c...6/w...t:23 not found. Check snapshot logs for details.
ERROR: [Instance: i-06b66f5121d8d23c3] Command failed on instance. Return code: 1 Output: (TRUNCATED)...b-project
Error: image c...6/w...t:23 not found
Failed to pull Docker image c...6/w...t:23: Pulling repository docker.io/c...6/w...t
Error: image c...6/w...t:23 not found. Check snapshot logs for details. 
Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/03build.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.
INFO: Command execution completed on all instances. Summary: [Successful: 0, Failed: 1].
ERROR: Unsuccessful command execution on instance id(s) 'i-06b66f5121d8d23c3'. Aborting the operation.
ERROR: Failed to deploy application.                                

ERROR: Failed to deploy application.

EDIT: Здесь полный файл Dockerrun. Обратите внимание, что% BUILD_NUM% - это просто int, я могу проверить, что работает.

{
  "AWSEBDockerrunVersion": "1",
  "Authentication": {
    "Bucket": "elasticbeanstalk-us-west-2-9...4",
    "Key": "dockercfg.json"
  },
  "Image": {
    "Name": "c...6/w...t:%BUILD_NUM%",
    "Update": "true"
  },
  "Ports": [
    {
      "ContainerPort": "8080"
    }
  ]
}

EDIT: Кроме того, я подтвердил, что это работает, если я делаю этот контейнер Docker Hub общедоступным.

4b9b3361

Ответ 1

ОК, сделаем это;

Глядя на ту же страницу документа,

В версии Docker версии 1.6.2 и более ранней версии команда входа в докер создает файл аутентификации в ~/.dockercfg в следующем формате:

{
  "server" :
  {
    "auth" : "auth_token",
    "email" : "email"
  }
}

У вас уже есть эта часть, я вижу. Пожалуйста, дважды проверьте случаи ниже по порядку;

1) Вы размещаете ведро S3 в том же регионе?

Ведро Amazon S3 должно размещаться в той же области, что и окружающей среды, которая его использует. Эластичный Beanstalk не может скачивать файлы из ведра Amazon S3, размещенного в других регионах.

2) Вы проверили требуемые разрешения?

Предоставить разрешения для операции s3: GetObject для роли IAM в профиль экземпляра. Подробнее см. Управление эластичным бобовым стеблем Профили экземпляров.

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

Включите информацию о ведро Amazon S3 в Authentication (v1) или Authentication (v2) в файле Dockerrun.aws.json.

Невозможно просмотреть ваши разрешения или область вашего env, поэтому, пожалуйста, дважды проверьте их. Если это не сработает, я, возможно, обновляюсь до Docker 1.7+ и использую соответствующий стиль ~/.docker/config.json.