Как извлечь образ докера ECS из экземпляра EC2? - PullRequest
0 голосов
/ 01 ноября 2018

Каков наилучший способ извлечь образ Docker, расположенный в репозитории в ECS, из экземпляра EC2?

  • Я вставил образы Docker в свой репозиторий, расположенный под ECS.
  • Я хотел бы запустить экземпляр EC2 и извлечь из него эти изображения.

Я привык использовать задачу ECS. Чтобы просто запустить контейнер Docker на 5 минут, мне нужно перейти на Auto-Scale, установить минимум на 1, перейти на страницу ECS, подождать, пока будет запущен экземпляр, и запустить мою задачу. Слишком раздражает для моего личного использования. Я хотел бы запустить его быстро и быстро остановить.

Я хотел просто запустить свой контейнер Docker, но хорошо, это невозможно, тогда я думаю о создании шаблона EC2, который будет напрямую запускать мой контейнер Docker внутри экземпляра EC2.

  • Как это сделать?
  • Как я могу обрабатывать ключи / пользователей и интерфейс командной строки AWS в моем EC2? (Доступ / Секретный ключ доступа ограничены 30 минутами, я не могу четко написать их в User Data экземпляра / шаблона EC2)

Я думаю, что моя потребность очень проста, и я не мог найти лучший способ сделать это. Статьи блога в основном объясняют, как запустить Docker в Linux, а не лучший способ сделать это в AWS.

1 Ответ

0 голосов
/ 01 ноября 2018

Это может быть достигнуто с помощью комбинации роли экземпляра EC2 и сценария, который выполняет вход в докер, за которым следует docker pull для вашего отправленного изображения.

Предварительные условия: Экземпляр EC2 с установленными интерфейсом командной строки AWS и Docker.

Во-первых, вам нужно добавить встроенную политику AmazonEC2ContainerRegistryReadOnly IAM к роли IAM вашего экземпляра EC2 (это дает доступ на чтение к всем отправленным изображениям). Если вы хотите, чтобы все было более ограничительно, вместо этого вы можете использовать следующую политику:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "GrantSingleImageReadOnlyAccess",
      "Effect": "Allow",
      "Action": [
        "ecr:BatchCheckLayerAvailability",
        "ecr:GetDownloadUrlForLayer",
        "ecr:GetRepositoryPolicy",
        "ecr:DescribeRepositories",
        "ecr:ListImages",
        "ecr:DescribeImages",
        "ecr:BatchGetImage"
      ],
      "Resource": "<aws-account-id>.dkr.ecr.<region>.amazonaws.com/<image-name>"
    },
    {
      "Sid": "GrantECRAuthAccess",
      "Effect": "Allow",
      "Action": "ecr:GetAuthorizationToken",
      "Resource": "*"
    }
  ]
}

Далее вам нужно будет создать скрипт для входа в систему и получения изображений. Типичный скрипт будет выглядеть примерно так:

$(aws ecr get-login --no-include-email --region <region>);
docker pull <aws-account-id>.dkr.ecr.<region>.amazonaws.com/<image-name>:<optional-tag>;

Обратите внимание, что этот скрипт должен запускаться от имени пользователя root для правильного доступа к демону Docker.

Другим способом решения всего этого является поиск вариантов автоматизации для задач ECS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...