Einige Möglichkeiten zur Lösung des Problems des in Jenkins integrierten Docker-Plugins

Einige Möglichkeiten zur Lösung des Problems des in Jenkins integrierten Docker-Plugins

Hintergrund

Die Testumgebung verwendet Jenkins mit integriertem Docker-Plug-In, um einen Ein-Klick-Bereitstellungsdienst für die Testumgebung zu implementieren. Zunächst hat Jenkins das Docker-Build- und Publish-Plug-In installiert, aber beim Ausführen des Jobs sind eine Reihe von Problemen aufgetreten!

Frage 1

Die Docker-Ausführung meldet einen Fehler. Der Build-Schritt „Docker Build and Publish“ hat den Build als fehlgeschlagen markiert. Es gibt viele Probleme, die zu diesem Satz führen. Genauere Fehlerinformationen: Jenkins-Container unterstützt keine Docker-Operationen?

Analyse des Problems: Jenkins wird mithilfe von Docker bereitgestellt, daher gibt es im Jenkins-Container keine Docker-bezogenen Betriebsbefehle, sodass die Ausführung fehlschlägt!

Lösung: Sie müssen die Docker-Umgebung des Hosts dem Jenkins-Container zuordnen, bevor Sie die Docker-Befehlszeile verwenden können.

docker run --name myjenkins -p 8123:8080 -p 50000:50000 -v /run/docker.sock:/var/run/docker.sock -v /var/jenkins_home:/var/jenkins_home -u 0 -d jenkins/jenkins:lts

Noch einmal ausführen, das Ergebnis ist immer noch falsch, keine Lösung!

Fehler 2

Es wird angezeigt, dass im Bin-Verzeichnis kein ausführbarer Befehl vorhanden ist.

Analyse: Wir wissen, dass wir für jede Umgebung, die wir installieren, die Umgebungsvariable /usr/bin hinzufügen müssen, wenn wir deren Befehlszeile in der Linux-Umgebung ausführen möchten.

Lösung: Fahren Sie mit der Zuordnung des ausführbaren Host-Docker-Befehls fort

docker run --name myjenkins -p 8123:8080 -p 50000:50000 -v /run/docker.sock:/var/run/docker.sock -v $(welcher Docker):/usr/bin/docker -v /var/jenkins_home:/var/jenkins_home -u 0 -d jenkins/jenkins:lts

Tipps: Der Befehl which ähnelt whereis zum Suchen von Befehlen oder Dateien: Ersterer überprüft die Befehle in den Systemumgebungsvariablen (gibt das erste Ergebnis zurück), und letzterer gibt den mit dem Programmnamen verknüpften Pfad zurück (gibt alle übereinstimmenden Ergebnisse zurück).

Fehler 3

Zugehörige Abhängigkeiten konnten nicht gefunden werden: Fehler beim Laden gemeinsam genutzter Bibliotheken: libltdl.so.7: Gemeinsam genutzte Objektdatei kann nicht geöffnet werden: Keine solche Datei oder/libltdl.so.7

Analyse: Da der Container im Jenkins-Container nicht mit dem Host geteilt wird, befindet sich die Bibliothek auf dem Host: cd usr/lib64/

Lösung: Suchen Sie die Abhängigkeitsbibliothek libltdl.so.7 auf dem Host und mounten Sie den Container

docker run --name myjenkins -p 8123:8080 -p 50000:50000 -v /run/docker.sock:/var/run/docker.sock -v $(welcher Docker):/usr/bin/docker -v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 -v /var/jenkins_home:/var/jenkins_home -v /var/data/shell:/var/data/shell -u 0 -d jenkins/jenkins:lts

Fehler 4

keine grundlegenden Authentifizierungsdaten Keine Authentifizierung

Analyse der Ursache: Dieses Plug-In verwendet den Docker-Befehl innerhalb des Jenkins-Containers. Beim Erstellen des Images tritt kein Fehler auf. Wenn es in das Image-Repository im Container übertragen werden muss, ist eine Authentifizierung erforderlich.

Lösung: Fügen Sie dem Jenkins-Job direkt eine Authentifizierungszeile hinzu: docker login --username=xxxx --password=xxxx nexus.xxxx.com

Tipps: Nach der Ausführung des Befehls wird im aktuellen Verzeichnis eine .credentials-Datei generiert, die die Konto- und Kennwortinformationen für die Anmeldung beim Nexus-Image-Repository aufzeichnet

Zusammenfassen

An diesem Punkt sind die vorherigen Schritte abgeschlossen und Docker-Befehle können innerhalb des Jenkins-Containers verwendet werden. Es ist nicht erforderlich, das Shh-Plugin zu verwenden, um aus dem Container zum Host zu springen und die Befehle für die Build- und Push-Operation auszuführen. Sie müssen nur das Skript ausführen, um den Container zu starten!

Bei der Docker-Containerisierung ist alles, was zwischen dem Host und dem Container zugeordnet ist, gleich. Das heißt, unabhängig davon, ob die auf dem Host gemountete Datei im Container geändert wird oder die gemountete Host-Datei im Container geändert wird, werden beide gleichzeitig geändert.

Dies ist das Ende dieses Artikels über einige Methoden zur Lösung des Problems des in Jenkins integrierten Docker-Plugins. Weitere relevante Inhalte zum in Jenkins integrierten Docker-Plugin finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Implementierung der kontinuierlichen Integration von Jenkins+Docker
  • Detailliertes Tutorial zum Erstellen einer Continuous-Integration-Delivery-Umgebung basierend auf Docker+K8S+GitLab/SVN+Jenkins+Harbor
  • Ein vollständiges Beispiel für kontinuierliche Integration mit ASP.NET Core+Docker+Jenkins

<<:  Spezifische Verwendung der MySQL-Vorbereitungsvorverarbeitung

>>:  Eine neue CSS-Bildersatztechnik (Hintergrundanzeige und Textverschiebung vom Bildschirm), um 9999 Pixeln Lebewohl zu sagen

Artikel empfehlen

Schritte zum Einrichten einer HTTPS-Website basierend auf Nginx

Inhaltsverzeichnis Vorwort: Verschlüsselungsalgor...

Docker-Installationstutorial: Erste Schritte (Anfängerausgabe)

Doccer-Einführung: Docker ist eine Container-bezo...

Fassen Sie die häufigsten Anwendungsprobleme von XHTML-Code zusammen

<br />Ich habe festgestellt, dass viele Leut...

Erläuterung der Array-Verarbeitung in React und Redux

Dieser Artikel stellt einige häufig verwendete Fu...

Implementierungsprozess des Lupeneffekts im Javascript-Beispielprojekt

Inhaltsverzeichnis Vorwort Fall: Nachahmung des L...

9 Möglichkeiten zum Ein- und Ausblenden von CSS-Elementen

Bei der Erstellung von Webseiten ist das Anzeigen...

So verwenden Sie den Linux-Befehl nl

1. Befehlseinführung nl (Anzahl der Zeilen) fügt ...

mysql drei Tabellen verbunden, um eine Ansicht zu erstellen

Drei Tabellen sind miteinander verbunden. Feld a ...

Installationsschritte von Docker-CE auf dem Raspberry Pi 4b Ubuntu19-Server

Das Raspberry Pi-Modell ist 4b, 1 G RAM. Das Syst...

Natives JS zum Erzielen digitaler Tisch-Spezialeffekte

Dieser Artikel beschreibt einen Digitaluhreffekt,...

So verwenden Sie den regulären Matching-Selektor für CSS-Attributwerte (Tipps)

Es gibt drei Typen von regulären Matching-Selekto...