Übung: Abrufen eines vorhandenen Docker-Images und lokale Bereitstellung
Ein guter Ausgangspunkt für die Erstellung und Ausführung eigener Docker-Images besteht darin, ein vorhandenes Image aus Docker Hub zu verwenden und es lokal auf Ihrem Computer auszuführen.
Als Proof of Concept-für die Anwendungen des Unternehmens möchten Sie versuchen, ein Beispielimage von Docker Hub auszuführen. Das Image, das Sie ausgewählt haben, implementiert eine einfache .NET Core ASP.NET-Web-App. Sobald Sie einen Prozess für die Bereitstellung eines Docker-Images eingerichtet haben, können Sie eine der unternehmenseigenen Web-Apps mit Docker ausführen.
In dieser Übung pullen Sie ein Image aus Docker Hub und führen es aus. Sie untersuchen den lokalen Zustand von Docker, um zu verstehen, welche Elemente bereitgestellt werden. Schließlich entfernen Sie den Container und das Image von Ihrem Computer.
Wichtig
In dieser Übung findet auf Ihrem Computer und nicht in Azure statt. Sie benötigen eine lokale Installation von Docker, um mit der Übung fortfahren zu können. Geben Sie zum Herunterladen https://docs.docker.com/desktop/install/windows-install/ ein.
Pullen und Ausführen einer Beispielanwendung aus Docker Hub
Starten Sie Docker auf Ihrem Computer.
Öffnen Sie eine Eingabeaufforderung auf Ihrem lokalen Computer.
Geben Sie den folgenden Code ein, um das App-Image ASP.NET Sample aus der Docker Hub-Registrierung zu pullen. Dieses Image enthält eine von Microsoft entwickelte Beispiel-Web-App und basiert auf der ASP.NET-Standardvorlage, die in Visual Studio verfügbar ist.
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
Geben Sie den folgenden Code ein, um zu überprüfen, ob das Image lokal gespeichert wurde.
docker image ls
Es sollte ein Repository namens mcr.microsoft.com/dotnet/samples mit dem Tag aspnetapp angezeigt werden.
Geben Sie den folgenden Code ein, um die Beispiel-App zu starten. Das Flag -d soll sie als nicht interaktive App im Hintergrund ausführen. Mit dem Flag -p wird Port 8080 in dem erstellten Container lokal Port 8080 zugeordnet. Diese Einstellung soll Konflikte mit Web-Apps vermeiden, die bereits auf Ihrem Computer ausgeführt werden. Der Befehl antwortet mit einem langen hexadezimalen Bezeichner für die Instanz.
docker run -d -p 8080:8080 mcr.microsoft.com/dotnet/samples:aspnetapp
Öffnen Sie einen Webbrowser, und geben Sie die URL für die Beispiel-Web-App
http://localhost:8080
ein. Die Seite sollte in etwa wie auf dem folgenden Screenshot aussehen:
Überprüfen des Containers in der lokalen Docker-Registrierung
Führen Sie an der Eingabeaufforderung den folgenden Befehl aus, um die ausgeführten Container in der lokalen Registrierung anzeigen zu lassen.
docker ps
Die Ausgabe sollte in etwa wie folgt aussehen:
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_montalcini
Das Feld COMMAND zeigt den Container, der durch Ausführen des Befehls dotnet aspnetapp.dll gestartet wurde. Dieser Befehl ruft die.NET Core Runtime auf, um den Code in der Datei „aspnetapp.dll“ (den Code für die Beispiel-Web-App) zu starten. Im Feld PORTS wird angegeben, dass Port 8080 im Image Port 8080 auf Ihrem Computer zugeordnet wurde. Das Feld STATUS zeigt an, dass die Anwendung noch ausgeführt wird. Notieren Sie sich die Angabe NAME des Containers.
Führen Sie den folgenden Befehl aus, um den Docker-Container zu beenden, und ersetzen Sie den Platzhalter
<NAME>
dabei mit dem Ausgabenamen aus dem vorherigen Befehl.docker container stop <NAME>
Führen Sie den folgenden Befehl aus, um zu bestätigen, dass der Container nicht mehr ausgeführt wird. Das Flag -a gibt an, dass der Befehl den Status aller Container anzeigt, und nicht nur derjenigen, die noch ausgeführt werden. In der Ausgabe sollte der STATUS des Containers als Beendet angezeigt werden.
docker ps -a
Aktualisieren Sie in Ihrem Webbrowser die Seite mit der Beispiel-Web-App (http://localhost:8080/).). Dies sollte mit einem Fehler Connection Refused (Verbindung abgelehnt) fehlschlagen.
Entfernen des Containers und des Images aus der lokalen Registrierung
Obwohl der Container beendet wurde, ist er noch geladen und kann neu gestartet werden. Führen Sie den folgenden Befehl im Eingabeaufforderungsfenster aus, um ihn zu entfernen, und ersetzen Sie dabei den Platzhalter
<NAME>
mit dem Namen Ihres Containers.docker container rm <NAME>
Stellen Sie mit dem folgenden Befehl sicher, dass der Container entfernt wurde. In der Ausgabe des Befehls sollte der Container nicht mehr aufgeführt werden.
docker ps -a
Listen Sie die Images auf, die derzeit auf Ihrem Computer verfügbar sind. Die Ausgabe sollte das Beispielrepository anzeigen.
docker image ls
Entfernen Sie das Image aus der Registrierung.
docker image rm mcr.microsoft.com/dotnet/samples:aspnetapp
In der Ausgabe sollten zahlreiche Elemente angezeigt werden, die über keine Tags verfügen und gelöscht worden sind. Führen Sie den folgenden Befehl aus, um die Images noch mal aufzulisten. Überprüfen Sie, dass das Image für die microsoft/dotnet-samples-Web-App nicht mehr angezeigt wird.
docker image ls