(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:
- Controller di dominio/sistema operativo Mesosphere
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. | |
Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser. | |
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo in alto a destra del portale di Azure. |
Per eseguire il codice di questo articolo in Azure Cloud Shell:
Avviare Cloud Shell.
Selezionare il pulsante Copia in un blocco di codice per copiare il codice.
Incollare il codice nella sessione di Cloud Shell premendo CTRL+MAIUSC+V in Windows e Linux o CMD+MAIUSC+V in macOS.
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