Docker был занят на работе, расширяя функциональность Docker Compose. На этой неделе появилась возможность развернуть контейнеры Docker напрямую в Amazon AWS ECS, используя стандартные команды Docker.
Шквал развития произошел с момента Выпуск спецификации Compose Анкет Microsoft Azure Integrated Compose С их экземплярами контейнера в лазурном контейнере (ACI) и Теперь Amazon с AWS ECS Анкет
Новая спецификация Compose позволяет разработчикам разрабатывать локально, а затем переключать контекст на AWS и развернуть одно и то же приложение непосредственно на ECS AWS, используя все ваши существующие локальные инструменты разработки и рабочие процессы.
Интеграция между Docker и Amazon AWS ECS позволяет разработчикам использовать Docker CLI для:
Установите новый контекст Docker https://docs.docker.com/engine/context/working-with-contexts/ Включение связи между Docker и ECS. Новый контекст AWS настраивается с использованием одной команды Docker. Контекст Docker позволяет вам переключаться с локального контекста на облачный контекст и быстро и легко запускать приложения.
Упростите разработку и развертывание приложений с несколькими контейнерами на Amazon AWS ECS, используя спецификацию Compose.
Предварительные условия
Прежде чем начать работу, нам нужно убедиться, что пара вещей на месте.
- Убедитесь, что у вас есть последний выпуск Docker Edge, содержащий функциональность ECS
- Убедитесь, что у вас есть аккаунт AWS
- Установите инструмент AWS CLI — https://aws.amazon.com/cli/
- Создайте IAM Access Keys для вашего пользователя — https://docs.aws.amazon.com/iam/latest/userguide/id_credentials_access-keys.html
- Создайте кластер ECS. Я бы порекомендовал использовать ECS Fargate. Fargate позволяет вам развернуть контейнеры в кластер ECS, не беспокоясь о управлении менеджерами/работниками. Обязательно сохраните имя кластера ECS для дальнейшего — https://docs.aws.amazon.com/amazonecs/latest/userguide/create_cluster.html
Настройка ECS в Docker
После того, как мы завершим предпосылки, мы можем продолжить настройку Docker с ECS. Docker имеет встроенный инструмент установки, на удивление называется Настройка Docker ECS
Насколько это легко?
- Откройте окно терминала (PowerShell или Linux Shell)
- Тип
Настройка Docker ECS
- Ответьте на вопросы, вызванные на экране
- Введите имя контекста: выберите уникальное идентифицирующее имя для контекста * AWS ECS
- Введите имя кластера: Шаг 4 предварительного условия. Вы должны вставить имя созданного вами кластера
- Введите регион: Это регион, где вы развернуто в кластере ECS
Введите учетные данные: Шаг 3 предварительных условий Вставьте здесь ключи доступа
Переключить новый контекст AWS. Запуск: Docker Context Используйте, если вы не помните, что вы можете запустить контекст Docker LS, чтобы просмотреть доступные контексты.
Развертывание нашего первого приложения
Я создал демонстрационную репо, используя мое любимое приложение Gif Gif Gif.
- Развернуть наше изображение в реестр эластичных контейнеров AWS (ECR)
- Клон репо — https://github.com/vegasbrianc/docker-ecs-demo
- Создайте формат AWS ECR Repo
Репонирование/имя приложения
После того, как вы создали репо, вы найдете новую кнопку с именем COMPANCS. Эти команды проведут вас через создание изображения, помечая и настаивая на ECR
- Скопируйте изображение URI. Должен выглядеть как -то вроде
123456.dkr.ecr.eu-central-1.amazonaws.com/brian-test/docker-ecs-demo
Как только изображение будет доступно в ECR, мы можем развернуть наше приложение.
- Во -первых, отредактировать
Docker-compose.yml
файл - Перейдите к каталогу проекта
/Docker-ECS-Demo
- Откройте `docker-compose.yml?
- Добавьте свое изображение URI в линию изображения в
Docker-compose.yml
файл
Должен выглядеть как:
`
version: '3.4' services: pythonproject: image: 123456.dkr.ecr.eu-central-1.amazonaws.com/brian-test/docker-ecs-demo build: context: . dockerfile: Dockerfile ports: - 80:5000
`
Далее мы можем развернуть приложение Cat GIF.
- Развернуть приложение Docker ECS Compose -n Catapp Up мы добавили -n, чтобы предоставить уникальное имя в нашем стеке
- Затем эта команда будет работать в течение нескольких минут, так как AWS создаст сервис и задачу ECS, группы безопасности, регистрацию, нагрузки, роли, сети и многое другое.
- После завершения команды вы можете посетить развертывание, открыв консоль AWS
ECS -> Clusters -> Нажмите на имя своего кластера ECS
Анкет Здесь вы найдете развертывание нашего приложения CAT - Посмотреть наше приложение в браузере. В консоли AWS перейдите к
EC2 -> балансировщики нагрузки
- Скопируйте название DNS балансировщика нагрузки в свой браузер и добавьте
Порт: 5000
В конце названия DNS
Вот приложение CAT, работающее в учетной записи 56K.Cloud. Каждый раз, когда вы обновляете веб -страницу, вы находите новую кошку GIF. Бесконечное развлечение и истинное использование Интернета, кошачьи GIFS.
Живая демонстрация — http://pythondemoloadbalancer-8271419734bafe24.elb.eu-central-1.amazonaws.com:5000/
Частный Docker Repos
Интеграция Docker ECS автоматически настраивает авторизацию, поэтому вы можете вытащить частные изображения из реестра Amazon ECR в той же учетной записи AWS. Если вы хотите использовать другой реестр, включая Docker Hub, вам придется создать секрет имени пользователя + пароль (или имя пользователя + токен) на службе Amazon SMS.
Интеграция Docker ECS также предлагает возможность использовать секреты. Команда Docker ECS Secret позволяет вам управлять секретами, созданными на AWS SMS, без необходимости устанавливать AWS CLI.
docker ecs secret create dockerhubaccesstoken -username -password
ARN: AWS: Secretsmanager: Eu-West-3: 12345㊙dockerhubaccesstoken
После создания вы можете использовать этот ARN в вашем файле Compose, используя x-aws-pull_credentials пользовательское расширение в сторону URI изображения Docker для вашей службы
`
version: 3.8 services: worker: image: mycompany/privateimage x-aws-pull_credentials: "arn:aws:secretsmanager:eu-west- 3:12345:secret:DockerHubAccessToken"
`
Если вы установите составление файла версии 3.8 или более поздней версии, вы можете использовать тот же файл Compose для локального развертывания, используя Docker-Compose. Пользовательское расширение будет проигнорировано.
Что дальше для Docker ECS?
Поскольку Docker ECS недавно доступен на краевом канале, мы рекомендуем тестировать и предоставлять обратную связь. Если вы найдете какие -либо проблемы, сообщите о них напрямую на Docker ECS Repo Анкет
Дополнительная информация
- Составьте спецификацию — https://blog.56k.cloud/docker-open-sources-docker-compose-specification/
- Docker & ECS Post в блоге — https://www.docker.com/blog/https-docker-com-blog-from-docker raight-to-aws/
- Контекст докера — https://docs.docker.com/engine/context/working-with-contexts/
- AWS CLI Tool — https://aws.amazon.com/cli/
- Создание IAM Access Keys — https://docs.aws.amazon.com/iam/latest/userguide/id_credentials_access-keys.html
- Создать AWS ECS Cluster — https://docs.aws.amazon.com/amazonecs/latest/userguide/create_cluster.html
- Демо из приложения кошки — http://pythondemoloadbalancer-27dd2249225473b0.elb.eu-central-1.amazonaws.com:5000/
- Docker ECS Repo — https://github.com/docker/ecs-lugin
Узнайте больше о 56K.Cloud
Мы любим облако, IoT, контейнеры, DevOps и инфраструктуру в качестве кода. Если вы заинтересованы в общении, свяжитесь с нами на Twitter или бросьте нам электронное письмо: info@56k.cloud Анкет Мы надеемся, что вы нашли эту статью полезной. Если есть что -то, что вы хотели бы внести свой вклад, или у вас есть вопросы, пожалуйста, сообщите нам об этом!
Оригинал: «https://dev.to/vegasbrianc/how-to-deploy-containers-directly-to-aws-ecs-using-docker-57lp»