AWS использует оптимизированный ECS AMI с Docker-контейнерами в ECS - PullRequest
0 голосов
/ 03 мая 2019

Я потратил много времени на то, чтобы настроить тип развертывания, который я собираюсь описать далее.Я просмотрел большую часть документации по ECS и задокументировал исчерпывающий список учебных ресурсов.

Однако, похоже, мне все еще не хватает какой-то важной части этой головоломки с Docker на AWS ECS...

В процессе разработки мы используем Docker Compose для определения набора контейнеров в качестве локального кластера с полным стеком.Это действительно удобный инструмент для локальной работы с контейнерами.

Наша цель - использовать подход Docker Compose для развертывания этого кластера в Amazon AWS ECS.

ECS поддерживает формат файлов Compose до версии 3.0,В частности, отсутствует поддержка использования локальных файлов в качестве контекста сборки, поэтому на ссылку нужно ссылаться на изображение.

С чем я в настоящее время путаюсь:

официальный документ doc что экземпляры, работающие в ECS, должны иметь и настраивать агент контейнера Amazon ECS , демон Docker и ecs-init .Поэтому для базового образа они рекомендуют:

AMI, оптимизированные для Amazon ECS, предварительно настроены с учетом этих требований и рекомендаций.Мы рекомендуем использовать Amazon ECS, оптимизированный для Amazon ECS, для ваших контейнерных экземпляров, если вашему приложению не требуется определенная операционная система или версия Docker, которая еще не доступна в этом AMI.

Путаница 1: Однако в официальных документах я не нашел примеров того, как на самом деле создавать и запускать контейнеры Docker на основе этих оптимизированных AMI ... Есть только два примера Dockerfile, здесь и здесь , которые оба строятся из общедоступных изображений не-AMI?

Я нашел некоторые ресурсы, например здесь ( источник * 1040)*) и здесь , которые показывают, как использовать Packer с его EC2 Builder AMI (с EBS) для создания пользовательского AMI на основе этих оптимизированных ECS AMI.

Я сам настроил этот процесс с небольшими изменениями, и он работает.У меня есть свои собственные изображения, отображаемые под AWI EC2.

Точка смущения 2: Однако я, похоже, не могу ссылаться на эти изображения AMI в моих файлах dockerfile или в файлах docker, так как онине хранится в ECR ... Я прав (или имею неправильную конфигурацию)?

У упаковщика есть постпроцессор для Docker Push , который поддерживает ECR.Но он не работает с EC2 AMI Builder:

Post-processor failed: Unknown artifact type: mitchellh.amazonebs
Can only import from docker-import and docker-tag artifacts.

Конечно, мне не нужно было бы хранить базовый AMI в ECR ... Но мне нужно было бы использовать его как изображениедля создания пользовательских образов Docker и сохранения этих выпусков в ECR.Затем обратитесь к этим изображениям в файле составления докера.

Я знаю, что обращение к дополнительным инструментам автоматизации, таким как Ansible, Terraform или AWS Code *, может помочь мне преодолеть этот момент.Но я пытался следовать официальным документам и собирать информацию из различных источников, стараясь сохранить минимальные настройки, и пока не до конца понимаю проблему, с которой я сталкиваюсь.

Точка смущения 3: Каков рекомендуемый способ создания и запуска контейнеров Docker в ECS с Amazon Amazon 2 AMI, оптимизированными для ECS?

И чего мне здесь не хватает ...?

1 Ответ

1 голос
/ 03 мая 2019

Существует разделение между программным обеспечением, запущенным на самом хосте, и программным обеспечением, работающим в контейнерах.Вы читаете параграф о программном обеспечении, которое должно работать в системах host EC2.

При настройке кластера ECS необходимо предоставить набор экземпляров EC2.AWS рекомендует использовать их AMI в качестве основы для этих случаев, и это довольно разумная вещь.Если вы хотите использовать что-то вроде стандартного Ubuntu AMI вместо этого, вам нужно установить указанные биты программного обеспечения в этих экземплярах, прежде чем он сможет «стать частью» кластера ECS и начать запуск контейнеров.(Для запуска контейнеров Docker на хосте должен быть установлен Docker.)

Я не думаю, что существуют особые требования к контейнерам , работающим в ECS, и нет способапостроить образ Docker на основе AMI.Вы должны иметь возможность запускать тот же набор изображений, который используете локально (при условии, что вы на самом деле COPY исходный код для изображений, они запускаются без взаимодействия с оператором, и т. Д. ).

...