Övning – Hämta en befintlig Docker-avbildning och distribuera den lokalt

Slutförd

En bra utgångspunkt för att skapa och köra dina egna Docker-avbildningar är att ta en befintlig avbildning från Docker Hub och köra den lokalt på datorn.

Som ett proof-of-concept för företagets program beslutar du dig för att prova att köra en exempelavbildning från Docker Hub. Avbildningen som du har valt implementerar en grundläggande .NET Core-ASP.NET webbapp. När du har etablerat en process för att distribuera en Docker-avbildning kan du köra någon av företagets egna webbappar med Docker.

I den här övningen ska du hämta en avbildning från Docker Hub och köra den. Du tittar närmare på lokala tillståndet för Docker för att förstå de element som har distribuerats. Till slut tar du bort containern och avbildningen från datorn.

Viktigt!

Den här övningen gör du på datorn, inte i Azure. Du behöver en lokal installation av Docker för att fortsätta med den här övningen. Ladda ned: https://hub.docker.com/editions/community/docker-ce-desktop-windows/

Hämta och köra ett exempelprogram från Docker Hub

  1. Starta Docker på datorn.

  2. Öppna ett kommandotolksfönster på den lokala datorn.

  3. Ange följande kod för att hämta ASP.NET Exempelappsbild från Docker Hub-registret. Den här bilden innehåller en exempelwebbapp som utvecklats av Microsoft och baseras på standardmallen ASP.NET som är tillgänglig i Visual Studio.

    docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
    
  4. Ange följande kod för att kontrollera att avbildningen har lagrats lokalt.

    docker image ls
    

    Du bör se en lagringsplats med namnet mcr.microsoft.com/dotnet/samples med taggen aspnetapp.

  5. Ange följande kod för att starta exempelappen. Flaggan -d är att köra den som en icke-interaktiv bakgrundsapp. Flaggan -p är att mappa port 8080 i containern som skapas till port 8080 lokalt. Den här inställningen är avsedd att undvika konflikter med webbappar som redan körs på datorn. Kommandot svarar med en lång hexadecimal identifierare för instansen.

    docker run -d -p 8080:8080 mcr.microsoft.com/dotnet/samples:aspnetapp
    
  6. Öppna en webbläsare och ange URL:en för exempelwebbappen: http://localhost:8080. Du bör se en sida som ser ut som följande skärmbild:

    Screenshot of the sample web app running in a browser.

Granska containern i det lokala Docker-registret

  1. I kommandotolken kör du följande kommando för att visa de containrar som körs i det lokala registret.

    docker ps
    

    Utdata bör se ut ungefär så här:

    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
    

    I fältet COMMAND (Kommando) visas när containern startas via körning av kommandot dotnet aspnetapp.dll. Det här kommandot anropar .NET Core-körning för att starta koden i aspnetapp.dll (koden för exempelwebbappen). Fältet PORTS anger att port 8080 i avbildningen mappades till port 8080 på datorn. Fältet STATUS visar att programmet fortfarande körs. Anteckna containerns NAMN.

  2. Kör följande kommando för att stoppa Docker-containern och ersätt platshållaren <NAME> med utdatanamnet från föregående kommando.

    docker container stop <NAME>
    
  3. Kör följande kommando för att kontrollera att containern inte längre körs. Flaggan -a anger att kommandot visar status för alla containrar, inte bara de containrar som körs. Utdata ska visa STATUS för containern som Avslutad.

    docker ps -a
    
  4. I webbläsaren uppdaterar du sidan för exempelwebbappen (http://localhost:8080/). Det bör misslyckas, och felet Det går inte att ansluta ska visas.

Ta bort containern och avbildningen från det lokala registret

  1. Även om containern har stoppats är den fortfarande inläst och kan startas om. Kör följande kommando i kommandotolken för att ta bort det och ersätt <NAME> platshållaren med namnet på containern.

    docker container rm <NAME>
    
  2. Kontrollera att containern har tagits bort genom att köra följande kommando. Kommandot bör inte längre lista containern.

    docker ps -a
    
  3. Lista bilderna som för närvarande finns på datorn. Utdata ska visa exempellagringsplatsen.

    docker image ls
    
  4. Ta bort avbildningen från registret.

    docker image rm mcr.microsoft.com/dotnet/samples:aspnetapp
    
  5. Utdata bör visa en lista över flera objekt som har tagits bort och tagits bort. Kör följande kommando för att visa avbildningarna igen och kontrollera att avbildningen för webbappen microsoft/dotnet-samples har försvunnit.

    docker image ls