Creare host Docker in Azure con Docker Machine

L'esecuzione dei contenitori Docker richiede una VM host che esegue il daemon Docker. Questo argomento descrive come usare il comando docker-machine per creare nuove macchine virtuali Linux, configurate con il daemon Docker, in esecuzione in Azure.

Nota:

  • Questo articolo si basa sulla versione di Docker Machine 0.9.0-rc2 o versione successiva
  • I contenitori Windows saranno supportati tramite Docker Machine nel prossimo futuro

Creare VM con Docker Machine

Creare macchine virtuali host di Docker in Azure con il comando docker-machine create usando il driver azure.

Il driver Azure richiede l'ID sottoscrizione. È possibile usare l'interfaccia della riga di comando di Azure o il Portale di Azure per recuperare la sottoscrizione di Azure.

Uso del portale di Azure

  • Selezionare Sottoscrizioni nella pagina di esplorazione a sinistra e copiare l'ID sottoscrizione.

Uso dell'interfaccia della riga di comando di Azure

  • Digitare azure account list e copiare l'ID sottoscrizione.

Digitare docker-machine create --driver azure per visualizzare le opzioni e i relativi valori predefiniti. È anche possibile visualizzare la documentazione del driver di Azure per Docker per altre informazioni.

L'esempio seguente si basa sui valori predefiniti, ma imposta facoltativamente questi valori:

  • azure-dns per il nome associato all'indirizzo IP pubblico e ai certificati generati. Questo è il nome DNS della macchina virtuale. La macchina virtuale può quindi arrestare e rilasciare in modo sicuro l'indirizzo IP dinamico e consentire di riconnettersi dopo che una macchina virtuale viene avviata nuovamente con un nuovo indirizzo IP. Il prefisso del nome deve essere univoco per tale area, ovvero UNIQUE_DNSNAME_PREFIX.westus.cloudapp.azure.com.
  • porta 80 aperta sulla macchina virtuale per l'accesso Internet in uscita
  • dimensioni della macchina virtuale per usare l'archiviazione Premium più veloce
  • archiviazione Premium usata per il disco della macchina virtuale
docker-machine create -d azure --azure-subscription-id <Your AZURE_SUBSCRIPTION_ID> --azure-dns <Your UNIQUE_DNSNAME_PREFIX> --azure-open-port 80 --azure-size Standard_DS1_v2 --azure-storage-type "Premium_LRS" mydockerhost 

Scegliere un host di Docker con Docker Machine

Dopo aver creato un ingresso nella Docker Machine per l'host, è possibile impostare l'host predefinito quando si eseguono comandi di Docker.

Tramite PowerShell

docker-machine env MyDockerHost | Invoke-Expression 

Tramite Bash

eval $(docker-machine env MyDockerHost)

È ora possibile eseguire i comandi di Docker con l'host specificato

docker ps
docker info

Eseguire un contenitore

Dopo aver configurato l'host, è possibile eseguire un semplice server Web per verificare che la configurazione dell'host sia corretta. In questo esempio viene usata un'immagine nginx standard. Specificare che deve essere in ascolto sulla porta 80 e che, se la VM dell'host viene riavviata, anche il contenitore deve essere riavviato (--restart=always).

docker run -d -p 80:80 --restart=always nginx

L'output dovrebbe essere simile a quanto segue.

Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
efd26ecc9548: Pull complete
a3ed95caeb02: Pull complete
83f52fbfa5f8: Pull complete
fa664caa1402: Pull complete
Digest: sha256:12127e07a75bda1022fbd4ea231f5527a1899aad4679e3940482db3b57383b1d
Status: Downloaded newer image for nginx:latest
25942c35d86fe43c688d0c03ad478f14cc9c16913b0e1c2971cb32eb4d0ab721

Eseguire il test del contenitore

Esaminare i contenitori in esecuzione usando docker ps:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
d5b78f27b335        nginx               "nginx -g 'daemon off"   5 minutes ago       Up 5 minutes        0.0.0.0:80->80/tcp, 443/tcp   goofy_mahavira

Quindi per vedere il contenitore in esecuzione digitare docker-machine ip <VM name> per trovare l'indirizzo IP da immettere nel browser:

PS C:\> docker-machine ip MyDockerHost
191.237.46.90

Esecuzione di un contenitore ngnix

Riepilogo

Docker Machine consente di eseguire facilmente il provisioning di host Docker in Azure per le convalide di host Docker singoli. Per l'hosting di produzione di contenitori, vedere l'articolo sul servizio contenitore di Azure

Per sviluppare applicazioni .NET Core con Visual Studio, vedere gli Strumenti Docker per Visual Studio