Imagen de Docker y Registro

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este desafío, vamos a jugar con imágenes de Docker. Una imagen de contenedor de Docker es un paquete de software ligero, autónomo y ejecutable que contiene todo lo necesario para ejecutar una aplicación: código, entorno de ejecución, herramientas del sistema, bibliotecas del sistema y configuraciones.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/tag("Tag an Image") docker/ImageOperationsGroup -.-> docker/push("Push Image to Repository") docker/SystemManagementGroup -.-> docker/login("Log into Docker Registry") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/run -.-> lab-7768{{"Imagen de Docker y Registro"}} docker/pull -.-> lab-7768{{"Imagen de Docker y Registro"}} docker/tag -.-> lab-7768{{"Imagen de Docker y Registro"}} docker/push -.-> lab-7768{{"Imagen de Docker y Registro"}} docker/login -.-> lab-7768{{"Imagen de Docker y Registro"}} docker/build -.-> lab-7768{{"Imagen de Docker y Registro"}} end

Cambiar una imagen de Docker

Una imagen de Docker contiene un nombre de imagen y una etiqueta de imagen, donde el nombre de imagen comprende la dirección del repositorio y el identificador de la imagen. En esta subsección, vamos a subir una imagen de Docker creada por alguien más a nuestro repositorio.

Objetivo

Tu objetivo es subir la imagen pública ubuntu en dockerhub a tu repositorio privado.

Ejemplo de resultado

Aquí hay un ejemplo de lo que deberías poder lograr al final de este desafío:

  1. Registrarte en dockerhub e iniciar sesión.
Pantalla de registro e inicio de sesión de Dockerhub
  1. Descargar la imagen ubuntu:22.10 desde el docker hub a nuestro servidor local.
Descargando la imagen de Docker de Ubuntu
  1. Cambiar la imagen ubuntu:22.10 a nuestra dirección de repositorio.
Cambiando la dirección del repositorio de la imagen de Docker
  1. Iniciar sesión en el docker hub.
Pantalla de inicio de sesión de Docker Hub
  1. Subir la imagen al repositorio remoto.
Subiendo la imagen al repositorio

Requisitos

Para completar este desafío, necesitarás:

  • Instalar el motor de Docker.
  • Tener algunos conocimientos de la línea de comandos de Docker.
  • Existir una imagen de Docker que necesita ser actualizada
✨ Revisar Solución y Practicar

Construir una imagen web

Normalmente usamos nginx para ejecutar aplicaciones estáticas como sitios web. En esta sección, construiremos nuestra imagen web.

Objetivo

Tu objetivo es crear una imagen de contenedor de Docker y empaquetar una aplicación web simple en ella, luego usar esa imagen para iniciar el contenedor y hacerlo accesible correctamente.

Ejemplo de resultado

Aquí hay un ejemplo de lo que deberías poder lograr al final de este desafío:

  1. Crear un nuevo archivo llamado index.html en el directorio /home/labex/Code con el contenido hello labex.
Creando el archivo index html
  1. Crear un nuevo archivo llamado Dockerfile con el siguiente contenido
Ejemplo de contenido de Dockerfile
  1. Construir tu imagen web con el formato tu_id_de_dockerhub/web:1.1.0.
Construyendo la imagen web de Docker
  1. Subir la imagen web creada a dockerhub.
Subiendo la imagen web a DockerHub
  1. Iniciar un contenedor llamado web con tu_id_de_dockerhub/web:1.1.0, y también necesitamos mapear el puerto 80 al host.
Iniciando el contenedor web de Docker
  1. Usar el comando curl para visitar http://127.0.0.1 y comprobar que la salida es hello labex.
Salida del comando curl hello labex

Requisitos

Para completar este desafío, necesitarás:

  • Construir con Dockerfile
  • Especificar la imagen base como Nginx:latest
  • Exponer el puerto 80 en el Dockerfile usando el comando EXPOSE
  • Después de que la construcción esté completa, asegúrate de que el contenedor pueda ejecutarse correctamente y responder a solicitudes HTTP
✨ Revisar Solución y Practicar

Construcción de imágenes multi-etapas

La creación de una imagen de contenedor a menudo implica dos pasos:

  1. Compilar la construcción de la aplicación.
  2. Crear la imagen de la aplicación.

En esta sección, se combinarán estos dos pasos en un único archivo Docker para lograr una construcción multi-etapa.

Para completar esta sección del desafío, hemos preparado un proyecto Hello World en https://github.com/joker-bai/go-hello-world.git.

Objetivo

Tu objetivo es utilizar una construcción multi-etapa para crear una imagen de contenedor y usar esa imagen para iniciar un contenedor y que sea accesible correctamente.

Ejemplo de resultado

Aquí hay un ejemplo de lo que deberías poder lograr al final de este desafío:

  1. Crear un directorio hello-world en el directorio /home/labex/Code.
    Creando el directorio hello world

  2. Crear un Dockerfile en este directorio con el siguiente contenido
    Ejemplo de creación de Dockerfile

  3. Construir la imagen de Docker con el formato tu_id_de_dockerhub/go-hello-world:1.1.0.
    Proceso de construcción de la imagen de Docker

  4. Subir la imagen al docker hub.
    Subiendo la imagen de Docker al hub

  5. Iniciar un contenedor llamado go-hello-world y exponer el puerto 8080.
    Iniciando el contenedor go hello world

  6. Visitar http://127.0.0.1:8080 para comprobar si está bien.
    Comprobación de la respuesta HTTP del contenedor

Requisitos

Para completar este desafío, necesitarás:

  • Construir con Dockerfile
  • Después de que la construcción esté completa, asegúrate de que el contenedor pueda ejecutarse correctamente y responder a solicitudes HTTP
✨ Revisar Solución y Practicar

Resumen

Felicitaciones por la finalización de todos los elementos de este desafío. Ahora tienes la flexibilidad para crear y administrar imágenes de aplicaciones.