Esplorare i contenitori nelle app di Azure Container

Completato

Azure Container Apps gestisce i dettagli di Kubernetes e dell'orchestrazione dei contenitori per te. I contenitori in Azure Container Apps possono usare qualsiasi runtime, linguaggio di programmazione o stack di sviluppo a tua scelta.

Diagramma che mostra come i contenitori per un'app contenitore di Azure vengono raggruppati in pod all'interno di snapshot di revisione.

Azure Container Apps supporta qualsiasi immagine di contenitore x86-64 basata su Linux (linux/amd64). Non è necessaria l'immagine del contenitore di base e, se un contenitore si arresta in modo anomalo, viene riavviato automaticamente.

Configurazione

Il codice seguente è un esempio della matrice di containers nella sezione properties.template di un modello di risorsa dell'app contenitore. L'estratto mostra alcune delle opzioni di configurazione disponibili durante la configurazione di un contenitore quando si usano modelli di Azure Resource Manager (ARM). Le modifiche apportate alla sezione di configurazione ARM del template attivano una nuova revisione dell'applicazione contenitore.

"containers": [
  {
       "name": "main",
       "image": "[parameters('container_image')]",
    "env": [
      {
        "name": "HTTP_PORT",
        "value": "80"
      },
      {
        "name": "SECRET_VAL",
        "secretRef": "mysecret"
      }
    ],
    "resources": {
      "cpu": 0.5,
      "memory": "1Gi"
    },
    "volumeMounts": [
      {
        "mountPath": "/myfiles",
        "volumeName": "azure-files-volume"
      }
    ]
    "probes":[
        {
            "type":"liveness",
            "httpGet":{
            "path":"/health",
            "port":8080,
            "httpHeaders":[
                {
                    "name":"Custom-Header",
                    "value":"liveness probe"
                }]
            },
            "initialDelaySeconds":7,
            "periodSeconds":3
// file is truncated for brevity

Più contenitori

È possibile definire più contenitori in un'unica app contenitore per implementare il modello sidecar. I contenitori in un'app contenitore condividono il disco rigido e le risorse di rete e sperimentano lo stesso ciclo di vita dell'applicazione.

Esempi di contenitori sidecar includono:

  • Un agente che legge i log dal contenitore dell'applicazione principale su un volume condiviso e li inoltra a un servizio di registrazione.
  • Processo in background che aggiorna una cache usata dal contenitore dell'app primaria in un volume condiviso.

Nota

L'esecuzione di più contenitori in una singola app contenitore è un caso d'uso avanzato. Nella maggior parte dei casi in cui si vogliono eseguire più contenitori, ad esempio quando si implementa un'architettura di microservizio, distribuire ogni servizio come app contenitore separata.

Per eseguire più contenitori in un'app contenitore, aggiungere più contenitori nella matrice contenitori del modello di app contenitore.

Registri contenitori

È possibile distribuire immagini ospitate in registri privati specificando le credenziali nella configurazione di App contenitore.

Per utilizzare i registri dei contenitori, è necessario definire i campi richiesti all'interno dell'array registries nella sezione properties.configuration del modello di risorsa dell'app per container. Il campo passwordSecretRef identifica il nome del segreto nel nome della matrice dei segreti in cui è stata definita la password.

{
  ...
  "registries": [{
    "server": "docker.io",
    "username": "my-registry-user-name",
    "passwordSecretRef": "my-password-secret-name"
  }]
}

Con le informazioni del Registro di sistema aggiunte, le credenziali salvate possono essere usate per eseguire il pull di un'immagine del contenitore dal registro privato quando l'app viene distribuita.

Limitazioni

App Azure Container presenta le limitazioni seguenti:

  • Contenitori con privilegi: Le app contenitore di Azure non possono eseguire contenitori con privilegi. Se il programma tenta di eseguire un processo che richiede l'accesso radice, l'applicazione all'interno del contenitore riscontra un errore di runtime.
  • sistema operativo: le immagini del contenitore basate su Linux (linux/amd64) sono necessarie.