GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment exécuter Jenkins Container en tant que service Systemd avec Docker

Les tâches répétitives sont généralement fastidieuses et finissent par prendre beaucoup de temps et d'énergie. Au fil du temps, plusieurs outils d'automatisation ont été développés pour aider à réduire les tracas liés à l'exécution de tâches répétitives. L'un de ces outils d'automatisation est Jenkins. Jenkins est un serveur d'automatisation open source conçu pour aider les développeurs de logiciels à créer, tester et déployer des applications et ainsi rationaliser le processus d'intégration et de livraison continues.

Nous avons déjà écrit un article sur la façon d'installer Jenkins sur CentOS 8/RHEL 8. Dans cet article, nous allons faire les choses un peu différemment et exécuter le conteneur Jenkins en tant que service systemd avec docker.

Prérequis

Quelques éléments sont requis avant de continuer.

  • Docker installé sur votre système Linux.
  • Un utilisateur régulier avec des privilèges sudo.

Étape 1) Installer le moteur Docker

Pour commencer, vous devez avoir installé le moteur Docker sur votre système. Nous avons un article détaillé sur l'installation de Docker sur CentOS 8 / RHEL 8. Exécutez la commande docker ci-dessous pour afficher la version de docker

$ sudo docker version

À partir de l'extrait ci-dessus, nous avons confirmé que docker est installé et que nous exécutons la version 19.03.13 de docker.

Étape 2) Créer un utilisateur Jenkins

Ensuite, nous allons créer un utilisateur système "Jenkins" qui gérera le service Jenkins. Mais d'abord, créez un groupe système pour Jenkins :

$ sudo groupadd --system jenkins

Créez ensuite un utilisateur système Jenkins

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

Et enfin, ajoutez l'utilisateur Jenkins au groupe docker comme indiqué :

$ sudo usermod -aG docker jenkins

Pour confirmer que l'utilisateur Jenkins est ajouté au groupe docker, exécutez la commande id comme indiqué

$ id jenkins

La sortie sera,

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

Fantastique! Continuons et extrayons une image Jenkins.

Étape 3) Extraire l'image Jenkins du hub Docker

Appelez la commande suivante pour extraire la dernière image Jenkins du hub Docker.

$ sudo docker pull jenkins/jenkins:lts

Cela prend généralement quelques secondes sur une connexion Internet assez stable. Une fois téléchargé, vérifiez que l'image Jenkins est présente en invoquant la commande suivante :

$ sudo docker images | grep jenkins

La sortie de la commande ci-dessus serait :

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

Jenkins nécessite un stockage persistant pour stocker les données et les réutiliser même en cas de crash du conteneur. Par conséquent, nous allons créer un répertoire de stockage comme indiqué.

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

Étape 4) Créer un service systemd pour Jenkins

À l'aide de votre éditeur de texte préféré, créez un fichier systemd Jenkins comme indiqué :

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

Collez le contenu suivant et enregistrez le fichier.

[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

Pour démarrer le service Jenkins, rechargez d'abord systemd, puis démarrez Jenkins.

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

Vérifions maintenant si Jenkins est en cours d'exécution. Pour ce faire, nous allons exécuter :

$ sudo systemctl status jenkins-docker

Génial ! Jenkins est opérationnel en tant que service systemd. Étant donné que Jenkins s'exécutera sur le port 8080, ouvrez le port sur le pare-feu comme indiqué :

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

Pour configurer Jenkins, parcourez simplement l'URL du serveur comme indiqué

http://ip-serveur:8080

Vous obtiendrez la page "Déverrouiller Jenkins" comme indiqué. Pour continuer, vous devez fournir le mot de passe qui se trouve dans le fichier affiché

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

Une fois terminé, cliquez sur ‘Continuer’

Ensuite, sélectionnez l'option "Installer les plugins suggérés" comme indiqué.

Ensuite, créez un utilisateur administratif pour le compte Jenkins et cliquez sur "Enregistrer et continuer"

L'installateur vous guidera à travers les étapes restantes jusqu'à la toute fin. Après une installation réussie, nous obtiendrons le tableau de bord Jenkins suivant

Et c'est un enveloppement. Dans ce guide, vous avez appris à exécuter Jenkins dans un conteneur Docker en tant que service systemd.

Lire aussi  : Comment installer et configurer Jenkins sur Ubuntu 20.04


Docker
  1. Comment installer Jenkins avec Docker

  2. Comment exécuter un programme dans un conteneur Docker ?

  3. Comment déployer un conteneur nginx avec Docker sur Linode

  4. Comment exécuter une commande sur un conteneur Docker en cours d'exécution

  5. Comment exécuter un script avec systemd juste avant l'arrêt ?

Exécutez le conteneur Almalinux ou Rocky Linux 8 Docker avec Systemd (systemctl)

Comment exécuter PHPMyAdmin dans un conteneur Docker

Comment exécuter Grafana dans un conteneur Docker

Comment copier des fichiers avec Docker cp dans votre conteneur Docker

Comment exécuter Jenkins dans Docker à l'aide de Docker Compose avec des volumes

Comment exécuter des conteneurs Docker