(DEPRECATO) Usare Registro Azure Container con un cluster DC/OS per distribuire l'applicazione

Avviso

Il servizio Azure Container (ACS) è deprecato. Non saranno aggiunte nuove funzionalità al servizio Azure Container. Tutte le API, l'esperienza del portale, i comandi dell'interfaccia della riga di comando e la documentazione sono contrassegnate come deprecate.

Per altre informazioni, vedere l'annuncio di deprecazione del servizio Azure Container su Azure.com.

È consigliabile distribuire una delle soluzioni di Azure Marketplace seguenti:

Se si vuole usare Kubernetes, vedere Servizio Azure Kubernetes.

In questo articolo viene illustrato l'uso di Registro Azure Container con un cluster del controller di dominio/sistema operativo. L'uso del record di controllo di accesso consente di archiviare privatamente e di gestire le immagini del contenitore. Questa esercitazione illustra le attività seguenti:

  • Distribuire il Registro Azure Container (se necessario)
  • Configurare l'autenticazione del record di controllo di accesso in un cluster del controller di dominio/sistema operativo
  • Caricare un'immagine in Registro Azure Container
  • Eseguire un'immagine del contenitore da Registro Azure Container

È necessario un cluster del controller di dominio/sistema operativo del servizio contenitore di Azure per completare i passaggi in questa esercitazione. Se necessario, questo esempio di script può crearne uno.

Questa esercitazione richiede l'interfaccia della riga di comando di Azure 2.0.4 o versioni successive. Eseguire az --version per trovare la versione. Se è necessario eseguire l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

Usare Azure Cloud Shell

Azure Cloud Shell è un ambiente di shell interattivo ospitato in Azure e usato tramite il browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure. È possibile usare i comandi preinstallati di Cloud Shell per eseguire il codice contenuto in questo articolo senza dover installare strumenti nell'ambiente locale.

Per avviare Azure Cloud Shell:

Opzione Esempio/Collegamento
Selezionare Prova nell'angolo superiore destro di un blocco di codice. La selezione di Prova non comporta la copia automatica del codice in Cloud Shell. Esempio di Prova per Azure Cloud Shell
Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser. Avviare Cloud Shell in una nuova finestra
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo in alto a destra del portale di Azure. Pulsante Cloud Shell nel portale di Azure

Per eseguire il codice di questo articolo in Azure Cloud Shell:

  1. Avviare Cloud Shell.

  2. Selezionare il pulsante Copia in un blocco di codice per copiare il codice.

  3. Incollare il codice nella sessione di Cloud Shell premendo CTRL+MAIUSC+V in Windows e Linux o CMD+MAIUSC+V in macOS.

  4. Premere INVIO per eseguire il codice.

Distribuire il Registro Azure Container

Se necessario, creare un'istanza di Registro Azure Container con il comando az acr create.

Nell'esempio seguente viene creato un registro con un nome generato in modo casuale. Il registro viene anche configurato con un account amministratore tramite l'argomento --admin-enabled.

az acr create --resource-group myResourceGroup --name myContainerRegistry$RANDOM --sku Basic

Dopo la creazione del registro, l'interfaccia della riga di comando di Azure restituisce dati simili ai seguenti. Annotare name e loginServer, che verranno usati nei passaggi successivi.

{
  "adminUserEnabled": false,
  "creationDate": "2017-06-06T03:40:56.511597+00:00",
  "id": "/subscriptions/f2799821-a08a-434e-9128-454ec4348b10/resourcegroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myContainerRegistry23489",
  "location": "eastus",
  "loginServer": "mycontainerregistry23489.azurecr.io",
  "name": "myContainerRegistry23489",
  "provisioningState": "Succeeded",
  "sku": {
    "name": "Basic",
    "tier": "Basic"
  },
  "storageAccount": {
    "name": "mycontainerregistr034017"
  },
  "tags": {},
  "type": "Microsoft.ContainerRegistry/registries"
}

Ottenere le credenziali del registro contenitori tramite il comando az acr credential show. Sostituire --name con il valore annotato nel passaggio precedente. Prendere nota di una password, che sarà necessaria in un passaggio successivo.

az acr credential show --name myContainerRegistry23489

Per altre informazioni sul Registro Azure Container, vedere Introduzione ai registri per contenitori Docker privati.

Gestire l'autenticazione del record di controllo di accesso

Il modo convenzionale per effettuare il push e il pull di un'immagine da un registro privato consiste nell'eseguire prima l'autenticazione con il registro. A tale scopo, usare il docker login comando in qualsiasi client che richieda l'accesso al registro privato. Poiché un cluster di controller di dominio/sistema operativo può contenere molti nodi, ognuno dei quali deve essere autenticato con il record di controllo di accesso, è utile automatizzare questo processo in ogni nodo.

Creare uno spazio di archiviazione condiviso

Questo processo usa una condivisione di file di Azure che è stata montata in ogni nodo del cluster. Se non è già stato impostato lo spazio di archiviazione condiviso, vedere Creare e montare una condivisione di file per un cluster DC/OS.

Configurare l'autenticazione del record di controllo di accesso

Innanzitutto, ottenere il nome di dominio completo del master del controller di dominio/sistema operativo e archiviarlo in una variabile.

FQDN=$(az acs list --resource-group myResourceGroup --query "[0].masterProfile.fqdn" --output tsv)

Creare un collegamento SSH con il master (o il primo master) del cluster basato su controller di dominio/sistema operativo. Aggiornare il nome utente se è stato usato un valore non predefinito al momento della creazione del cluster.

ssh azureuser@$FQDN

Eseguire il comando seguente per l'accesso al Registro Azure Container. Sostituire --username con il nome del registro contenitori e --password con una delle password fornite. Sostituire l'ultimo argomento mycontainerregistry.azurecr.io nell'esempio con il nome loginServer del registro contenitori.

Questo comando archivia i valori di autenticazione in locale nel percorso ~/.docker.

docker -H tcp://localhost:2375 login --username=myContainerRegistry23489 --password=//=ls++q/m+w+pQDb/xCi0OhD=2c/hST mycontainerregistry.azurecr.io

Creare un file compresso che contenga i valori di autenticazione del registro contenitori.

tar czf docker.tar.gz .docker

Copiare questo file nello spazio di archiviazione condiviso del cluster. Questo passaggio rende il file disponibile in tutti i nodi del cluster del controller di dominio/sistema operativo.

cp docker.tar.gz /mnt/share/dcosshare

Caricare un'immagine nel record di controllo di accesso

A questo punto, da un computer di sviluppo o da qualsiasi altro sistema con Docker installato, creare un'immagine e caricarla in Registro Azure Container.

Creare un contenitore dall'immagine Ubuntu.

docker run ubuntu --name base-image

Ora è possibile acquisire il contenitore in una nuova immagine. Il nome dell'immagine deve includere il loginServer nome del Registro contenitori con un formato di loginServer/imageName.

docker -H tcp://localhost:2375 commit base-image mycontainerregistry30678.azurecr.io/dcos-demo

Accedere al Registro Azure Container. Sostituire il nome con il nome loginServer, --username con il nome del registro contenitori, e -- password con una delle password fornite.

docker login --username=myContainerRegistry23489 --password=//=ls++q/m+w+pQDb/xCi0OhD=2c/hST mycontainerregistry2675.azurecr.io

Infine, caricare l'immagine nel registro dei record di controllo di accesso. In questo esempio si carica un'immagine denominata dcos-demo.

docker push mycontainerregistry30678.azurecr.io/dcos-demo

Eseguire un'immagine dal record di controllo di accesso

Per usare un'immagine dal registro dei record di controllo di accesso, creare il nome del file acrDemo.json e copiarvi il seguente testo. Sostituire il nome dell'immagine con il nome del registro contenitori loginServer e il nome dell'immagine, ad esempio loginServer/imageName. Annotare la proprietà uris. Questa proprietà contiene la posizione del file di autenticazione del registro contenitori, che in questo caso corrisponde alla condivisione del file di Azure che è montato in ogni nodo del cluster del controller di dominio/sistema operativo.

{
  "id": "myapp",
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "mycontainerregistry30678.azurecr.io/dcos-demo",
      "network": "BRIDGE",
      "portMappings": [
        {
          "containerPort": 80,
          "hostPort": 80,
          "protocol": "tcp",
          "name": "80",
          "labels": null
        }
      ],
      "forcePullImage":true
    }
  },
  "instances": 3,
  "cpus": 0.1,
  "mem": 65,
  "healthChecks": [{
      "protocol": "HTTP",
      "path": "/",
      "portIndex": 0,
      "timeoutSeconds": 10,
      "gracePeriodSeconds": 10,
      "intervalSeconds": 2,
      "maxConsecutiveFailures": 10
  }],
  "uris":  [
       "file:///mnt/share/dcosshare/docker.tar.gz"
   ]
}

Distribuire l'applicazione con l'interfaccia della riga di comando del controller di dominio/sistema operativo.

dcos marathon app add acrDemo.json

Passaggi successivi

In questa esercitazione è necessario configurare il controller di dominio/sistema operativo per usare Registro Azure Container che comprende le seguenti attività:

  • Distribuire il Registro Azure Container (se necessario)
  • Configurare l'autenticazione del record di controllo di accesso in un cluster del controller di dominio/sistema operativo
  • Caricare un'immagine in Registro Azure Container
  • Eseguire un'immagine del contenitore da Registro Azure Container