Ejercicio: Recuperación e implementación local de una imagen de Docker existente

Completado

Un buen punto de partida para compilar y ejecutar imágenes de Docker propias consiste en tomar una imagen existente de Docker Hub y ejecutarla de forma local en el equipo.

Como una prueba de concepto para las aplicaciones de la empresa, decide intentar ejecutar una imagen de ejemplo desde Docker Hub. La imagen que ha seleccionado implementa una aplicación web ASP.NET básica de .NET Core. Una vez que haya establecido un proceso para implementar una imagen de Docker, podrá ejecutar una de las aplicaciones web de la empresa mediante Docker.

En este ejercicio, extraerá una imagen de Docker Hub y la ejecutará. Examinará el estado local de Docker para comprender los elementos que se implementan. Por último, quitará el contenedor y la imagen del equipo.

Importante

Este ejercicio se realiza en el equipo, no en Azure. Necesita una instalación local de Docker para continuar con el ejercicio. Descargue: https://hub.docker.com/editions/community/docker-ce-desktop-windows/

Extracción y ejecución de una aplicación de ejemplo de Docker Hub

  1. Inicie Docker en el equipo.

  2. Abra una ventana del símbolo del sistema en el equipo local.

  3. Escriba el código siguiente para extraer la imagen de aplicación ASP.NET Sample del Registro de Docker Hub. Esta imagen contiene una aplicación web de ejemplo desarrollada por Microsoft y se basa en la plantilla de ASP.NET predeterminada disponible en Visual Studio.

    docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
    
  4. Escriba el código siguiente para comprobar que la imagen se ha almacenado localmente.

    docker image ls
    

    Debería ver un repositorio denominado mcr.microsoft.com/dotnet/samples con la etiqueta aspnetapp.

  5. Escriba el código siguiente para iniciar la aplicación de ejemplo. La marca -d sirve para ejecutarla como una aplicación no interactiva en segundo plano. La marca -p es para asignar el puerto 8080 en el contenedor que se crea al puerto 8080 localmente. Esta configuración está pensada para evitar conflictos con las aplicaciones web que ya se ejecutan en el equipo. El comando responderá con un identificador hexadecimal largo para la instancia.

    docker run -d -p 8080:8080 mcr.microsoft.com/dotnet/samples:aspnetapp
    
  6. Abra un explorador web y escriba la dirección URL de la aplicación web de ejemplo: http://localhost:8080. Debe ver una página con un aspecto como la captura de pantalla siguiente:

    Screenshot of the sample web app running in a browser.

Examen del contenedor en el registro de Docker local

  1. En el símbolo del sistema, ejecute el siguiente comando para ver los contenedores en ejecución en el Registro local.

    docker ps
    

    La salida debe tener una apariencia similar a la siguiente:

    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
    

    En el campo COMMAND se muestra el contenedor iniciado al ejecutar el comando dotnet aspnetapp.dll. Este comando invoca el runtime de .NET Core para iniciar el código del archivo aspnetapp.dll (el código de la aplicación web de ejemplo). El campo PORTS indica que el puerto 8080 de la imagen se ha asignado al puerto 8080 del equipo. En el campo STATUS se muestra que la aplicación se sigue ejecutando. Anote el valor NAME del contenedor.

  2. Ejecute el comando siguiente para detener el contenedor de Docker y reemplace el marcador de posición <NAME> por el nombre de salida del comando anterior.

    docker container stop <NAME>
    
  3. Ejecute el comando siguiente para comprobar que el contenedor ya no se está ejecutando. La marca -a indica que el comando muestra el estado de todos los contenedores, no solo los que están en ejecución. La salida debe mostrar el estado del contenedor como Cerrado.

    docker ps -a
    
  4. En el explorador web, actualice la página de la aplicación web de ejemplo (http://localhost:8080/).. Se debería producir un error de Conexión rechazada.

Eliminación de la imagen y el contenedor del registro local

  1. Aunque se haya detenido el contenedor, sigue cargado y se puede reiniciar. Ejecute el comando siguiente en la ventana del símbolo del sistema para quitarlo, reemplazando el marcador de posición <NAME> por el nombre del contenedor.

    docker container rm <NAME>
    
  2. Compruebe que se ha quitado el contenedor ejecutando el siguiente comando. El comando ya no debería mostrar el contenedor.

    docker ps -a
    
  3. Enumere las imágenes disponibles actualmente en el equipo. La salida debe mostrar el repositorio de ejemplos.

    docker image ls
    
  4. Quite la imagen del registro.

    docker image rm mcr.microsoft.com/dotnet/samples:aspnetapp
    
  5. La salida debería mostrar que numerosos elementos que se han eliminado y están sin etiquetar. Ejecute el comando siguiente para volver a mostrar las imágenes y comprobar que la imagen para la aplicación web microsoft/dotnet-samples ha desaparecido.

    docker image ls