Azure'da, bir programda kısa ömürlü bir Docker kapsayıcısını nasıl çalıştırabilirim?


13

Azure kapsayıcısı kayıt defterinde barındırılan bir Alpine Linux Docker kapsayıcısında paketlenmiş oldukça basit bir Unix kabuk komut dosyası var. Bir VM bu komut dosyasını cron ile çalıştırır:

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

VM olmadan yapabilir ve bunun yerine bir Azure Kapsayıcısı örneğinde çalışan bir tür zamanlayıcı ile Azure hizmetlerini kullanabilir miyim?

Motivasyonum VM'yi korumak ve ödemek istemiyor.

Yanıtlar:


11

Azure Container Instances (ACI), önerdiğiniz gibi iyi bir seçenek olabilir. Bunlar, bir kapsayıcı kullanıldığında saniye başına faturalandırma ile bir VM'yi yönetmek zorunda kalmadan doğrudan Azure'da bir kapsayıcı çalıştırmanıza olanak tanır.

Bu blogdaki demolardan biri Kubernetes'den bahsediyor olsa da, ACI fikri az container create, tıpkı yerel iş istasyonunuzda olduğu gibi Azure CLI ile bir kap oluşturabileceğinizdir docker create.

Kapsayıcı oluşturmak için Azure CLI ( azkomut, hızlı başlangıç ​​belgelerine bakın ) veya Azure Cloud Shell'i kullanabilirsiniz.

Kapsayıcıyı başka bir yerden bir zamanlamaya göre oluşturmanız / çalıştırmanız gerekir - Azure İşlevleri, zamanlanmış bir işlevden "container create" komutunu çalıştırmak için iyi bir yer olabilir . Bu, tümü Windows'da çalışan bash, PowerShell ve diğer dilleri destekler .

VM'leri çalıştırmadan veya Kubernetes öğrenmeden Docker kapsayıcılarını kullanmaya devam etmek istiyorsanız, bu iyi bir seçenek olabilir.

Alternatif olarak, tüm kodunuzu Azure İşlevleri'ne taşıyabilirsiniz, ancak bu daha büyük bir karardır.

Güncelleme: Ocak 2019 - Azure Logic Apps , zamanlanmış görevleri çalıştırmak için de kullanılabilir .


Azure İşlevleri için PowerShell veya Bash kullanabileceğimin farkında değildim! Teşekkürler
Sijmen Mulder

Evet, Azure İşlevleri'nden herhangi bir yürütülebilir dosyayı çalıştırabilirsiniz ve bash bu genel bakış belgesinde açıkça belirtilmiştir . PowerShell modüllerini aramak için bu bloga bakın .
RichVel

Bulut hizmetlerini yapılandıran kurulum komut dosyalarını çalıştırmak için Azure İşlevleri, AWS Lambda vb. Gibi bulut işlevlerini kullanmak yaygındır (örn. Yeni bir bulut ortamı kurun). Böylece, tüm sunucusuz hizmetlerin ve çerçevelerin bash veya benzerini desteklemesini bekleyebilirsiniz. Geleneksel olarak kuracağınız ilk VM, tüm ortamların tüm kurulumunu çalıştırabileceğiniz bir "kontrol ana bilgisayarı" sunucusuydu. Bu tür tüm komut dosyalarını çalıştırmak için Sunucusuz gitmek, ödeyeceğiniz ana bilgisayar anlamına gelmez. Saldırıya uğramışsa bir kontrol sunucusu ortamlarınızın haritasını, eski komut dosyalarını ve muhtemelen önbelleğe alınmış şifreleri sızdırır. Sunucusuz bash daha güvenlidir.
simbo1905

Tüm FaaS (sunucusuz) hizmetlerin bash'ı desteklemesi söz konusu değildir. Aslında, AWS Lambda sadece 2018'in sonlarında eklenen bir özellik olan özel Katmanlar aracılığıyla bash'ı destekler - bu açık kaynak katmanını çalışan bash'ı basitleştirmek için kullanabilirsiniz . Genel olarak, sunucusuz / FaaS hizmetleri belirli dilleri destekler, bazı sağlayıcılar bunu genişletmenin yollarını etkinleştirir - örneğin AWS'nin Katmanları vardır ve Google'ın herhangi bir Docker kapsayıcısının çalışmasına izin veren bir FaaS hizmeti vardır.
RichVel

Katmanları kullanmak istemiyorsanız basitlik için - Katmanlar kullanmadan bash çalıştıran bir Düğüm / Python Lambda yazabilirsiniz - bir örnek için lambdash'a bakın .
RichVel


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.