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

Eine kurze Diskussion zur Logikextraktion und Feldanzeige von Vue3 in Projekten

Inhaltsverzeichnis Logische Schichtung Trennen Si...

Einführung in die Verwendung des Base-Link-Tags Base

<br />Wenn Sie auf den Link klicken, wird di...

MySql schnelles Einfügen von zig Millionen großen Datenbeispielen

Im Bereich der Datenanalyse sind Datenbanken unse...

So verhindern Sie mit Nginx die böswillige Auflösung von IP-Adressen

Zweck der Verwendung von Nginx Lassen Sie uns zun...

Detaillierte Erklärung der Linux-Befehle und der Dateisuche

1. Führen Sie eine Dateinamensuche durch which (S...

MySQL-Dienst und Datenbankverwaltung

Inhaltsverzeichnis 1. Anweisungen zum Starten und...

Detailliertes Tutorial zur Installation von ffmpeg unter Linux

1. Installieren Sie ffmpeg unter Centos Linux 1. ...

So aktivieren Sie die MySQL-Remoteverbindung

Aus Sicherheitsgründen erlaubt MySql-Server nur d...

Layout im Vue.js-Stil Allgemeine Fähigkeiten zur Flutter-Geschäftsentwicklung

Korrespondenz zwischen Flutter und CSS im Shadow-...

Detaillierte Erklärung der MySql-Installation und des Logins

Überprüfen Sie, ob MySQL bereits unter Linux inst...