GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So führen Sie Jenkins Container als Systemd-Dienst mit Docker aus

Sich wiederholende Aufgaben sind in der Regel mühsam und verbrauchen am Ende viel Zeit und Energie. Im Laufe der Zeit wurden mehrere Automatisierungstools entwickelt, um den Aufwand für die Ausführung sich wiederholender Aufgaben zu verringern. Ein solches Automatisierungstool ist Jenkins. Jenkins ist ein Open-Source-Automatisierungsserver, der entwickelt wurde, um Softwareentwicklern beim Erstellen, Testen und Bereitstellen von Anwendungen zu helfen und dadurch den kontinuierlichen Integrations- und Bereitstellungsprozess zu rationalisieren.

Wir haben bereits einen Artikel darüber geschrieben, wie man Jenkins unter CentOS 8/RHEL 8 installiert. In diesem Artikel werden wir die Dinge ein wenig anders machen und den Jenkins-Container als systemd-Dienst mit Docker ausführen.

Voraussetzungen

Ein paar Dinge sind erforderlich, bevor Sie fortfahren.

  • Docker auf Ihrem Linux-System installiert.
  • Ein normaler Benutzer mit sudo-Berechtigungen.

Schritt 1) ​​Docker-Engine installieren

Zunächst muss die Docker-Engine auf Ihrem System installiert sein. Wir haben einen ausführlichen Artikel zur Installation von Docker auf CentOS 8 / RHEL 8. Führen Sie den folgenden Docker-Befehl aus, um die Docker-Version anzuzeigen

$ sudo docker version

Aus dem obigen Snippet haben wir bestätigt, dass Docker installiert ist und dass wir die Docker-Version 19.03.13 ausführen.

Schritt 2) Erstellen Sie einen Jenkins-Benutzer

Als Nächstes erstellen wir einen „Jenkins“-Systembenutzer, der den Jenkins-Dienst verwaltet. Aber erstellen Sie zuerst eine Systemgruppe für Jenkins:

$ sudo groupadd --system jenkins

Erstellen Sie dann den Jenkins-Systembenutzer

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

Fügen Sie schließlich den Jenkins-Benutzer wie gezeigt zur Docker-Gruppe hinzu:

$ sudo usermod -aG docker jenkins

Um zu bestätigen, dass der Jenkins-Benutzer zur Docker-Gruppe hinzugefügt wurde, führen Sie den id-Befehl wie gezeigt aus

$ id jenkins

Ausgabe ist,

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

Fantastisch! Fahren wir fort und ziehen ein Jenkins-Image.

Schritt 3)  Jenkins-Image vom Docker-Hub abrufen

Rufen Sie den folgenden Befehl auf, um das neueste Jenkins-Image vom Docker-Hub abzurufen.

$ sudo docker pull jenkins/jenkins:lts

Dies dauert normalerweise einige Sekunden bei einer ziemlich stabilen Internetverbindung. Überprüfen Sie nach dem Herunterladen, ob das Jenkins-Image vorhanden ist, indem Sie den folgenden Befehl aufrufen:

$ sudo docker images | grep jenkins

Die Ausgabe des obigen Befehls wäre:

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

Jenkins benötigt einen dauerhaften Speicher, um Daten zu speichern und auch im Falle eines Containerabsturzes wiederzuverwenden. Daher erstellen wir wie gezeigt ein Speicherverzeichnis.

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

Schritt 4) Erstellen Sie einen systemd-Dienst für Jenkins

Erstellen Sie mit Ihrem bevorzugten Texteditor eine Jenkins-Systemd-Datei wie gezeigt:

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

Fügen Sie den folgenden Inhalt ein und speichern Sie die Datei.

[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

Um den Jenkins-Dienst zu starten, laden Sie zuerst systemd neu und starten Sie danach Jenkins.

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

Lassen Sie uns nun überprüfen, ob Jenkins ausgeführt wird. Dazu führen wir Folgendes aus:

$ sudo systemctl status jenkins-docker

Toll ! Jenkins läuft als systemd-Dienst. Da Jenkins auf Port 8080 ausgeführt wird, öffnen Sie den Port auf der Firewall wie gezeigt:

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

Um Jenkins einzurichten, durchsuchen Sie einfach die URL des Servers wie gezeigt

http://server-ip:8080

Sie erhalten die Seite „Unlock Jenkins“ wie gezeigt. Um fortzufahren, müssen Sie das Passwort angeben, das sich in der angezeigten Datei befindet

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

Wenn Sie fertig sind, klicken Sie auf „Weiter“

Wählen Sie als Nächstes die Option „Vorgeschlagene Plugins installieren“ wie gezeigt aus.

Erstellen Sie danach einen administrativen Benutzer für das Jenkins-Konto und klicken Sie auf „Speichern und fortfahren“

Der Installer führt Sie bis zum Schluss durch die restlichen Schritte. Nach erfolgreicher Installation erhalten wir das folgende Jenkins-Dashboard

Und es ist eine Hülle. In dieser Anleitung haben Sie gelernt, wie Sie Jenkins in einem Docker-Container als Systemdienst ausführen.

Auch lesenSo installieren und konfigurieren Sie Jenkins unter Ubuntu 20.04


Docker
  1. So installieren Sie WordPress mit Docker auf Ubuntu

  2. So installieren Sie Jenkins mit Docker

  3. Wie führe ich ein Programm in einem Docker-Container aus?

  4. So führen Sie einen Befehl in einem laufenden Docker-Container aus

  5. Wie führe ich ein Skript mit systemd kurz vor dem Herunterfahren aus?

Ausführen von Almalinux oder Rocky Linux 8 Docker-Container mit Systemd (systemctl)

So führen Sie PHPMyAdmin in einem Docker-Container aus

So führen Sie Grafana in einem Docker-Container aus

So kopieren Sie Dateien mit Docker cp in Ihren Docker-Container

So führen Sie Jenkins in Docker mit Docker Compose with Volumes aus

So führen Sie Docker-Container aus