Esercizio - Recuperare un'immagine Docker esistente e distribuirla in locale
Per creare ed eseguire immagini Docker, è consigliabile prendere un'immagine esistente dall'hub Docker ed eseguirla localmente nel computer.
Per effettuare una verifica delle applicazioni aziendali, si decide di provare a eseguire un'immagine di esempio da Docker Hub. L'immagine selezionata implementa un'app Web .NET Core di base ASP.NET. Dopo aver stabilito un processo per la distribuzione di un'immagine Docker, è possibile eseguire una delle app Web dell'azienda usando Docker.
In questo esercizio si fa il pull di un'immagine da Docker Hub e la si esegue. Si esamina lo stato locale di Docker per comprendere gli elementi distribuiti. Rimuovere infine il contenitore e l'immagine dal computer.
Importante
Questo esercizio viene eseguito nel computer, non in Azure e richiede un'installazione locale di Docker. Scaricare: https://docs.docker.com/desktop/install/windows-install/
Eseguire il pull ed eseguire un'applicazione di esempio dall'hub Docker
Avviare Docker sul proprio computer.
Aprire una finestra del prompt dei comandi nel computer locale.
Immettere il codice seguente per eseguire il pull dell'immagine dell'app di esempio ASP.NET dal Registro di sistema dell'hub Docker. Questa immagine contiene un'app Web di esempio sviluppata da Microsoft ed è basata sul modello ASP.NET predefinito disponibile in Visual Studio.
docker pull mcr.microsoft.com/dotnet/samples:aspnetappImmettere il codice seguente per verificare che l'immagine sia stata archiviata in locale.
docker image lsVerrà visualizzato un repository denominato mcr.microsoft.com/dotnet/samples con un tag aspnetapp.
Immettere il codice seguente per avviare l'app di esempio. Il
-dflag serve a eseguire l'applicazione come non interattiva in background. Il flagpserve per eseguire il mapping della porta 8080 nel contenitore creato alla porta 8080 in locale. Questa impostazione è destinata a evitare conflitti con qualsiasi app Web già in esecuzione nel computer. Il comando risponde con un identificatore esadecimale lungo per l'istanza.docker run -d -p 8080:8080 mcr.microsoft.com/dotnet/samples:aspnetappAprire un Web browser e passare all'URL per l'app Web di esempio:
http://localhost:8080. Dovrebbe essere visualizzata una pagina simile alla schermata seguente:
Esaminare il contenitore nel registro Docker locale
Al prompt dei comandi eseguire il comando seguente per visualizzare i contenitori in esecuzione nel registro locale.
docker psL'output deve essere simile all'esempio seguente:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 96c851831ade mcr.microsoft.com/dotnet/samples:aspnetapp "dotnet aspnetapp.dll" 22 minutes ago Up 22 minutes 0.0.0.0:8080->80/tcp eager_montalciniIl campo COMMAND mostra il contenitore avviato eseguendo il comando dotnet aspnetapp.dll. Questo comando richiama il runtime di .NET Core per avviare il codice in aspnetapp.dll (il codice per l'app Web di esempio). Il campo PORTS indica che la porta 8080 nell'immagine è stata mappata alla porta 80 nel computer. Il campo STATUS mostra che l'applicazione è ancora in esecuzione. Prendere nota del nome del contenitore.
Eseguire il comando seguente per arrestare il contenitore Docker, sostituendo il segnaposto
<NAME>con il nome dell'output del comando precedente.docker container stop <NAME>Eseguire il comando seguente per verificare che il contenitore non sia più in esecuzione. Il flag -a indica che il comando mostra lo stato di tutti i contenitori, non solo dei contenitori in esecuzione. L'output dovrebbe mostrare lo STATO del contenitore come Exited.
docker ps -aNel browser Web, aggiornare la pagina per l'app Web di esempio (http://localhost:8080/).) Deve avere esito negativo con errore Connection Refused (Connessione non riuscita).
Rimuovere il contenitore e l'immagine dal registro locale
Anche se il contenitore viene arrestato, viene comunque caricato e può essere riavviato. Eseguire il comando seguente nella finestra del prompt dei comandi per rimuoverlo, sostituendo il segnaposto
<NAME>con il nome del contenitore.docker container rm <NAME>Verificare che il contenitore sia stato rimosso eseguendo il comando seguente. Il comando non deve più includere il contenitore nell'elenco.
docker ps -aElencare le immagini attualmente disponibili nel computer. L'output dovrebbe visualizzare il repository degli esempi.
docker image lsRimuovere l'immagine dal registro.
docker image rm mcr.microsoft.com/dotnet/samples:aspnetappL'output dovrebbe elencare numerosi elementi senza tag ed eliminati. Eseguire il comando seguente per elencare di nuovo le immagini e verificare che l'immagine per l'app Web microsoft/dotnet-samples sia scomparsa.
docker image ls