GNU/Linux >> Tutoriales Linux >  >> Panels >> 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, agilizar 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 normal con privilegios de sudo.

Paso 1) Instalar 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

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

Paso 2) Crear 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 cree el usuario del sistema Jenkins

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

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

$ sudo usermod -aG docker jenkins

Para confirmar que el usuario de Jenkins se agregó al grupo 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 centro de Docker

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

$ sudo docker pull jenkins/jenkins:lts

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) Cree 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 el siguiente contenido 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

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 navegue por 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'

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

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

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

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

Leer tambiénCómo instalar y configurar Jenkins en Ubuntu 20.04


Docker
  1. Cómo instalar WordPress con Docker en Ubuntu

  2. Cómo instalar Jenkins con Docker

  3. ¿Cómo ejecutar un programa dentro de un contenedor Docker?

  4. Cómo implementar un contenedor nginx con Docker en Linode

  5. Cómo ejecutar MySQL en un contenedor Docker

Ejecute el contenedor Docker de Almalinux o Rocky Linux 8 con Systemd (systemctl)

Cómo ejecutar PHPMyAdmin en un contenedor Docker

Cómo ejecutar Grafana en un contenedor Docker

Cómo copiar archivos con Docker cp a su Docker Container

Cómo ejecutar Jenkins en Docker usando Docker Compose con Volúmenes

Cómo ejecutar contenedores Docker