Instalación de Jenkins con Docker

JenkinsJenkinsBeginner
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 laboratorio, exploraremos el proceso de instalación de Jenkins utilizando Docker. Jenkins es un servidor de automatización ampliamente utilizado para los procesos de integración continua y entrega continua (CI/CD). Al final de este laboratorio, tendrás experiencia práctica configurando Jenkins con Docker, lo que te proporcionará una base sólida para futuros proyectos de DevOps.

Para los principiantes, es importante entender que Docker es una plataforma que te permite empaquetar y ejecutar aplicaciones en entornos aislados llamados contenedores. Este aislamiento asegura que tu aplicación funcione de manera consistente en diferentes sistemas. Por otro lado, Jenkins es una herramienta que ayuda a automatizar partes del desarrollo de software, particularmente la compilación, prueba y despliegue del código.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL jenkins(("Jenkins")) -.-> jenkins/InstallingJenkinsGroup(["Installing Jenkins"]) jenkins(("Jenkins")) -.-> jenkins/UsingJenkinsGroup(["Using Jenkins"]) jenkins/InstallingJenkinsGroup -.-> jenkins/initial_settings("Jenkins Initial Settings") jenkins/InstallingJenkinsGroup -.-> jenkins/docker_installation("Use Docker Installation") jenkins/UsingJenkinsGroup -.-> jenkins/create_project("Create Project") subgraph Lab Skills jenkins/initial_settings -.-> lab-391174{{"Instalación de Jenkins con Docker"}} jenkins/docker_installation -.-> lab-391174{{"Instalación de Jenkins con Docker"}} jenkins/create_project -.-> lab-391174{{"Instalación de Jenkins con Docker"}} end

Preparando el entorno de Docker

En este paso, aseguraremos que Docker esté correctamente instalado y en ejecución en nuestro sistema. Docker es esencial para este laboratorio ya que nos permite ejecutar Jenkins en un contenedor, proporcionando un entorno consistente y aislado.

Primero, verifiquemos que Docker esté instalado y en ejecución. Abrir una terminal y ejecutar el siguiente comando:

docker --version
Salida del comando de versión de Docker

Este comando debe mostrar la versión de Docker instalada en tu sistema. Deberías ver una salida similar a esta:

Docker version 20.10.21, build 20.10.21-0ubuntu1~22.04.3

Si no ves un número de versión, podría significar que Docker no está instalado o no está en la variable PATH de tu sistema. No te preocupes si esto sucede; lo resolveremos en breve.

A continuación, comprobemos si el demonio de Docker está en ejecución:

sudo systemctl status docker

Este comando comprueba el estado del servicio de Docker. Deberías ver una salida que indique que el servicio de Docker está activo (en ejecución). Podría verse algo así:

● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-09-11 10:00:00 UTC; 2h 30min ago

Si Docker no está en ejecución, verás un mensaje que indique que el servicio está inactivo o ha fallado.

Descargando la imagen de Docker de Jenkins

En este paso, descargaremos la imagen oficial de Docker de Jenkins desde Docker Hub. Docker Hub es un repositorio basado en la nube donde se almacenan y comparten imágenes de Docker.

Para descargar la última versión LTS (Long Term Support, Soporte a Largo Plazo) de Jenkins, ejecuta el siguiente comando:

docker pull jenkins/jenkins:lts

Desglosemos este comando:

  • docker pull le dice a Docker que descargue una imagen.
  • jenkins/jenkins es el nombre de la imagen (creada por el proyecto Jenkins).
  • :lts es una etiqueta que especifica que queremos la versión de Soporte a Largo Plazo, que generalmente es más estable.

Este comando descarga la imagen de Jenkins a tu máquina local. La descarga puede tardar unos minutos dependiendo de la velocidad de tu conexión a Internet. Verás barras de progreso que indican el estado de descarga de las diversas capas que componen la imagen.

Después de que se complete la descarga, puedes verificar que la imagen esté ahora disponible localmente ejecutando:

docker images

Este comando lista todas las imágenes de Docker en tu sistema. Deberías ver la imagen de Jenkins en la salida, similar a esto:

REPOSITORY         TAG       IMAGE ID       CREATED        SIZE
jenkins/jenkins    lts       7a7add0bf3da   8 days ago     470MB

Si no ves la imagen de Jenkins, podría significar que la descarga falló. En este caso, intenta ejecutar el comando docker pull de nuevo. Si los problemas persisten, verifica tu conexión a Internet o intenta usar una red diferente.

Creando un volumen de Docker para los datos de Jenkins

En este paso, crearemos un volumen de Docker para almacenar de forma persistente los datos de Jenkins. Este es un paso crucial para mantener la configuración de Jenkins y el historial de compilaciones.

Los volúmenes de Docker proporcionan una forma de persistir los datos generados y utilizados por los contenedores de Docker. Esto es particularmente importante para Jenkins, ya que queremos conservar la configuración, los datos de los trabajos y los artefactos de compilación incluso si el contenedor se detiene o se elimina.

Crea un nuevo volumen llamado jenkins-data ejecutando:

docker volume create jenkins-data

Este comando le dice a Docker que cree un nuevo volumen. Docker gestiona estos volúmenes, almacenándolos en una parte del sistema de archivos del host.

Puedes verificar que el volumen se haya creado listando todos los volúmenes de Docker:

docker volume ls

Deberías ver jenkins-data en la lista de volúmenes, así:

DRIVER    VOLUME NAME
local     jenkins-data

Si no ves el volumen, intenta crearlo de nuevo. Si los problemas persisten, asegúrate de tener los permisos necesarios para crear volúmenes de Docker (es posible que debas usar sudo si tu usuario no está en el grupo de docker).

Comprender los volúmenes de Docker es importante porque:

  1. Permiten que los datos persistan más allá del ciclo de vida de un contenedor.
  2. Pueden ser fácilmente respaldados y restaurados.
  3. Pueden ser compartidos entre contenedores si es necesario.

Ejecutando el contenedor de Docker de Jenkins

Ahora que tenemos la imagen de Jenkins y un volumen para la persistencia de datos, podemos ejecutar el contenedor de Jenkins. Este paso realmente iniciará Jenkins en un contenedor de Docker, haciéndolo accesible en tu sistema.

Ejecutaremos el contenedor con las siguientes configuraciones:

  • Mapear el puerto 8080 del contenedor al puerto 8080 del host (para la interfaz web).
  • Mapear el puerto 50000 del contenedor al puerto 50000 del host (para las conexiones de agentes).
  • Montar el volumen jenkins-data en /var/jenkins_home dentro del contenedor.
  • Ejecutar el contenedor en modo desatendido.

Ejecuta el siguiente comando para ejecutar el contenedor de Jenkins:

docker run -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home --name jenkins-lts jenkins/jenkins:lts

Desglosemos este comando:

  • docker run crea y ejecuta un nuevo contenedor.
  • -d ejecuta el contenedor en modo desatendido (en segundo plano).
  • -p 8080:8080 mapea el puerto 8080 del contenedor al puerto 8080 de tu host.
  • -p 50000:50000 mapea el puerto 50000 del contenedor al puerto 50000 de tu host.
  • -v jenkins-data:/var/jenkins_home monta nuestro volumen de Docker en el directorio de inicio de Jenkins dentro del contenedor.
  • --name jenkins-lts le da un nombre a nuestro contenedor para una fácil referencia.
  • jenkins/jenkins:lts especifica la imagen a utilizar.

Después de ejecutar este comando, Docker iniciará el contenedor de Jenkins en segundo plano. Puedes verificar que el contenedor esté en ejecución ejecutando:

docker ps

Este comando lista todos los contenedores de Docker en ejecución. Deberías ver el contenedor de Jenkins en la salida, similar a esto:

CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS                                                                                      NAMES
747b6dc7b1af   jenkins/jenkins:lts   "/usr/bin/tini -- /u…"   4 seconds ago   Up 3 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp   jenkins-lts

Si no ves el contenedor de Jenkins, es posible que haya fallado al iniciar. Puedes verificar los mensajes de error utilizando:

docker logs jenkins-lts

Esto mostrará los registros del contenedor, lo que puede ayudar a diagnosticar cualquier problema.

Accediendo a la interfaz web de Jenkins

Con el contenedor de Jenkins ahora en ejecución, podemos acceder a su interfaz web para completar la configuración inicial. Este paso lo guiará a través del acceso a Jenkins y de la realización de la configuración inicial.

Hay dos formas de acceder a la interfaz web de Jenkins:

  1. Haz clic en el símbolo + en la pestaña superior del entorno virtual para crear un nuevo Web Service (Servicio web) y escribe el puerto 8080.
Creando la pestaña del servicio web de Jenkins

Este método funciona dentro del entorno del laboratorio, creando una nueva pestaña que muestra la interfaz de Jenkins.

  1. Abre el navegador Firefox en el escritorio VNC y navega a http://localhost:8080.
Página de acceso a Jenkins en Firefox

Deberías ver la página "Desbloquear Jenkins". Esta medida de seguridad asegura que solo los usuarios autorizados puedan configurar Jenkins.

Para este entorno de laboratorio, el nombre de usuario predeterminado es admin y la contraseña también es admin.

Ingresa estas credenciales en la página "Desbloquear Jenkins" y haz clic en "Continuar".

Credenciales de la página de desbloqueo de Jenkins

Después de desbloquear Jenkins, se le guiará a través del proceso de configuración inicial, que incluye la instalación de complementos y la creación de un usuario administrador. Para este laboratorio, puedes elegir la opción "Instalar complementos sugeridos" para comenzar rápidamente.

Resumen

En este laboratorio, instalamos y configuramos con éxito Jenkins utilizando Docker. Cubrimos pasos esenciales, como preparar el entorno de Docker, descargar la imagen de Jenkins, crear un volumen persistente para los datos de Jenkins, ejecutar el contenedor de Jenkins y acceder a la interfaz web de Jenkins para la configuración inicial.

Esta experiencia práctica te ha proporcionado una base sólida en el uso de Docker para desplegar Jenkins, una habilidad crucial en las prácticas modernas de DevOps. Ahora estás listo para explorar Jenkins más a fondo, crear trabajos de compilación e integrarlo en tu flujo de trabajo de desarrollo.