Saltar al contenido

Como instalar JENKINS en DOCKER PASO a PASO

En esta entrada vas a aprender a instalar jenkins en docker, tanto por Docker CLI como por Docker Compose.

¿Qué es jenkins?

Jenkins es una herramienta de integración continua que se utiliza para la construcción de software, incluyendo compilación, análisis estático de código, ejecución de pruebas automáticas, empaquetado de la aplicación y despliegue.

Las principales características de Jenkins que lo han hecho tan popular son las siguientes:

  • Se trata de un proyecto open source.
  • Es fácil de usar y con una curva de aprendizaje relativamente rápida.
  • Es adaptable y muy extensible gracias a los miles de plugins existentes.

Prerrequisitos

Para seguir esta entrada vas a necesitar tener Docker instalado, si no lo tienes no te preocupes, en la siguiente entrada te muestro como hacerlo en Ubuntu 20.04 paso a paso.

Si ya tienes Docker instalado puedes continuar.

Video del Canal

Por si te gusta mas el formato video por aquí te lo dejo xD

¿Que imagen de jenkins utilizar?

Si nos vamos al Docker Hub veremos que tenemos multitud de tags para la imagen de jenkins/jenkins yo te recomiendo que utilices dos:

  • jenkins/jenkins:latest
  • jenkins/jenkins:alpine

La versión de alpine te ahorrara unos megas en el equipo y si estas un poco justo de disco duro te vendrá bien, en mi caso es la que voy a utilizar, no porque no tenga espacio en mi equipo, si no porque me gusta seguir las buenas practicas y usar alpine es una de ellas.

Para ver la imagen en el docker hub, buscamos jenkins/jenkins

Si vamos a la parte de tags tiene que venir la imagen de jenkins/jenkins:alpine, esa sera la que utilice por mi parte, como digo tu puedes elegir la que te apetezca pero te recomiendo que utilices la alpine.

Descargar la imagen jenkins al Docker Host

Para descargar nuestra imagen jenkins/jenkins que hayamos elegido lo haremos con el comando docker pull tal que así:

$ docker pull jenkins/jenkins:alpine

Si tu has elegido otra imagen, tendrás que descargar esa otra imagen:

$ docker pull jenkins/jenkins:<tag_elegido>

Una vez tenemos nuestra imagen en nuestro Docker host ya podemos continuar con la instalación bueno, en realidad este paso nos lo podíamos haber ahorrado ya que al hacer el docker run si no se tiene la imagen en el Docker Host se la descarga, pero esta bien hacer las cosas poco a poco para entender mejor el proceso.

Crear contenedor Jenkins en Docker con Docker CLI

Primeramente lo vamos a hacer por el comando docker run, después lo haremos con docker-compose, ahora sigamos los siguientes pasos:

Ejecutar jenkins con docker run

Lanzamos el siguiente comando:

$ docker run -d –name jenkins -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:alpine

Si tienes dudas sobre este comando que se utiliza para crear un contenedor hice un post que seguramente te pueda ayudar, de todos modos rápidamente diremos que lo que hace es crear el contenedor con nombre jenkins, exponemos los puertos 8080 y 50000 del docker host a dentro del contenedor y le configuramos un volumen para que los datos sean persistentes y no perdamos información al perder el contenedor.

Ver contenedor de jenkins en ejecución

A continuación vamos a lanzar el comando docker ps para ver si el contenedor de jenkins esta correctamente ejecutándose, en mi caso este es el ultimo contenedor que he creado por lo que lanzare el siguiente comando:

$ docker ps -l

Configurar contenedor de jenkins

Como vemos en la imagen anterior el contenedor de jenkins esta correctamente levantado, por lo que vamos a acceder a el para configurarlo:

  • Desde el navegador:

http://localhost:8080

Nos dirá que tenemos que poner la contraseña para desbloquearlo, esta contraseña se puede ver en el log de arranque del contenedor pero también se puede ver en el siguiente fichero/var/jenkins_home/secrets/initialAdminPassword.

  • Ver contraseña para desbloquear jenkins:

$ docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

  • Introducir la contraseña en el navegador web y continuar:
  • Elegir los plugins que queremos instalar, en mi caso para que el proceso se mas rápido le daré a “select plugins to install” y no instalare ninguno, no os preocupéis que se pueden ir instalando luego según vayan haciendo falta.
  • Configuramos las credenciales con las que vamos a acceder al jenkins:
  • Indicamos la URL de jenkins, si no tienes un DNS como yo pon la ip de tu maquina o localhost:
  • Para finalizar le daremos a “Start using jenkins”:

Y ya tendremos nuestro jenkins instalado, recuerda que si se borra el contenedor no se perderán datos ya que están guardados en un volumen nombrado llamado “jenkins_home”

Crear contenedor Jenkins en Docker con Docker Compose

Primeramente te hablaré por encima de lo que es Docker Compose, ya que haré una entrada especifica de esto, aunque probablemente ya lo sepas, Compose es una herramienta que nos permite desplegar aplicaciones multi-contenedor ademas de ser declarativo, lo que ayuda a tener un control de versiones de los cambios que se van haciendo y a automatizar procesos.

Instalación de Docker Compose

Antes de seguir con el post tendrás (si no lo tienes ya) que instalar la herramienta ya que docker-compose no viene con docker.

Se instala de forma muy sencilla y para ello seguiremos los siguientes comandos:

  • Descargamos el binario:
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • Le damos permisos de ejecución al binario descargado anteriormente:
$ sudo chmod +x /usr/local/bin/docker-compose
  • Comprueba la versión de docker-compose instalada:
$ docker-compose –version

Si has seguido estos pasos ya tendrás instalado docker Compose y podrás continuar con el siguiente apartado.

Creación de fichero docker-compose.yaml

Para ejecutar jenkins con docker-compose tendremos que crear un fichero docker-compose.yaml, no tiene porque tener este nombre pero por defecto Compose busca este fichero, veremos en otra entrada que esto se puede cambiar y utilizar cualquier nombre del fichero.

version: "3"
services:
  jenkins:
    container_name: jenkins_managed_by_compose
    image: jenkins/jenkins:alpine
    ports:
      - "8081:8080"
      - "50001:50000"
    volumes:
      - jenkins_home:/var/jenkins_home
    restart: always
    networks:
      - net_jenkins
volumes:
  jenkins_home:
networks:
  net_jenkins:

Una vez tienes el fichero docker-compose.yaml creado tendremos que levantar el contenedor de jenkins para volver a configurar nuevamente el contenedor, esto lo podriamos a ver solucinado poniendole el volumen que creamos con el docker run, pero prefiero hacerlo asi para que se vea que docker compose crea otro volumen que sera el nombre que pongamos en el fichero docker-compose.yaml con el prefijo del directorio donde lo ejecutemos e igual con las redes..

No me quiero explayar mucho explicando Docker Compose ya que haré una entrada especifica para ello pero rapidamente explicare:

  • container_name: nombre que se le da al contenedor.
  • image: imagen que utilizara el contenedor para levantar.
  • ports: puertos que exponemos del docker host para acceder al contenedor, nota que ahora he expuesto el 8081 y el 50001 porque el 8080 y el 50000 ya lo estaba utilizando el contenedor levantado con docker run.
  • restart: política de reinicio del contenedor, always significa que reincara cuando caiga o cuando falle o cuando arranquemos nuestro docker host.
  • volumes: asigna un volumen al contenedor, en este caso el creado en el apartado volumes del fichero y que se llamara “dir_donde_ejecutes_docker-compose_+NombreDelVolumen”.
  • networks: asigna una red al contenedor, en este caso la creada en el apartado networks del fichero y que se llamara “dir_donde_ejecutes_docker-compose_+NombreDeLaRed”.

Levantar contenedor Jenkins con Compose

Para ejecutar nuestro contenedor jenkins que hemos definido en nuestro docker-compose.yaml lanzaremos el siguiente comando, IMPORTANTE lanzarlo donde este este fichero de docker-compose.yaml si no tendremos que indicar la ruta con la opción -f

$ docker-compose up -d

Si ahora hacemos un docker ps veremos que nuestro contenedor esta levantado correctamente

Observa que hay dos, es el último que se llama “jenkins_managed_by_compose” porque así lo especificamos en el fichero.

Si comprobamos lo que te he dicho antes, que docker-compose también crea redes y volúmenes veremos que no te engañaba y que ahí están y que tienen la nomenclatura que te indicaba.

Por último vamos a comprobar que el contenedor levantado con Docker Compose funciona sin problemas:

http://localhost:8081

En mi caso por el puerto 8081 que es el que he elegido.

Ya tendremos nuestro jenkins instalado y solo faltaría configurar jenkins como hicimos en el apartado de la instalación mediante docker run.

Conclusión

En esta entrada has aprendido a instalar jenkins en docker tanto con la linea de comandos con docker como por la herramienta docker-compose.

Además has aprendido a configurar jenkins para que persista los datos en volúmenes, crear redes y volúmenes con Docker Compose.

Otra cosa que te llevas (y eso que solo entraste para ver como instalar jenkins en docker) es la instalación de docker-compose y una explicación rápida y sencilla de los componentes mas básicos de esta herramienta.

Espero que te haya ayudado, si ha sido así, te pediría que lo compartas con el mundo para ayudarme a promover el mundo DevOps.

Resumen
Como instalar JENKINS en DOCKER PASO a PASO
Nombre del artículo
Como instalar JENKINS en DOCKER PASO a PASO
Descripción
En esta entrada vas a aprender a instalar jenkins en docker, tanto por Docker CLI como por Docker Compose.
Autor

1 comentario en «Como instalar JENKINS en DOCKER PASO a PASO»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *