Jenkins Container docker

Cómo ejecutar Jenkins Container como servicio Systemd con Docker

Las tareas repetitivas suelen ser tediosas y acaban consumiendo mucho tiempo y energía. Con el tiempo, se han desarrollado múltiples herramientas de automatización para ayudar a aliviar la molestia de ejecutar trabajos repetitivos. Una de esas herramientas de automatización es Jenkins. Jenkins es un servidor de automatización de código abierto que está diseñado para ayudar a los desarrolladores de software a crear, probar e implementar aplicaciones y, por lo tanto, optimizar el proceso continuo de integración y entrega.

Hemos escrito un artículo anteriormente sobre cómo instalar Jenkins en CentOS 8/RHEL 8. En este artículo, haremos las cosas un poco diferentes y ejecutaremos el contenedor de Jenkins como servicio systemd con docker.

requisitos previos

Se requieren algunas cosas antes de continuar.

  • Docker instalado en su sistema Linux.
  • Un usuario regular con privilegios de sudo.

Paso 1) Instale el motor Docker

Para comenzar, debe tener instalado el motor Docker en su sistema. Tenemos un artículo detallado sobre cómo instalar Docker en CentOS 8 / RHEL 8. Ejecute el siguiente comando de docker para mostrar la versión de docker

$ sudo docker version

Docker-Version-Check-CentOS8

Del fragmento anterior, hemos confirmado que docker está instalado y que estamos ejecutando la versión 19.03.13 de docker.

Paso 2) Crea un usuario de Jenkins

A continuación, crearemos un usuario del sistema ‘Jenkins’ que administrará el servicio de Jenkins. Pero primero, cree un grupo de sistema para Jenkins:

$ sudo groupadd --system jenkins

Luego crea el usuario del sistema Jenkins

$ sudo useradd -s /sbin/nologin --system -g jenkins jenkins

Y finalmente, agregue el usuario de Jenkins al grupo docker como se muestra:

$ sudo usermod -aG docker jenkins

Para confirmar que el usuario de Jenkins se agregó al grupo de Docker, ejecute el comando id como se muestra

$ id jenkins

La salida será,

[[email protected] ~]$ id jenkins
uid=991(jenkins) gid=986(jenkins) groups=986(jenkins),989(docker)
[[email protected] ~]$

¡Fantástico! Procedamos y extraigamos una imagen de Jenkins.

Paso 3) Extraiga la imagen de Jenkins del concentrador Docker

Invoque el siguiente comando para extraer la imagen de Jenkins más reciente de Docker Hub.

$ sudo docker pull jenkins/jenkins:lts

Descargar-Jenkins-Docker-Imagen-CentOS8

Esto suele tardar unos segundos en una conexión a Internet bastante estable. Una vez descargada, verifique que la imagen de Jenkins esté presente invocando el siguiente comando:

$ sudo docker images | grep jenkins

La salida del comando anterior sería:

[[email protected] ~]$ sudo docker images | grep jenkins
jenkins/jenkins     lts                 f669140ba6ec        6 days ago          711MB
[[email protected] ~]$

Jenkins requiere un almacenamiento persistente para almacenar datos y reutilizarlos incluso en caso de que se bloquee el contenedor. Por lo tanto, crearemos un directorio de almacenamiento como se muestra.

$ sudo mkdir /var/jenkins
$ sudo chown -R 1000:1000 /var/jenkins

Paso 4) Crea un servicio systemd para Jenkins

Usando su editor de texto preferido, cree un archivo systemd de Jenkins como se muestra:

$ sudo vi /etc/systemd/system/jenkins-docker.service

Pegue los siguientes contenidos y guarde el archivo.

[Unit]
Description=Jenkins Server
Documentation=https://jenkins.io/doc/
After=docker.service
Requires=docker.service

[Service]
Type=simple
User=jenkins
Group=jenkins
TimeoutStartSec=0
Restart=on-failure
RestartSec=30s
ExecStartPre=-/usr/bin/docker kill jenkins-server
ExecStartPre=-/usr/bin/docker rm jenkins-server
ExecStartPre=/usr/bin/docker pull jenkins/jenkins:lts
ExecStart=/usr/bin/docker run  --name jenkins-server  --publish 8080:8080 --publish 50000:50000  --volume /var/jenkins:/var/jenkins_home  jenkins/jenkins:lts
SyslogIdentifier=jenkins
ExecStop=/usr/bin/docker stop jenkins-server

[Install]
WantedBy=multi-user.target

Para iniciar el servicio de Jenkins, vuelva a cargar systemd primero y luego inicie Jenkins.

$ sudo systemctl daemon-reload
$ sudo systemctl start jenkins-docker

Ahora verifiquemos si Jenkins se está ejecutando. Para ello ejecutaremos:

$ sudo systemctl status jenkins-docker

Jenkins-Servicio-Estado-CentOS8

Estupendo ! Jenkins está funcionando como un servicio systemd. Dado que Jenkins se ejecutará en el puerto 8080, abra el puerto en el firewall como se muestra:

$ sudo firewall-cmd --permanent --add-port=8080/tcp
$ sudo firewall-cmd --reload

Para configurar Jenkins, simplemente explore la URL del servidor como se muestra

http://ip-del-servidor:8080

Obtendrá la página ‘Desbloquear Jenkins’ como se muestra. Para continuar, debe proporcionar la contraseña que se encuentra en el archivo que se muestra

[[email protected] ~]$ cat /var/jenkins/secrets/initialAdminPassword
9c61bd823a404056bf0a408f4622aafc
[[email protected] ~]$

Una vez hecho esto, haga clic en ‘Continuar’

Ingrese-Jenkins-Admin-Password-CentOS8

A continuación, seleccione la opción ‘Instalar complementos sugeridos’ como se muestra.

Elegir-Instalar-complementos-sugeridos-Jenkins-docker

A partir de entonces, cree un usuario administrativo para la cuenta de Jenkins y haga clic en «Guardar y continuar».

Configuración-Asistente-Jenkins-Cuenta

El instalador lo guiará a través de los pasos restantes hasta el final. Después de una instalación exitosa, obtendremos el siguiente panel de Jenkins

Tablero-Jenkins-Docker-Container-CentOS8

Y es una envoltura. En esta guía, aprendió a ejecutar Jenkins dentro de un contenedor docker como un servicio systemd.

Leer también: Cómo instalar y configurar Jenkins en Ubuntu 20.04

Entradas relacionadas

Deja una respuesta

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