Di Azure, bagaimana cara menjalankan wadah Docker berumur pendek sesuai jadwal?

12

Saya memiliki skrip shell Unix yang cukup sederhana yang dikemas dalam wadah Alpine Linux Docker yang dihosting di registri wadah Azure. VM menjalankan skrip ini dengan cron:

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

Bisakah saya melakukannya tanpa VM dan menggunakan layanan Azure, mungkin dengan semacam penjadwal yang menjalankan ini pada Mesin Virtual Azure Container?

Motivasi saya tidak ingin mempertahankan dan membayar untuk VM.

Sijmen Mulder
sumber

Jawaban:

10

Mesin Virtual Azure Container (ACI) mungkin merupakan opsi yang baik seperti yang Anda sarankan. Ini memungkinkan Anda menjalankan wadah langsung di Azure, tanpa harus mengelola VM, dengan penagihan per detik untuk waktu wadah digunakan.

Meskipun salah satu demo di blog itu menyebutkan Kubernetes, ide ACI adalah Anda dapat membuat wadah melalui CLI Azure az container create, sama seperti di workstation lokal Anda dengannya docker create.

Untuk membuat wadah, Anda dapat menggunakan Azure CLI ( azperintah, lihat dokumen mulai cepat ) atau Azure Cloud Shell.

Anda perlu membuat / menjalankan wadah pada jadwal dari tempat lain - Fungsi Azure mungkin merupakan tempat yang baik untuk menjalankan perintah "wadah buat" dari fungsi yang dijadwalkan . Ini mendukung bash, PowerShell, dan bahasa lain - semua berjalan di Windows.

Jika Anda ingin tetap menggunakan wadah Docker tanpa menjalankan VM atau mempelajari Kubernetes, ini mungkin merupakan opsi yang baik.

Atau, Anda bisa memindahkan semua kode Anda ke Fungsi Azure, tapi itu keputusan yang lebih besar.

Pembaruan: Jan 2019 - Aplikasi Azure Logic dapat digunakan untuk menjalankan tugas yang dijadwalkan juga.

RichVel
sumber
Saya tidak sadar bisa menggunakan PowerShell atau Bash untuk Fungsi Azure! Terima kasih
Sijmen Mulder
Ya, Anda dapat menjalankan fungsi apa pun yang dapat dieksekusi dari Azure, dan bash secara eksplisit disebutkan dalam dokumen tinjauan umum ini . Untuk memanggil modul PowerShell, lihat blog ini .
RichVel
Adalah umum untuk menggunakan fungsi cloud seperti Azure Functions, AWS Lambda dll untuk menjalankan skrip instalasi yang mengkonfigurasi layanan cloud (mis., Menyiapkan lingkungan cloud baru). Jadi, Anda dapat mengharapkan semua layanan dan kerangka kerja serverless untuk mendukung menjalankan bash atau serupa. Secara tradisional VM pertama yang Anda setup adalah server "host kontrol" untuk digunakan sebagai tempat untuk menjalankan semua pengaturan semua lingkungan. Pergi Tanpa Server untuk menjalankan semua skrip seperti itu berarti tidak ada host yang harus membayar. Server kontrol jika diretas bocor peta lingkungan Anda, skrip lama dan mungkin kata sandi di-cache. Bash tanpa server lebih aman.
simbo1905
Ini bukan kasus bahwa semua layanan FaaS (serverless) mendukung bash. Bahkan, AWS Lambda hanya mendukung bash melalui Layers kustom, fitur yang ditambahkan pada akhir 2018 - Anda dapat menggunakan lapisan open source ini untuk menyederhanakan menjalankan bash. Umumnya, layanan tanpa server / FaaS mendukung bahasa tertentu, dengan beberapa penyedia memungkinkan cara untuk memperpanjang ini - misalnya, AWS memiliki Layers, dan Google memiliki layanan FaaS yang memungkinkan wadah Docker dijalankan.
RichVel
Untuk kesederhanaan jika Anda tidak ingin menggunakan Layers - Anda dapat menulis Node / Python Lambda yang menjalankan bash, tanpa menggunakan Layers - lihat lambdash untuk satu contoh.
RichVel