В Azure, как запустить недолговечный контейнер Docker по расписанию?

12

У меня есть довольно простой сценарий оболочки Unix, упакованный в контейнер Alpine Linux Docker, размещенный в реестре контейнеров Azure. ВМ запускает этот скрипт с помощью cron:

docker login <snip>
docker pull example.com/bar:latest
docker run  example.com/bar:latest

Могу ли я обойтись без виртуальной машины и использовать вместо этого службы Azure, возможно, с каким-то планировщиком, выполняющим это в экземпляре контейнера Azure?

Моя мотивация не желает поддерживать и платить за ВМ.

Сеймен Малдер
источник

Ответы:

10

Контейнеры Azure (ACI) могут быть хорошим вариантом, как вы предлагаете. Это позволяет вам запускать контейнер непосредственно в Azure, не управляя виртуальной машиной, с поминутной оплатой за время использования контейнера.

Хотя в одной из демонстраций этого блога упоминается Kubernetes, идея ACI заключается в том, что вы можете создать контейнер с помощью интерфейса командной строки Azure az container create, как и на своей локальной рабочей станции с docker create.

Чтобы создать контейнер, вы можете использовать Azure CLI ( azкоманда, см. Документацию по быстрому запуску ) или Azure Cloud Shell.

Вам нужно будет создать / запустить контейнер по расписанию из другого места - функции Azure могут быть хорошим местом для запуска команды «создание контейнера» из запланированной функции . Это поддерживает bash, PowerShell и другие языки - все работает в Windows.

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

В качестве альтернативы вы можете переместить весь свой код в функции Azure, но это более сложное решение.

Обновление: январь 2019 г. - приложения Azure Logic также можно использовать для выполнения запланированных задач .

RichVel
источник
Я не знал, что могу использовать PowerShell или Bash для функций Azure! Спасибо
Sijmen Mulder
Да, вы можете запустить любой исполняемый файл из функций Azure, и bash явно упоминается в этом обзорном документе . Для вызова модулей PowerShell см. Этот блог .
RichVel
Обычно используются облачные функции, такие как функции Azure, AWS Lambda и т. Д., Для запуска сценариев установки, которые настраивают облачные службы (например, настраивают новую облачную среду). Таким образом, вы можете ожидать, что все безсерверные сервисы и фреймворки будут поддерживать запуск bash или аналогичный. Традиционно первой виртуальной машиной, которую вы настраивали, был сервер «управляющего хоста», который использовался в качестве места для запуска всех настроек всех сред. Выход без сервера для запуска всех таких сценариев означает отсутствие хоста для оплаты. В случае взлома управляющего сервера происходит утечка карты ваших сред, старых сценариев и, возможно, кешированных паролей. Бессерверный bash более безопасен.
simbo1905
Дело не в том, что все службы FaaS (без серверов) поддерживают bash. Фактически, AWS Lambda поддерживает bash только через пользовательские слои - функция, добавленная в конце 2018 года - вы можете использовать этот слой с открытым исходным кодом для упрощения работы bash. Как правило, безсерверные службы / службы FaaS поддерживают определенные языки, причем некоторые провайдеры предоставляют способы расширения этого - например, в AWS есть слои, а в Google есть служба FaaS, которая позволяет запускать любой контейнер Docker.
RichVel
Для простоты, если вы не хотите использовать Layers - вы можете написать Node / Python Lambda, который запускает bash, без использования Layers - смотрите lambdash для одного примера.
RichVel