Einführung
In diesem Lab werden wir den Prozess der Installation von Jenkins mithilfe von Docker untersuchen. Jenkins ist ein weit verbreiteter Automatisierungsserver für kontinuierliche Integration und kontinuierliche Bereitstellung (Continuous Integration/Continuous Delivery, CI/CD). Am Ende dieses Labs haben Sie praktische Erfahrungen in der Einrichtung von Jenkins mit Docker gesammelt, was Ihnen eine solide Grundlage für zukünftige DevOps-Projekte bietet.
Für Anfänger ist es wichtig zu verstehen, dass Docker eine Plattform ist, die es Ihnen ermöglicht, Anwendungen in isolierten Umgebungen, sogenannten Containern, zu verpacken und auszuführen. Diese Isolation stellt sicher, dass Ihre Anwendung auf verschiedenen Systemen konsistent funktioniert. Jenkins hingegen ist ein Tool, das bei der Automatisierung von Teilen der Softwareentwicklung hilft, insbesondere beim Bauen, Testen und Bereitstellen von Code.
Wenn Sie neu in Linux oder LabEx sind, wird empfohlen, mit dem Quick Start with Linux oder Practice Linux Commands zu beginnen, um die Grundlagen systematisch zu lernen. Nach Abschluss des Kurses können Sie hierher zurückkehren, um Ihre Fähigkeiten zu üben.
Vorbereitung der Docker-Umgebung
In diesem Schritt stellen wir sicher, dass Docker korrekt auf unserem System installiert und läuft. Docker ist für dieses Lab unerlässlich, da es uns ermöglicht, Jenkins in einem Container auszuführen und so eine konsistente und isolierte Umgebung bereitzustellen.
Zunächst überprüfen wir, ob Docker installiert und läuft. Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus:
docker --version

Dieser Befehl sollte die auf Ihrem System installierte Docker-Version anzeigen. Sie sollten eine Ausgabe ähnlich der folgenden sehen:
Docker version 20.10.21, build 20.10.21-0ubuntu1~22.04.3
Wenn Sie keine Versionsnummer sehen, bedeutet dies möglicherweise, dass Docker nicht installiert ist oder nicht im Pfad (PATH) Ihres Systems enthalten ist. Sollte dies der Fall sein, keine Sorge; wir werden das bald beheben.
Als Nächstes überprüfen wir, ob der Docker-Daemon läuft:
sudo systemctl status docker
Dieser Befehl überprüft den Status des Docker-Dienstes. Sie sollten eine Ausgabe sehen, die anzeigt, dass der Docker-Dienst aktiv (läuft) ist. Es könnte so aussehen:
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-09-11 10:00:00 UTC; 2h 30min ago
Wenn Docker nicht läuft, sehen Sie eine Meldung, die anzeigt, dass der Dienst inaktiv oder fehlgeschlagen ist.
Herunterladen des Jenkins Docker-Images
In diesem Schritt werden wir das offizielle Jenkins Docker-Image von Docker Hub herunterladen. Docker Hub ist ein cloudbasierter Repository-Service, in dem Docker-Images gespeichert und geteilt werden.
Um die neueste LTS (Long Term Support, Langzeitunterstützung)-Version von Jenkins herunterzuladen, führen Sie den folgenden Befehl aus:
docker pull jenkins/jenkins:lts
Lassen Sie uns diesen Befehl analysieren:
docker pullteilt Docker mit, ein Image herunterzuladen.jenkins/jenkinsist der Name des Images (erstellt vom Jenkins-Projekt).:ltsist ein Tag, das angibt, dass wir die Langzeitunterstützungsversion möchten, die im Allgemeinen stabiler ist.
Dieser Befehl lädt das Jenkins-Image auf Ihren lokalen Rechner herunter. Der Download kann je nach Ihrer Internetgeschwindigkeit einige Minuten dauern. Sie werden Fortschrittsbalken sehen, die den Downloadstatus der verschiedenen Schichten anzeigen, aus denen das Image besteht.
Nachdem der Download abgeschlossen ist, können Sie überprüfen, ob das Image jetzt lokal verfügbar ist, indem Sie folgenden Befehl ausführen:
docker images
Dieser Befehl listet alle Docker-Images auf Ihrem System auf. Sie sollten das Jenkins-Image in der Ausgabe sehen, ähnlich wie hier:
REPOSITORY TAG IMAGE ID CREATED SIZE
jenkins/jenkins lts 7a7add0bf3da 8 days ago 470MB
Wenn Sie das Jenkins-Image nicht sehen, könnte dies bedeuten, dass der Download fehlgeschlagen ist. In diesem Fall versuchen Sie, den docker pull-Befehl erneut auszuführen. Wenn das Problem weiterhin besteht, überprüfen Sie Ihre Internetverbindung oder versuchen Sie, ein anderes Netzwerk zu verwenden.
Erstellen eines Docker-Volumes für Jenkins-Daten
In diesem Schritt werden wir ein Docker-Volume erstellen, um die Jenkins-Daten dauerhaft zu speichern. Dies ist ein entscheidender Schritt für die Aufrechterhaltung Ihrer Jenkins-Konfiguration und des Build-Verlaufs.
Docker-Volumes bieten eine Möglichkeit, die von Docker-Containern generierten und verwendeten Daten dauerhaft zu speichern. Dies ist besonders wichtig für Jenkins, da wir die Konfiguration, die Auftragsdaten und die Build-Artefakte beibehalten möchten, auch wenn der Container gestoppt oder entfernt wird.
Erstellen Sie ein neues Volume namens jenkins-data, indem Sie folgenden Befehl ausführen:
docker volume create jenkins-data
Dieser Befehl teilt Docker mit, ein neues Volume zu erstellen. Docker verwaltet diese Volumes und speichert sie in einem Teil des Dateisystems Ihres Hosts.
Sie können überprüfen, ob das Volume erstellt wurde, indem Sie alle Docker-Volumes auflisten:
docker volume ls
Sie sollten jenkins-data in der Liste der Volumes sehen, wie hier:
DRIVER VOLUME NAME
local jenkins-data
Wenn Sie das Volume nicht sehen, versuchen Sie, es erneut zu erstellen. Wenn das Problem weiterhin besteht, stellen Sie sicher, dass Sie die erforderlichen Berechtigungen haben, um Docker-Volumes zu erstellen (Sie müssen möglicherweise sudo verwenden, wenn Ihr Benutzer nicht in der Docker-Gruppe ist).
Das Verständnis von Docker-Volumes ist wichtig, weil:
- Sie es ermöglichen, dass Daten über den Lebenszyklus eines Containers hinaus bestehen bleiben.
- Sie einfach gesichert und wiederhergestellt werden können.
- Sie bei Bedarf zwischen Containern geteilt werden können.
Starten des Jenkins Docker-Containers
Jetzt, da wir das Jenkins-Image und ein Volume für die dauerhafte Datenspeicherung haben, können wir den Jenkins-Container starten. Dieser Schritt startet tatsächlich Jenkins in einem Docker-Container und macht es auf Ihrem System zugänglich.
Wir werden den Container mit den folgenden Konfigurationen starten:
- Ordnen Sie den Container-Port 8080 dem Host-Port 8080 zu (für die Web-Oberfläche).
- Ordnen Sie den Container-Port 50000 dem Host-Port 50000 zu (für Agent-Verbindungen).
- Binden Sie das
jenkins-data-Volume an/var/jenkins_homeim Container. - Starten Sie den Container im detached-Modus.
Führen Sie den folgenden Befehl aus, um den Jenkins-Container zu starten:
docker run -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home --name jenkins-lts jenkins/jenkins:lts
Lassen Sie uns diesen Befehl analysieren:
docker runerstellt und startet einen neuen Container.-dstartet den Container im detached-Modus (im Hintergrund).-p 8080:8080ordnet den Port 8080 im Container dem Port 8080 auf Ihrem Host zu.-p 50000:50000ordnet den Port 50000 im Container dem Port 50000 auf Ihrem Host zu.-v jenkins-data:/var/jenkins_homebindet unser Docker-Volume an das Jenkins-Home-Verzeichnis im Container.--name jenkins-ltsgibt unserem Container einen Namen für einfache Referenz.jenkins/jenkins:ltsgibt das zu verwendende Image an.
Nachdem Sie diesen Befehl ausgeführt haben, wird Docker den Jenkins-Container im Hintergrund starten. Sie können überprüfen, ob der Container läuft, indem Sie folgenden Befehl ausführen:
docker ps
Dieser Befehl listet alle laufenden Docker-Container auf. Sie sollten den Jenkins-Container in der Ausgabe sehen, ähnlich wie hier:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
747b6dc7b1af jenkins/jenkins:lts "/usr/bin/tini -- /u…" 4 seconds ago Up 3 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp jenkins-lts
Wenn Sie den Jenkins-Container nicht sehen, ist es möglich, dass er nicht gestartet werden konnte. Sie können nach Fehlermeldungen suchen, indem Sie folgenden Befehl ausführen:
docker logs jenkins-lts
Dies zeigt die Logs aus dem Container an, die helfen können, eventuelle Probleme zu diagnostizieren.
Zugriff auf die Jenkins-Weboberfläche
Nachdem der Jenkins-Container nun läuft, können wir auf seine Weboberfläche zugreifen, um die Ersteinrichtung abzuschließen. Dieser Schritt führt Sie durch den Zugriff auf Jenkins und die Durchführung der Erstkonfiguration.
Es gibt zwei Möglichkeiten, auf die Jenkins-Weboberfläche zuzugreifen:
Klicken Sie auf das
+-Symbol in der oberen Registerkarte der virtuellen Umgebung, um einen neuenWeb Servicezu erstellen, und geben Sie den Port8080ein.
Diese Methode funktioniert innerhalb der Laborumgebung und erstellt eine neue Registerkarte, die die Jenkins-Oberfläche anzeigt.
Öffnen Sie den Firefox-Browser auf dem VNC-Desktop. Der Browser öffnet sich automatisch unter
http://localhost:8080, sodass Sie die URL nicht manuell eingeben müssen.
Sie sollten die Jenkins-Seite „Unlock Jenkins“ sehen. Diese Sicherheitsmaßnahme stellt sicher, dass nur autorisierte Benutzer Jenkins einrichten können.
Für diese Laborumgebung lautet der Standardbenutzername admin und das Passwort lautet ebenfalls admin.
Geben Sie diese Anmeldeinformationen auf der Seite „Unlock Jenkins“ ein und klicken Sie auf „Continue“.

Nach dem Entsperren von Jenkins werden Sie durch den Einrichtungsprozess geführt, einschließlich der Installation von Plugins und der Erstellung eines Administratorbenutzers. Für dieses Labor können Sie die Option „Install suggested plugins“ wählen, um schnell zu starten.
Zusammenfassung
In diesem Lab haben wir erfolgreich Jenkins mithilfe von Docker installiert und eingerichtet. Wir haben die wesentlichen Schritte behandelt, darunter die Vorbereitung der Docker-Umgebung, das Herunterladen des Jenkins-Images, das Erstellen eines persistenten Volumes für die Jenkins-Daten, das Starten des Jenkins-Containers und der Zugang zur Jenkins-Weboberfläche für die erste Einrichtung.
Diese praktische Erfahrung hat Ihnen eine solide Grundlage für die Verwendung von Docker zur Bereitstellung von Jenkins vermittelt, eine entscheidende Fähigkeit in modernen DevOps-Praktiken. Sie sind nun bereit, Jenkins weiter zu erkunden, Build-Jobs zu erstellen und es in Ihren Entwicklungsprozess zu integrieren.

