Я потратил много времени на то, чтобы настроить тип развертывания, который я собираюсь описать далее.Я просмотрел большую часть документации по 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?
И чего мне здесь не хватает ...?