Jak na platformie Azure uruchomić krótkoterminowy kontener Docker zgodnie z harmonogramem?

13

Mam dość prosty skrypt powłoki uniksowej spakowany w kontenerze Alpine Linux Docker hostowanym w rejestrze kontenerów platformy Azure. Maszyna wirtualna uruchamia ten skrypt z cronem:

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

Czy mogę się obejść bez maszyny wirtualnej i zamiast tego korzystać z usług platformy Azure, być może z jakimś harmonogramem uruchamiającym to na wystąpieniu kontenera Azure?

Moją motywacją nie jest utrzymanie i płacenie za maszynę wirtualną.

Sijmen Mulder
źródło

Odpowiedzi:

11

Wystąpienia kontenera Azure (ACI) mogą być dobrym rozwiązaniem, jak sugerujesz. Umożliwiają one uruchamianie kontenera bezpośrednio na platformie Azure, bez konieczności zarządzania maszyną wirtualną, z naliczaniem sekundowym za czas użytkowania kontenera.

Chociaż jedna z wersji demonstracyjnych tego bloga wspomina o Kubernetesie, idea ACI polega na tym, że można utworzyć kontener za pomocą interfejsu wiersza polecenia platformy Azure az container create, podobnie jak na lokalnej stacji roboczej docker create.

Aby utworzyć kontener, możesz użyć interfejsu azwiersza polecenia platformy Azure ( polecenie, zobacz dokumentację szybkiego startu ) lub powłoki Azure Cloud Shell.

Konieczne byłoby utworzenie / uruchomienie kontenera zgodnie z harmonogramem skądinąd - Azure Functions może być dobrym miejscem do uruchomienia polecenia „tworzenie kontenera” z zaplanowanej funkcji . Obsługuje bash, PowerShell i inne języki - wszystkie działające w systemie Windows.

Jeśli chcesz nadal używać kontenerów Docker bez uruchamiania maszyn wirtualnych lub uczenia się Kubernetes, może to być dobra opcja.

Alternatywnie możesz przenieść cały kod do funkcji Azure Functions, ale to większa decyzja.

Aktualizacja: styczeń 2019 r. - Można także używać aplikacji Azure Logic do uruchamiania zaplanowanych zadań .

RichVel
źródło
Nie wiedziałem, że mogę użyć programu PowerShell lub Bash dla funkcji platformy Azure! Dzięki
Sijmen Mulder
Tak, możesz uruchomić dowolny plik wykonywalny z usługi Azure Functions, a bash jest wyraźnie wspomniany w tym dokumencie przeglądowym . Aby wywołać moduły PowerShell, zobacz tego bloga .
RichVel
Często używa się funkcji chmurowych, takich jak Azure Functions, AWS Lambda itp., Aby uruchamiać skrypty instalacyjne konfigurujące usługi chmurowe (np. Konfigurować nowe środowisko chmurowe). Możesz więc oczekiwać, że wszystkie usługi i struktury bez serwera będą obsługiwały uruchamianie bash lub podobnego. Tradycyjnie pierwszą maszyną wirtualną, którą skonfigurowałeś, był serwer „hosta kontrolnego”, który służył jako miejsce do uruchamiania wszystkich konfiguracji wszystkich środowisk. Brak serwera do uruchomienia wszystkich takich skryptów oznacza brak hosta do zapłaty. Serwer kontrolny, jeśli zostanie zhakowany, wycieka z mapy środowiska, starych skryptów i ewentualnie buforowanych haseł. Bash bez serwera jest bezpieczniejszy.
simbo1905
Nie jest tak, że wszystkie usługi FaaS (bezserwerowe) obsługują bash. W rzeczywistości AWS Lambda obsługuje tylko bash poprzez niestandardowe warstwy, funkcję dodaną pod koniec 2018 roku - możesz użyć tej warstwy open source, aby uprościć uruchamianie basha. Zasadniczo usługi bezserwerowe / FaaS obsługują określone języki, a niektórzy dostawcy umożliwiają sposoby ich rozszerzenia - na przykład AWS ma warstwy, a Google ma usługę FaaS, która pozwala na uruchomienie dowolnego kontenera Docker.
RichVel
Dla uproszczenia, jeśli nie chcesz używać warstw - możesz napisać Lambda z węzłem / Pythonem, który uruchamia bash, bez używania warstw - zobacz lambdash na przykład.
RichVel