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

CSS Acht auffällige HOVER-Effekt-Beispielcodes

1. Effekt-HTML senden <div id="senden-btn...

Diagramm des Prozesses zur Implementierung eines Richtungsproxys durch Nginx

Dieser Artikel stellt hauptsächlich den Prozess d...

MySQL verwendet ein Limit, um die Beispielmethode für Paging zu implementieren

1. Grundlegende Implementierung des Limits Im All...

Snake-Spiel mit nativem JS schreiben

In diesem Artikel wird der spezifische Code zum S...

Wann ist die Verwendung von dl, dt und dd sinnvoll?

dl: Definitionsliste Definitionsliste dt: Definiti...

So verbergen Sie die Versionsnummer in Nginx

Nginx verbirgt die Versionsnummer In einer Produk...

MySQL-Variablendeklaration und Analyse gespeicherter Prozeduren

Deklarieren von Variablen Festlegen globaler Vari...

Detaillierte Erklärung zur Verwendung selbstverschachtelter Vue-Baumkomponenten

In diesem Artikel erfahren Sie, wie Sie die selbs...

Tutorial zum schnellen Bereitstellen von Clickhouse mit Docker-Compose

ClickHouse ist ein spaltenorientiertes Open-Sourc...

Analyse des Verwendungsbeispiels für den Common Table Expression CTE in mysql8

Dieser Artikel beschreibt anhand eines Beispiels ...

CentOS verwendet expect, um Skripte und Befehle remote in Stapeln auszuführen

Manchmal müssen wir Server stapelweise bedienen, ...

JavaScript implementiert das Topfschlagen-Spiel von Gray Wolf

1. Projektdokumente 2. Verwenden Sie HTML und CSS...

Detaillierte Erläuterung des Ausführungsprozesses der MySQL-Update-Anweisung

Es gab bereits einen Artikel über den Ausführungs...

Lösung für den von Mysql systemctl start mysqld gemeldeten Fehler

Fehlermeldung: Der Job für mysqld.service ist feh...