Compartir comentarios
Las respuestas se generan en base a la documentación.

Compilar y publicar tu primera imagen

Explicación

Ahora que has actualizado la aplicación de lista de tareas pendientes, estás listo para crear una imagen de contenedor para la aplicación y compartirla en Docker Hub. Para hacerlo, deberás seguir los siguientes pasos:

  1. Iniciar sesión con tu cuenta de Docker
  2. Crear un repositorio de imágenes en Docker Hub
  3. Compilar la imagen de contenedor
  4. Publicar la imagen en Docker Hub

Antes de sumergirte en la guía práctica, a continuación se presentan algunos conceptos fundamentales que debes tener en cuenta.

Imágenes de contenedor

Si eres nuevo en el tema de las imágenes de contenedor, piénsalas como un paquete estandarizado que contiene todo lo necesario para ejecutar una aplicación, incluyendo sus archivos, configuración y dependencias. Estos paquetes pueden luego distribuirse y compartirse con otros.

Docker Hub

Para compartir tus imágenes de Docker, necesitas un lugar para almacenarlas. Aquí es donde entran en juego los registros (registries). Aunque existen muchos registros, Docker Hub es el registro predeterminado y de referencia para las imágenes. Docker Hub ofrece un lugar tanto para almacenar tus propias imágenes como para encontrar imágenes de otros, ya sea para ejecutarlas o para utilizarlas como base para tus propias imágenes.

Al elegir imágenes base, Docker Hub ofrece dos categorías de imágenes confiables mantenidas por Docker:

En Desarrollar con contenedores, utilizaste las siguientes imágenes provenientes de Docker Hub, cada una de las cuales es una Imagen Oficial de Docker:

  • node: proporciona un entorno Node y se utiliza como base para tus esfuerzos de desarrollo. Esta imagen también se usa como base para la imagen final de la aplicación.
  • mysql: proporciona una base de datos MySQL para almacenar los elementos de la lista de tareas pendientes
  • phpmyadmin: proporciona phpMyAdmin, una interfaz basada en web para la base de datos MySQL
  • traefik: proporciona Traefik, un proxy inverso HTTP moderno y equilibrador de carga que enruta las solicitudes al contenedor adecuado en función de las reglas de enrutamiento

Explora el catálogo completo de contenido confiable en Docker Hub:

Pruébalo

En esta guía práctica, aprenderás a iniciar sesión en Docker Hub y a publicar imágenes en el repositorio de Docker Hub.

Inicia sesión con tu cuenta de Docker

Para publicar imágenes en Docker Hub, deberás iniciar sesión con una cuenta de Docker.

  1. Abre el Docker Dashboard.

  2. Selecciona Sign in en la esquina superior derecha.

  3. Si es necesario, crea una cuenta y luego completa el flujo de inicio de sesión.

Una vez que hayas terminado, deberías ver que el botón Sign in se convierte en una foto de perfil.

Crear un repositorio de imágenes

Ahora que tienes una cuenta, puedes crear un repositorio de imágenes. De la misma manera que un repositorio de Git contiene código fuente, un repositorio de imágenes almacena imágenes de contenedor.

  1. Ve a Docker Hub.

  2. Selecciona Create repository.

  3. En la página Create repository, ingresa la siguiente información:

    • Repository name: getting-started-todo-app
    • Short description: siéntete libre de ingresar una descripción si lo deseas
    • Visibility: selecciona Public para permitir que otros descarguen tu aplicación de lista de tareas personalizada
  4. Selecciona Create para crear el repositorio.

Compilar y publicar la imagen

Ahora que tienes un repositorio, estás listo para compilar y publicar tu imagen. Una nota importante es que la imagen que estás compilando amplía la imagen de Node, lo que significa que no necesitas instalar ni configurar Node, yarn, etc. Puedes concentrarte en lo que hace que tu aplicación sea única.

¿Qué es una imagen/Dockerfile?

Sin profundizar demasiado todavía, piensa en una imagen de contenedor como un único paquete que contiene todo lo necesario para ejecutar un proceso. En este caso, contendrá un entorno Node, el código del backend y el código compilado de React.

Cualquier máquina que ejecute un contenedor utilizando la imagen podrá entonces ejecutar la aplicación tal como fue compilada sin necesidad de tener nada más preinstalado en la máquina.

Un Dockerfile es un script basado en texto que proporciona el conjunto de instrucciones sobre cómo compilar la imagen. Para este inicio rápido, el repositorio ya contiene el Dockerfile.

  1. Para comenzar, clona o descarga el proyecto como un archivo ZIP en tu máquina local.

    $ git clone https://github.com/docker/getting-started-todo-app
    

    Y una vez el proyecto esté clonado, navega al nuevo directorio creado por la clonación:

    $ cd getting-started-todo-app
    
  2. Compila el proyecto ejecutando el siguiente comando, reemplazando DOCKER_USERNAME con tu nombre de usuario.

    $ docker build -t <DOCKER_USERNAME>/getting-started-todo-app .
    

    Por ejemplo, si tu nombre de usuario de Docker fuera mobydock, ejecutarías lo siguiente:

    $ docker build -t mobydock/getting-started-todo-app .
    
  3. Para verificar que la imagen existe localmente, puedes usar el comando docker image ls:

    $ docker image ls
    

    Verás una salida similar a la siguiente:

    REPOSITORY                          TAG       IMAGE ID       CREATED          SIZE
    mobydock/getting-started-todo-app   latest    1543656c9290   2 minutes ago    1.12GB
    ...
    
  4. Para publicar la imagen, utiliza el comando docker push. Asegúrate de reemplazar DOCKER_USERNAME con tu nombre de usuario:

    $ docker push <DOCKER_USERNAME>/getting-started-todo-app
    

    Dependiendo de tu velocidad de subida, esto puede tardar un momento en publicarse.

  1. Abre Visual Studio Code. Asegúrate de tener instalada la extensión de Docker para VS Code desde el Extension Marketplace.

    Screenshot of VS code extension marketplace
  2. En el menú File, selecciona Open Folder. Elige Clone Git Repository y pega esta URL: https://github.com/docker/getting-started-todo-app

    Screenshot of VS code showing how to clone a repository
  3. Haz clic derecho en el Dockerfile y selecciona el elemento de menú Build Image....

    Screenshot of VS Code showing the right-click menu and "Build Image" menu item
  4. En el cuadro de diálogo que aparece, ingresa un nombre como DOCKER_USERNAME/getting-started-todo-app, reemplazando DOCKER_USERNAME con tu nombre de usuario de Docker.

  5. Después de presionar Enter, verás aparecer una terminal donde se llevará a cabo la compilación. Una vez finalizada, siéntete libre de cerrar la terminal.

  6. Abre la extensión de Docker para VS Code seleccionando el logotipo de Docker en el menú de navegación izquierdo.

  7. Busca la imagen que creaste. Tendrá un nombre como docker.io/DOCKER_USERNAME/getting-started-todo-app.

  8. Expande la imagen para ver las etiquetas (o diferentes versiones) de la misma. Deberías ver una etiqueta llamada latest, que es la etiqueta predeterminada que se le asigna a una imagen.

  9. Haz clic derecho en el elemento latest y selecciona la opción Push....

    Screenshot of the Docker Extension and the right-click menu to push an image
  10. Presiona Enter para confirmar y luego observa cómo se publica tu imagen en Docker Hub. Dependiendo de tu velocidad de subida, la publicación de la imagen puede tardar un momento.

    Una vez que la subida haya finalizado, siéntete libre de cerrar la terminal.

Resumen

Antes de continuar, tómate un momento para reflexionar sobre lo que ha sucedido aquí. En pocos instantes, has podido compilar una imagen de contenedor que empaqueta tu aplicación y publicarla en Docker Hub.

En adelante, querrás recordar que:

  • Docker Hub es el registro de referencia para encontrar contenido confiable. Docker ofrece una colección de contenido confiable, compuesta por Imágenes Oficiales de Docker, Editores Verificados por Docker y Software de Código Abierto Patrocinado por Docker, para usar directamente o como base para tus propias imágenes.

  • Docker Hub proporciona un mercado para distribuir tus propias aplicaciones. Cualquiera puede crear una cuenta y distribuir imágenes. Aunque estés distribuyendo públicamente la imagen que creaste, los repositorios privados pueden garantizar que tus imágenes sean accesibles solo para usuarios autorizados.

Uso de otros registros

Aunque Docker Hub es el registro predeterminado, los registros están estandarizados y son interoperables gracias a la Open Container Initiative. Esto permite a las empresas y organizaciones ejecutar sus propios registros privados. Con bastante frecuencia, el contenido confiable se replica (o copia) desde Docker Hub en estos registros privados.

Siguientes pasos

Ahora que has compilado una imagen, es hora de analizar por qué tú, como desarrollador, deberías aprender más sobre Docker y cómo te ayudará en tus tareas diarias.

Qué sigue