0Pricing
Cloud & IT Cert Prep · Lezione

Azure Container Instances

Avvii in pochi secondi un'applicazione containerizzata con ACI senza gestire server, configuri variabili d'ambiente e montaggi di volumi e comprenda la fatturazione di ACI.

Azure Container Instances è una lezione Cloud & IT Cert Prep gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cloud & IT Cert Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.

Che cos'è Azure Container Instances?

Azure Container Instances (ACI) è il modo più rapido per eseguire un carico di lavoro containerizzato in Azure senza gestire server o orchestratori. È sufficiente fornire un'immagine del container: Azure la esegue in pochi secondi su un'infrastruttura condivisa e multi-tenant. ACI è ideale per attività di breve durata, processi batch, agenti di compilazione e carichi di lavoro basati su eventi, per i quali avviare un intero cluster Kubernetes comporterebbe un overhead eccessivo.

Creazione di un'istanza del container

Avvii un container ACI con un singolo comando az container create. Specifichi l'immagine, il gruppo di risorse, la CPU e la memoria. ACI esegue il pull dell'immagine, alloca le risorse e avvia il container, in genere entro 5-10 secondi. Ogni istanza del container riceve un fully qualified domain name (FQDN) univoco se assegna un'etichetta per il nome DNS, diventando così immediatamente accessibile da Internet.

# Run an Nginx container accessible from the internet
az container create \
  --name my-nginx \
  --resource-group MyRG \
  --image nginx:latest \
  --cpu 1 \
  --memory 1 \
  --dns-name-label my-nginx-demo \
  --ports 80

# Access at: http://my-nginx-demo.<region>.azurecontainer.io

Variabili di ambiente e valori protetti

Passi la configurazione ai container ACI usando variabili di ambiente specificate al momento della creazione. Per valori sensibili, come chiavi API o password, usi le variabili di ambiente protette: dopo la distribuzione, questi valori non vengono mostrati nel portale Azure né nell'output della CLI, evitando così l'esposizione accidentale nei log o nei registri di controllo. I valori protetti restano comunque accessibili all'interno del container durante l'esecuzione, come normali variabili di ambiente.

# Pass regular and secure environment variables
az container create \
  --name my-app \
  --resource-group MyRG \
  --image mycontainerregistry.azurecr.io/myapp:v1.0 \
  --environment-variables APP_ENV=production \
  --secure-environment-variables \
    DATABASE_PASSWORD='super-secret-password' \
    API_KEY='my-api-key'

# View logs from the running container
az container logs --name my-app --resource-group MyRG

Fatturazione e allocazione delle risorse di ACI

ACI fattura in base al secondo, considerando i core CPU e i GB di memoria allocati, senza un periodo minimo di fatturazione. Paga solo quando il container è in esecuzione: non appena si arresta, si interrompe anche la fatturazione. Questo rende ACI estremamente conveniente per i carichi di lavoro di breve durata. È possibile allocare da 0,1 a 4 core CPU e da 0,1 a 16 GB di memoria per ogni gruppo di container, nelle combinazioni supportate.

# Small: 0.5 CPU, 0.5 GB memory
az container create --name small-task --resource-group MyRG \
  --image my-batch-image:latest --cpu 0.5 --memory 0.5 \
  --restart-policy Never  # Don't restart after completion

# Large: 4 CPU, 16 GB memory for intensive tasks
az container create --name ml-inference --resource-group MyRG \
  --image ml-model:latest --cpu 4 --memory 16

Criteri di riavvio

ACI supporta tre criteri di riavvio che controllano il comportamento del container dopo la sua chiusura. Always (predefinito) riavvia il container ogni volta che si chiude, ed è adatto ai servizi a esecuzione prolungata. Never esegue il container una sola volta e lo lascia nello stato terminato, caratteristica ideale per i processi batch. OnFailure riavvia il container solo quando si chiude con un codice di uscita diverso da zero, risultando utile per i modelli di ripetizione in caso di errore.

# Batch job: run once, never restart
az container create \
  --name data-processor \
  --resource-group MyRG \
  --image my-batch-image:latest \
  --restart-policy Never \
  --environment-variables BATCH_DATE=2025-01-01

# Check the container's final state
az container show \
  --name data-processor \
  --resource-group MyRG \
  --query '{state:instanceView.state, exitCode:instanceView.currentState.exitCode}'

Gruppi di container: distribuzioni multi-container

Un gruppo di container è un insieme di container che condividono ciclo di vita, rete e archiviazione, in modo simile a un pod Kubernetes. I container dello stesso gruppo condividono un indirizzo IP locale e lo spazio dei nomi delle porte, quindi possono comunicare tramite localhost. Un modello comune consiste nell'inserire nello stesso gruppo un container con l'applicazione principale e un container sidecar, ad esempio un agente di logging o un proxy, definiti tramite un modello YAML o ARM.

# multi-container.yaml
apiVersion: '2021-09-01'
location: eastus
name: my-container-group
properties:
  containers:
  - name: app
    properties:
      image: myapp:v1.0
      ports: [{port: 80}]
      resources: {requests: {cpu: 1, memoryInGb: 1}}
  - name: log-forwarder
    properties:
      image: fluent-bit:latest
      resources: {requests: {cpu: 0.5, memoryInGb: 0.5}}
  osType: Linux
  restartPolicy: Always
type: Microsoft.ContainerInstance/containerGroups

# Deploy from YAML
# az container create --resource-group MyRG --file multi-container.yaml

Montaggi di volumi: integrazione con Azure Files

Per impostazione predefinita, i container ACI sono senza stato: i dati scritti nel file system del container vanno persi quando il container viene riavviato. Monti una condivisione Azure Files come volume per mantenere i dati tra i riavvii del container o condividerli tra container dello stesso gruppo. Quando crea l'istanza del container, specifichi il nome dell'account di archiviazione, la chiave e il nome della condivisione file.

# Mount an Azure Files share for persistent storage
az container create \
  --name stateful-app \
  --resource-group MyRG \
  --image myapp:v1.0 \
  --azure-file-volume-account-name mystorageaccount \
  --azure-file-volume-account-key '<storage-account-key>' \
  --azure-file-volume-share-name myfileshare \
  --azure-file-volume-mount-path /data

# Data written to /data persists in the Azure Files share

Istanze di container con GPU

ACI supporta istanze di container con GPU (K80, V100) per carichi di lavoro di inferenza ML, elaborazione video e calcolo scientifico. Le istanze con GPU sono disponibili in determinate aree e richiedono container Linux. La fatturazione avviene per GPU/secondo, rendendole convenienti negli scenari di inferenza intermittente: si avvia un container con GPU, si esegue il modello e lo si elimina immediatamente, con un costo molto inferiore rispetto a una macchina virtuale con GPU dedicata in esecuzione 24 ore su 24, 7 giorni su 7.

# Create a GPU-enabled container instance
az container create \
  --name gpu-inference \
  --resource-group MyRG \
  --image my-ml-model:latest \
  --gpu-count 1 \
  --gpu-sku V100 \
  --cpu 4 \
  --memory 16 \
  --os-type Linux

ACI con rete virtuale

Distribuisca i gruppi di container ACI in una sottorete dedicata all'interno di una VNet per assegnare loro indirizzi IP privati e consentire l'accesso ad altre risorse connesse alla VNet, come database e macchine virtuali, senza esporle a Internet. ACI integrato con una VNet richiede una sottorete dedicata e delegata, delegata a Microsoft.ContainerInstance/containerGroups, e non supporta l'assegnazione di IP pubblici.

# Create an ACI container in a VNet
az container create \
  --name private-task \
  --resource-group MyRG \
  --image myapp:v1.0 \
  --vnet MyVNet \
  --subnet ContainerSubnet \
  --restart-policy Never

# The container gets a private IP from the subnet CIDR
# It can reach VNet resources (SQL, Redis, VMs) on private IPs

ACI come nodo Kubelet virtuale

ACI si integra con AKS come nodo virtuale tramite il progetto open source Virtual Kubelet. Quando un cluster AKS registra una domanda improvvisa che supera la capacità dei nodi VM, Kubernetes può pianificare i pod su un nodo ACI virtuale, avviando vere istanze di container ACI. In questo modo si ottiene una scalabilità elastica senza dover predisporre in anticipo altri nodi VM e si paga il calcolo ACI solo durante il periodo di picco.

# Enable virtual nodes on an AKS cluster
az aks enable-addons \
  --name myAKSCluster \
  --resource-group MyRG \
  --addons virtual-node \
  --subnet-name VirtualNodeSubnet

# Schedule a burst pod on ACI via node selector
# spec:
#   nodeSelector:
#     kubernetes.io/role: agent
#     beta.kubernetes.io/os: linux
#     type: virtual-kubelet
#   tolerations:
#   - key: virtual-kubelet.io/provider
#     operator: Exists

Quando usare ACI, AKS o App Service

Scelga ACI per attività di breve durata, processi batch, agenti di compilazione CI e container temporanei per i quali l'overhead di Kubernetes non è necessario. Scelga AKS per microservizi multi-container a esecuzione prolungata che richiedono individuazione dei servizi, controlli di integrità, aggiornamenti in sequenza e rete del cluster. Scelga App Service quando desidera le funzionalità tipiche del PaaS, come slot di distribuzione, certificati gestiti e autenticazione integrata, senza dover gestire direttamente la rete dei container.

Verifica rapida

Verifichi la Sua comprensione dei concetti di Microsoft Azure Fundamentals (AZ-900) trattati in questa lezione.

Riepilogo della lezione

In questa lezione ha imparato che Azure Container Instances esegue i container in pochi secondi senza gestione dei server, con fatturazione al secondo per CPU e memoria; i gruppi di container consentono a più container di condividere rete e archiviazione come un pod Kubernetes; infine, i criteri di riavvio (Always, Never, OnFailure) controllano il ciclo di vita del container dopo la chiusura. Ora esploreremo i concetti di Kubernetes per Azure.

Domande Frequenti

La lezione «Azure Container Instances» è gratuita?

Sì — il testo completo di «Azure Container Instances» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cloud & IT Cert Prep, passa a CoddyKit PRO. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.

Cosa imparerò in «Azure Container Instances»?

Avvii in pochi secondi un'applicazione containerizzata con ACI senza gestire server, configuri variabili d'ambiente e montaggi di volumi e comprenda la fatturazione di ACI. Eserciti Cloud & IT Cert Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cloud & IT Cert Prep?

Non è richiesta alcuna esperienza precedente. Cloud & IT Cert Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Azure Container Instances»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cloud & IT Cert Prep?

Sì. Ogni lezione Cloud & IT Cert Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Azure Container Registry
  2. Azure Container Instances
  3. Concetti Kubernetes per Azure
  4. Distribuzione di carichi di lavoro su AKS
← Torna a Cloud & IT Cert Prep