In Azure, come posso eseguire un contenitore Docker di breve durata in base a una pianificazione?


12

Ho uno script shell Unix abbastanza semplice impacchettato in un container Docker di Alpine Linux ospitato in un registro container di Azure. Una VM esegue questo script con cron:

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

Posso fare a meno della VM e usare invece i servizi di Azure, magari con una sorta di scheduler che esegue questa su un'istanza del contenitore di Azure?

La mia motivazione non è voler mantenere e pagare per la VM.

Risposte:


10

Azure Container Instances (ACI) può essere una buona opzione come suggerisci. Questi consentono di eseguire un contenitore direttamente su Azure, senza dover gestire una macchina virtuale, con fatturazione al secondo per il tempo di utilizzo del contenitore.

Sebbene una delle demo su quel blog menzioni Kubernetes, l'idea di ACI è che è possibile creare un contenitore tramite l'interfaccia della riga di comando di Azure con az container create, proprio come sulla workstation locale con docker create.

Per creare il contenitore, è possibile usare l'interfaccia della riga di azcomando di Azure ( comando, vedere i documenti di avvio rapido ) o Azure Cloud Shell.

Dovresti creare / eseguire il contenitore secondo una pianificazione da qualche altra parte - Funzioni di Azure potrebbe essere un buon posto per eseguire il comando "creazione contenitore" da una funzione pianificata . Questo supporta bash, PowerShell e altre lingue , tutte in esecuzione su Windows.

Se desideri continuare a utilizzare i contenitori Docker senza eseguire VM o apprendere Kubernetes, questa potrebbe essere una buona opzione.

In alternativa, è possibile spostare tutto il codice in Funzioni di Azure, ma questa è una decisione più ampia.

Aggiornamento: gennaio 2019 - Le app per la logica di Azure possono essere usate anche per eseguire attività pianificate .


Non sapevo di poter usare PowerShell o Bash per Funzioni di Azure! Grazie
Sijmen Mulder il

Sì, è possibile eseguire qualsiasi eseguibile da Funzioni di Azure e bash è esplicitamente menzionato in questo documento di panoramica . Per chiamare i moduli di PowerShell, consulta questo blog .
RichVel

È comune utilizzare funzioni cloud come Funzioni di Azure, AWS Lambda ecc. Per eseguire script di installazione che configurano i servizi cloud (ad esempio, configurare un nuovo ambiente cloud). Quindi puoi aspettarti che tutti i servizi e i framework senza server supportino l'esecuzione di bash o simili. Tradizionalmente la prima macchina virtuale da configurare era un server "host di controllo" da utilizzare come luogo per eseguire tutte le impostazioni di tutti gli ambienti. Se non si esegue Serverless per eseguire tutti questi script, non è necessario pagare alcun host. Un server di controllo se hackerato perde una mappa dei tuoi ambienti, vecchi script e possibilmente password memorizzate nella cache. Bash senza server è più sicuro.
simbo1905,

Non è il caso che tutti i servizi FaaS (senza server) supportino bash. In effetti, AWS Lambda supporta bash solo tramite livelli personalizzati, una funzionalità aggiunta alla fine del 2018: puoi utilizzare questo livello open source per semplificare l'esecuzione di bash. In genere, i servizi serverless / FaaS supportano lingue specifiche, con alcuni provider che consentono di estenderlo, ad esempio AWS ha Layer e Google ha un servizio FaaS che consente l'esecuzione di qualsiasi container Docker.
RichVel

Per semplicità se non vuoi usare i Layer - puoi scrivere un Node / Python Lambda che esegue bash, senza usare i Layer - vedi lambdash per un esempio.
RichVel

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.