Introducción
Los contenedores empaquetan un proceso junto con su vista del sistema de archivos y sus configuraciones de tiempo de ejecución. Un motor de contenedores como Docker permite crear imágenes, ejecutar contenedores a partir de ellas, adjuntar almacenamiento, mostrar registros (logs), ejecutar comandos dentro de un contenedor en funcionamiento y eliminar los contenedores cuando ya no son necesarios.
En este laboratorio, utilizarás el motor Docker que ya está disponible en la instancia de LabEx. Para evitar descargas de imágenes públicas, el laboratorio construye una pequeña imagen de práctica a partir de una imagen base local almacenada en caché. Inspeccionarás el motor, crearás una imagen, ejecutarás un contenedor con nombre utilizando un montaje bind (bind mount), revisarás los registros y los archivos generados, ejecutarás un comando dentro del contenedor y realizarás la limpieza del contenedor en ejecución.
Inspeccionar el motor de contenedores
En este paso, confirmarás que Docker está disponible e inspeccionarás las imágenes locales. El flujo de trabajo de un contenedor comienza por conocer qué motor estás utilizando y qué imágenes ya están presentes. Este laboratorio evita las descargas públicas utilizando una imagen base en caché.
Accede al directorio del proyecto.
cd /home/labex/project
Verifica la versión de Docker.
docker --version
Lista las imágenes locales.
docker image ls
Deberías ver gcr.io/k8s-minikube/kicbase:v0.0.37, que es la imagen que el laboratorio utiliza como base para la construcción local.
Revisar y construir una imagen local
En este paso, inspeccionarás el Dockerfile preparado y construirás una imagen local. Una imagen es una plantilla reutilizable de metadatos y sistema de archivos. Un contenedor es una instancia en ejecución creada a partir de una imagen.
Visualiza el Dockerfile. La línea ENTRYPOINT es importante porque la imagen base en caché tiene su propio punto de entrada predeterminado. Este laboratorio establece un nuevo punto de entrada para que el contenedor inicie directamente el script de práctica.
cat Dockerfile
Construye la imagen y asígnale la etiqueta lfcs-container-demo:1.0. La opción -t asigna un nombre y una etiqueta, y el punto final . le indica a Docker que utilice el directorio actual como contexto de construcción.
docker build -t lfcs-container-demo:1.0 .
Verifica la imagen después de que la construcción sea exitosa.
docker image ls lfcs-container-demo:1.0
Ejecutar un contenedor con nombre
En este paso, ejecutarás la imagen como un contenedor en modo "detached" (desconectado). Esto significa que el contenedor se ejecutará en segundo plano. El contenedor se llamará lfcs-demo y se utilizará un montaje bind para conectar /home/labex/project/container-data en el host con /data dentro del contenedor.
Ejecuta el contenedor.
docker run -d --name lfcs-demo -v /home/labex/project/container-data:/data lfcs-container-demo:1.0
Muestra el ID del contenedor.
docker ps -q --filter name=lfcs-demo
Lista los contenedores en ejecución y localiza lfcs-demo.
docker ps --filter name=lfcs-demo
Inspeccionar registros y ejecutar un comando
En este paso, inspeccionarás el contenedor en ejecución. Los registros muestran lo que imprime el proceso contenido. Un montaje bind te permite verificar que el contenedor escribió datos de vuelta en el host. docker exec ejecuta un comando dentro del contenedor en funcionamiento.
Dale al contenedor un momento para escribir los registros.
sleep 3
Lee los registros recientes del contenedor.
docker logs --tail 5 lfcs-demo
Verifica el archivo escrito a través del montaje bind.
tail -n 5 container-data/container-output.log
Ejecuta un comando dentro del contenedor para confirmar que los datos montados son visibles desde el interior.
docker exec lfcs-demo sh -c 'test -f /data/container-output.log && echo container-data-visible'
Detener y eliminar el contenedor
En este paso, realizarás la limpieza del contenedor en ejecución. Detener un contenedor finaliza su proceso. Eliminar un contenedor detenido borra el objeto del contenedor, pero no elimina la imagen que construiste.
Detén el contenedor.
docker stop lfcs-demo
Elimina el contenedor detenido.
docker rm lfcs-demo
Verifica la limpieza. docker ps -a lista todos los contenedores, incluidos los detenidos. Después de la eliminación, lfcs-demo no debería aparecer.
docker ps -a --filter name=lfcs-demo
Resumen
Has practicado un flujo de trabajo básico completo de Docker: inspeccionar el motor, utilizar una imagen base local en caché, construir una imagen etiquetada, ejecutar un contenedor con nombre en segundo plano con un montaje bind, inspeccionar registros, ejecutar un comando dentro del contenedor, y detener y eliminar el contenedor. Estas son las operaciones fundamentales con contenedores que debes comprender antes de profundizar en temas de configuración avanzada del motor u orquestación.



