Installieren Sie Jenkins auf Dockers CentOS

1. Verwendung von Jenkins mit Docker

Es gibt zwei mögliche Methoden:

1.1. Verwenden Sie das offizielle Bild

Wenn Sie lediglich Jenkins verwenden möchten, ist es eine gute Idee, das offizielle Jenkins-Bild unten zu verwenden.

Offizielles Bild von Docker Hub Die Version von Jenkins scheint alt zu sein.

jenkins - Docker hub [Image ID] Jenkins: Neueste [Version] v2.60.3 (Stand 28. August 2020)

Jenkins / Jenkins, der eine Site auf Github hat, scheint die neueste zu sein.

jenkinsci/docker: Docker official jenkins repo [Bild-ID] Jenkins / Jenkins: lts [Version] v2.235.5 (Stand 28. August 2020)

1.2. Auf Betriebssystem-Image installieren

Es kann auch mit den Paketen installiert werden, die für ein Betriebssystem-Image wie CentOS erforderlich sind.

centos - Docker Hub

2. Installieren Sie Jenkins unter CentOS

Dieses Mal habe ich versucht, Jenkins unter CentOS zu installieren.

2.1. Dockerfile Normalerweise wird bei der Installation eines Dienstes wie Jenkins unter CentOS der Start und das Ende des Dienstes von systemd verwaltet. Da Docker jedoch die Grundidee hat, für jeden Prozess einen Container zu erstellen, ist systemd im offiziellen Image von __CentOS nicht aktiviert. __ __

Aus diesem Grund habe ich die Docker-Datei erstellt, um __systemd zu aktivieren, das auf der offiziellen Website beschrieben ist.

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

Unten ist der Teil der Docker-Datei aufgeführt, auf den __ mit Ausnahme des zweiten RUN verwiesen hat. Der erste RUN und VOLUME scheinen der Hauptinhalt zu sein, aber __ Jenkins startete __ ohne ihn. Wenn Sie jedoch die Standardeinstellung wie unten gezeigt beibehalten, heißt es "könnte Probleme verursachen", daher scheint es besser, sie zu haben.

This Dockerfile deletes a number of unit files which might cause issues. (Google Translate: Diese Docker-Datei entfernt einige Einheitendateien, die Probleme verursachen können.)

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"]

Ich beziehe mich auch auf die Operationsbefehle.

Betriebsbefehl


docker build --rm -t <Bildname:Etikett> .
docker run -it -d --privileged --name <Containername> -h <Hostname> -p 8080:8080 <Bildname:Etikett>

2.2 Ergänzung

2.2.1. Initscripts-Paket

Das CentOS-Image enthält nicht das __initscripts-Paket __. Wenn Sie es nicht mit dem Befehl yum hinzufügen, führt der Startvorgang selbst zu einem Fehler und wird nicht ausgeführt. Sie müssen ihn daher im Voraus hinzufügen.

Im Folgenden wird der Container zunächst mit dem Image gestartet, das ohne das __initscripts-Paket __ erstellt wurde. Danach tritt ein Fehler auf, wenn der Container eingegeben und die Befehle "systemctl start jenkins" und "systemctl status jenkins" erneut ausgeführt werden.

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

Dies ist ein Fehler, da __ /etc/init.d/functions__ nicht vorhanden ist.

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. Überprüfen des Pakets, das /etc/init.d/functions enthält

Wenn Sie nach "yum liefert" suchen, um herauszufinden, welches yum-Paket __ enthält, können Sie sehen, dass es sich um das initscripts -Paket handelt. Es stimmte jedoch nicht mit "/etc/init.d/functions" überein, sondern mit "* /init.d/functions".

Symbolische Links werden unter Linux häufig verwendet. Bitte beachten Sie, dass der Dateiname einschließlich des angezeigten Pfads nicht immer der ursprüngliche Name __ ist. Wenn Sie nur nach Funktionen suchen, stimmt dies sehr gut überein, daher habe ich das Verzeichnis nach und nach gelöscht.

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 CentOS-Version

Diese Docker-Datei verwendet "CentOS: 7", aber als ich es mit "CentOS: 8" versuchte, bekam ich eine Fehlermeldung. Vielleicht liegt es daran, dass die Standard-Container-Engine von CentOS 8 jetzt "Podman" anstelle von Docker ist (eine Täuschung). Details wurden nicht bestätigt.

Recommended Posts

Installieren Sie Jenkins auf Dockers CentOS
Installieren Sie Golang unter CentOS 8
Installieren Sie Vertica 10.0 unter CentOS 6.10
Installieren Sie PostgreSQL 12 auf Centos8
Installieren Sie Python 3 unter CentOS 7
Installieren Sie kuromoji unter CentOS7
Installieren Sie PostGIS 2.5.5 unter CentOS7
Installieren Sie jpndistrict unter CentOS 7
Installieren Sie Redmine 4.1.1 unter CentOS 7
Smokeping Installation unter CentOS7
Installieren Sie PostgreSQL 13 unter CentOS 7.5
Installieren Sie OpenFOAM v2006 unter CentOS
Installieren Sie Apache unter CentOS auf VirtualBox
Installieren Sie Ruby 2.7 unter CentOS 7 (SCL)
Java Open JDK 8 unter CentOS 7 installieren
So installieren Sie MariaDB 10.4 unter CentOS 8
Installieren Sie Apache 2.4.46 von der Quelle unter CentOS 7
Schritte zum Installieren von devtoolset-6 unter CentOS 7
Installieren Sie Java 9 unter Windows 10 und CentOS 7
Installieren Sie samba4 aus dem Quellcode unter CentOS8
Installieren Sie den Webmail-Client Rainloop unter CentOS 8
So installieren Sie Beta PHP8.0 unter CentOS8
[CentOS] Installieren Sie Apache-Loggen
Installieren Sie CentOS 7 auf Raspberry pi 4 Model B.
Installieren Sie NextCloud unter CentOS 7 mit Alibaba Cloud ECS
Installieren Sie die neueste Version von Jenkins unter Ubuntu 16
Installieren Sie Corretto 8 unter Windows
Maven auf CentOS 7 Tutorial
Installieren Sie OpenJDK unter macOS
Installieren Sie Java auf dem Mac
Docker-Installation unter CentOS 6
Verwenden Sie perltidy unter CentOS 8
Installieren Sie pyqt5 auf Ubuntu
Probieren Sie OpenLiteSpeed unter CentOS8 aus
Tomcat v8 unter CentOS7
Installieren Sie Docker auf Manjaro
Installation von Zabbix 5 unter CentOS 8
Installieren Sie Ruby unter Ubuntu 20.04
Verwenden Sie mod_auth_cas unter CentOS 8
Installieren Sie lombok auf SpringToolSuite4
Anlegestelle v8 auf CentOS7
OpenJDK-Installation unter CentOS7
Installieren Sie openjdk11 auf einem Mac
Installieren Sie OpenJDK 8 auf einem Mac
Installieren Sie das BookStack-Dokumentations-Wiki im Elastic Compute Service unter CentOS 7
Installieren Sie den neuesten Hardwaretreiber von EL Repo unter CentOS
Installieren Sie MySQL 5.6 unter CentOS6 [So geben Sie die Version an]
Installiere ag (den silbernen Sucher) [unter CentOS / Ubuntu / Mac]
Probieren Sie Rabbit MQ + PHP unter CentOS aus
Installieren Sie Docker auf Raspberry Pi
Installieren Sie Docker unter Windows 10 PRO
Netzwerkinstallation CentOS 8 mit Kickstart.