0Pricing
DevOps Bootcamp · Lección

Creación de imágenes de Docker con Jenkins

Configure trabajos de Jenkins para crear y enviar automáticamente imágenes de Docker a un registro cuando cambie el código.

Creación de imágenes de Docker con Jenkins es una lección gratuita de DevOps Bootcamp en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de DevOps Bootcamp, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de DevOps Bootcamp incluye 4 lecciones en total.

Automatizar compilaciones de Docker

Compilar manualmente imágenes de Docker puede ser lento, inconsistente y propenso a errores. Esto es especialmente cierto en un entorno de equipo o cuando se realizan cambios de código con frecuencia.

La automatización es clave para ofrecer software de forma fiable y eficiente. En esta lección aprenderemos a integrar Jenkins con Docker para automatizar la creación y la subida de imágenes.

Creación de imágenes de Docker con Jenkins — ilustración 1

Requisitos previos de Jenkins y Docker

Para que Jenkins pueda compilar imágenes de Docker, debe interactuar con un daemon de Docker. Esto significa que el cliente de Docker debe estar instalado en la máquina o el agente donde se ejecutará el trabajo de Jenkins.

También necesitará:

  • Un servidor Jenkins en ejecución (de la lección 1)
  • Acceso a un registro de Docker (por ejemplo, Docker Hub)
  • Una aplicación de ejemplo y su Dockerfile

Instalación de Docker en el host de Jenkins

Para permitir que Jenkins ejecute comandos de Docker, asegúrese de que Docker esté instalado y configurado en el servidor o agente de Jenkins. A menudo, el usuario de Jenkins necesita permisos para interactuar con el daemon de Docker.

Así puede configurarlo en un sistema Linux:

sudo apt-get update
sudo apt-get install -y docker.io
sudo usermod -aG docker jenkins
sudo systemctl restart docker
sudo systemctl restart jenkins

Protección de las credenciales del registro

Para enviar imágenes a un registro de Docker, Jenkins necesita credenciales. Es fundamental almacenarlas de forma segura, no directamente en su Jenkinsfile ni en la configuración del trabajo.

La función integrada Credentials de Jenkins es perfecta para esto:

  • Vaya a Manage Jenkins > Manage Credentials.
  • Añada una credencial nueva de tipo Username with password para su registro de Docker.
  • Asígnele un ID descriptivo (por ejemplo, dockerhub-credentials) para poder hacer referencia a ella más adelante.

Aplicación Flask de ejemplo

Utilicemos una aplicación muy sencilla de Python Flask. La colocaremos en un archivo llamado app.py. Esta aplicación mostrará un mensaje básico de «Hello».

También necesitaremos un archivo requirements.txt para especificar nuestras dependencias de Python.

# app.py
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello from CoddyKit!'

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5000)

# requirements.txt
Flask==2.0.2

Creación del Dockerfile

A continuación, definiremos nuestra imagen de Docker mediante un Dockerfile. Este archivo indicará a Docker cómo compilar la imagen de nuestra aplicación.

Coloque este Dockerfile en el mismo directorio que app.py y requirements.txt.

# Dockerfile
FROM python:3.9-slim-buster
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
EXPOSE 5000
CMD ["python", "app.py"]

Trabajo de Jenkins: paso de compilación

Ahora configuraremos un trabajo Freestyle de Jenkins. En la sección Build Steps, añada un paso de tipo Execute shell. Este comando compilará su imagen de Docker.

Recuerde reemplazar yourusername por su nombre de usuario de Docker Hub o por la ruta del registro.

# In Jenkins 'Execute shell' build step:
docker build -t yourusername/coddykit-app:latest .

Trabajo de Jenkins: paso de inicio de sesión y envío

Después de compilar la imagen, debemos enviarla a nuestro registro de Docker. Normalmente, esto requiere iniciar sesión. Utilizaremos las credenciales almacenadas anteriormente.

Añada otro paso de tipo Execute shell. Jenkins inyectará las credenciales como variables de entorno (por ejemplo, DOCKER_USER y DOCKER_PASS) si se han configurado correctamente.

# In Jenkins 'Execute shell' build step:
echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
docker push yourusername/coddykit-app:latest

Automatización de los disparadores de compilación

El poder de CI/CD reside en la automatización. Jenkins puede activar automáticamente estos trabajos de compilación y envío en función de diversos eventos:

  • SCM Polling: Jenkins comprueba periódicamente si hay nuevos commits en su repositorio de Git.
  • Webhooks: Su proveedor de Git (GitHub, GitLab o Bitbucket) envía una notificación a Jenkins cada vez que se realiza un push de código.
  • Proyectos ascendentes: Se activa cuando otro trabajo de Jenkins finaliza correctamente.

Prueba del trabajo de Jenkins

Después de configurar los pasos y los disparadores de compilación, guarde el trabajo de Jenkins. Puede activar manualmente una compilación para probarlo. Observe la salida de la consola para comprobar que la imagen de Docker se compile y se envíe correctamente.

Una ejecución correcta significa que su pipeline de CI ya puede producir y almacenar automáticamente nuevas imágenes de Docker cada vez que cambie el código.

Comprobación rápida

Ha configurado un trabajo de Jenkins para compilar y enviar una imagen de Docker. Su repositorio de Git contiene nuevos cambios de código.

Repaso: compilación y envío

¡Excelente trabajo! En esta lección, ha aprendido a:

  • Preparar el entorno de Jenkins para interactuar con Docker.
  • Gestionar de forma segura las credenciales del registro de Docker en Jenkins.
  • Configurar un trabajo de Jenkins para compilar una imagen de Docker mediante un Dockerfile.
  • Enviar la imagen recién compilada a un registro de Docker.
  • Comprender distintas formas de activar compilaciones automatizadas.

La automatización de estos pasos es una parte fundamental de la Integración Continua y prepara el camino para la Entrega Continua.

Preguntas frecuentes

¿La lección «Creación de imágenes de Docker con Jenkins» es gratis?

Sí — el texto completo de «Creación de imágenes de Docker con Jenkins» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de DevOps Bootcamp, actualiza a CoddyKit PRO. El curso de DevOps Bootcamp incluye 4 lecciones en total.

¿Qué aprenderé en «Creación de imágenes de Docker con Jenkins»?

Configure trabajos de Jenkins para crear y enviar automáticamente imágenes de Docker a un registro cuando cambie el código. Practicas DevOps Bootcamp con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar DevOps Bootcamp?

No se requiere experiencia previa. DevOps Bootcamp en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Creación de imágenes de Docker con Jenkins»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de DevOps Bootcamp?

Sí. Cada lección de DevOps Bootcamp incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Introducción a Jenkins
  2. Creación de imágenes de Docker con Jenkins
  3. Despliegue automatizado con Jenkins
  4. Pipeline as Code de Jenkins con Jenkinsfile
← Volver a DevOps Bootcamp