Installez Jenkins sur CentOS de Docker

1. Comment utiliser Jenkins avec Docker

Il existe deux méthodes possibles:

1.1. Utiliser l'image officielle

Si votre objectif est simplement d'utiliser Jenkins, c'est une bonne idée d'utiliser l'image officielle de Jenkins ci-dessous.

Image officielle de Docker Hub La version de jenkins semble être ancienne.

jenkins - Docker hub [ID de l'image] jenkins: dernier [Version] v2.60.3 (au 28 août 2020)

Jenkins / jenkins, qui a un site sur Github, semble être le dernier.

jenkinsci/docker: Docker official jenkins repo [ID de l'image] jenkins / jenkins: lts [Version] v2.235.5 (au 28 août 2020)

1.2. Installer sur l'image du système d'exploitation

Il peut également être installé avec les packages requis pour une image de système d'exploitation telle que CentOS.

centos - Docker Hub

2. Installez Jenkins sur CentOS

Cette fois, j'ai essayé d'installer Jenkins sur CentOS.

2.1. Dockerfile Normalement, lors de l'installation d'un service tel que Jenkins sur CentOS, le début et la fin du service sont gérés par systemd. Cependant, comme l'idée de base de Docker est de créer un conteneur pour chaque processus, systemd n'est pas activé dans l'image officielle de __CentOS. __

Par conséquent, j'ai créé le Dockerfile en tenant compte de la façon d'activer __systemd décrit sur le site officiel.

Systemd integration: Dockerfile for systemd base image https://hub.docker.com/_/centos?tab=description

Vous trouverez ci-dessous la partie du Dockerfile qui a été référencée par __ autre que le deuxième RUN. Le premier RUN et VOLUME semblent être le contenu principal, mais __ Jenkins a commencé __ sans cela. Cependant, si vous laissez la valeur par défaut comme indiqué ci-dessous, il est dit "pourrait causer des problèmes", il semble donc préférable de l'avoir.

This Dockerfile deletes a number of unit files which might cause issues. (Google Translate: ce Dockerfile supprime certains fichiers d'unité qui peuvent causer des problèmes.)

Dockerfile


FROM centos:7
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; \
     for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
    rm -f /lib/systemd/system/multi-user.target.wants/*; \
    rm -f /etc/systemd/system/*.wants/*; \
    rm -f /lib/systemd/system/local-fs.target.wants/*; \
    rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
    rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
    rm -f /lib/systemd/system/basic.target.wants/*; \
    rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
EXPOSE 8080
RUN yum install -y java wget initscripts && \
    cd /etc/yum.repos.d && \
    wget http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo && \
    rpm --import http://pkg.jenkins.io/redhat-stable/jenkins.io.key && \
    yum install -y jenkins && \
    systemctl enable jenkins
CMD ["/sbin/init"]

Je fais également référence aux commandes d'opération.

Commande d'opération


docker build --rm -t <Nom de l'image:marque> .
docker run -it -d --privileged --name <Nom du conteneur> -h <nom d'hôte> -p 8080:8080 <Nom de l'image:marque>

2.2. Supplément

2.2.1 Paquet initscripts

L'image CentOS n'inclut pas le package __initscripts __. Si vous ne l'ajoutez pas avec la commande yum, le processus de démarrage lui-même entraînera une erreur et ne sera pas exécuté, vous devez donc l'ajouter à l'avance.

Ce qui suit démarre d'abord le conteneur avec l'image créée sans inclure le package __initscripts __. Après cela, c'est une erreur en entrant dans le conteneur et en exécutant à nouveau les commandes «systemctl start jenkins» et «systemctl status jenkins».

bash


[root@localhost /]# systemctl start jenkins
Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.
[root@localhost /]#
[root@localhost /]# systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2020-08-27 01:31:06 UTC; 5s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 88 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=1/FAILURE)

Aug 27 01:31:06 localhost systemd[1]: Starting LSB: Jenkins Automation Server...
Aug 27 01:31:06 localhost jenkins[88]: /etc/rc.d/init.d/jenkins: line 59: /etc/init.d/functions: No such file or directory
Aug 27 01:31:06 localhost systemd[1]: jenkins.service: control process exited, code=exited status=1
Aug 27 01:31:06 localhost systemd[1]: Failed to start LSB: Jenkins Automation Server.
Aug 27 01:31:06 localhost systemd[1]: Unit jenkins.service entered failed state.
Aug 27 01:31:06 localhost systemd[1]: jenkins.service failed.
[root@localhost /]#

Aug 27 01:31:06 localhost jenkins[88]: /etc/rc.d/init.d/jenkins: line 59: /etc/init.d/functions: No such file or directory

C'est une erreur car __ /etc/init.d/functions__ n'existe pas.

bash


[root@localhost /]# ls -l /etc/init.d/functions
ls: cannot access /etc/init.d/functions: No such file or directory
[root@localhost /]#

2.2.2. Vérification du paquet contenant /etc/init.d/functions

Si vous recherchez «yum provides» pour savoir quel paquet yum contient __, vous pouvez voir qu'il s'agit du paquet initscripts. Cependant, il ne correspondait pas dans "/etc/init.d/functions", mais il correspondait dans "* /init.d/functions".

Les liens symboliques sont largement utilisés sous Linux. Veuillez noter que le nom du fichier, y compris le chemin affiché, n'est pas toujours le nom d'origine __. Si vous recherchez uniquement par fonctions, cela correspondra beaucoup, j'ai donc supprimé le répertoire petit à petit.

bash


[root@localhost /]# yum provides */init.d/functions*
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: ftp-srv2.kddilabs.jp
 * extras: ftp-srv2.kddilabs.jp
 * updates: ftp-srv2.kddilabs.jp
initscripts-9.49.49-1.el7.x86_64 : The inittab file and the /etc/init.d scripts
Repo        : base
Matched from:
Filename    : /etc/rc.d/init.d/functions

[root@localhost /]#

2.2.3. Version CentOS

Ce Dockerfile utilise CentOS: 7, mais quand je l'ai essayé avec CentOS: 8, j'ai eu une erreur. C'est peut-être parce que le moteur de conteneur par défaut de CentOS 8 est maintenant Podman au lieu de Docker (une illusion). Les détails n'ont pas été confirmés.

Recommended Posts

Installez Jenkins sur CentOS de Docker
Installez Golang sur CentOS 8
Installez Vertica 10.0 sur CentOS 6.10
Installez PostgreSQL 12 sur Centos8
Installez Python 3 sur CentOS 7
Installez kuromoji sur CentOS7
Installez PostGIS 2.5.5 sur CentOS7
Installez jpndistrict sur CentOS 7
Installez Redmine 4.1.1 sur CentOS 7
Installation de Smokeping sur CentOS7
Installez PostgreSQL 13 sur CentOS 7.5
Installez OpenFOAM v2006 sur CentOS
Installez Apache sur CentOS sur VirtualBox
Installez Ruby 2.7 sur CentOS 7 (SCL)
Installation de Java Open JDK 8 sur CentOS 7
Comment installer MariaDB 10.4 sur CentOS 8
Installez apache 2.4.46 à partir des sources sur CentOS 7
Étapes pour installer devtoolset-6 sur CentOS 7
Installez Java 9 sur Windows 10 et CentOS 7
Installez samba4 à partir du code source sur CentOS8
Installez le client de messagerie Web Rainloop sur CentOS 8
Comment installer la beta php8.0 sur CentOS8
[CentOS] Installez apache-loggen
Installez CentOS 7 sur Raspberry pi 4 modèle B
Installez NextCloud sur CentOS 7 avec Alibaba Cloud ECS
Installez la dernière version de Jenkins sur Ubuntu 16
Installez Corretto 8 sur Windows
Tutoriel Maven sur CentOS 7
Installez OpenJDK sur macOS
Installez Java sur Mac
Installation de Docker sur CentOS 6
Utiliser perltidy sur CentOS 8
Installez pyqt5 sur ubuntu
Essayez OpenLiteSpeed sur CentOS8
Tomcat v8 sur CentOS7
Installez Docker sur Manjaro
Installation de Zabbix 5 sur CentOS 8
Installez Ruby sur Ubuntu 20.04
Utilisez mod_auth_cas sur CentOS 8
Installez lombok sur SpringToolSuite4
Jetty v8 sur CentOS7
Installation d'OpenJDK sur CentOS7
Installez openjdk11 sur Mac
Installez OpenJDK 8 sur mac
Installer le wiki de documentation BookStack sur Elastic Compute Service sur CentOS 7
Installez le dernier pilote matériel d'ELRepo sur CentOS
Installez MySQL 5.6 sur CentOS6 [Comment spécifier la version]
Installez ag (le chercheur d'argent) [sur CentOS / Ubuntu / Mac]
Essayez Rabbit MQ + PHP sur CentOS
Installez Docker sur Raspberry Pi
Installez Docker sur Windows 10 PRO
Réseau installer CentOS 8 avec Kickstart.