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

So installieren Sie Nginx in CentOS7

Installieren Sie die erforderliche Umgebung 1. gc...

vue+element-ui implementiert die Kopfnavigationsleistenkomponente

In diesem Artikel wird der spezifische Code von v...

Nodejs-Plugin und Nutzungsübersicht

Die Betriebsumgebung dieses Tutorials: Windows 7-...

Die Iframe-Aktualisierungsmethode ist bequemer

So aktualisieren Sie Iframe 1. Zum Aktualisieren k...

Super detaillierter GCC-Upgrade-Prozess unter Linux

Inhaltsverzeichnis Vorwort 1. Aktuelle gcc-Versio...

11 Linux-KDE-Anwendungen, die Sie nicht kannten

KDE Abkürzung für Kool Desktop Environment. Eine ...

Fallstudie zum Vue-Einkaufswagen

Inhaltsverzeichnis 1. Warenkorb-Beispiel 2. Code-...

Verlustfreie Erweiterungsmethode unter Linux

Überblick Der Server des Cloud-Plattform-Kunden k...

Beispiel für die Bereitstellung eines Django-Projekts mit Docker

Es ist auch sehr einfach, Django-Projekte mit Doc...

SQL zur Implementierung der Wiederherstellung einer Zeitreihenversetzung

Inhaltsverzeichnis 1. Anforderungsbeschreibung 2....

Ein auf Vue-cli basierender Codesatz unterstützt mehrere Projekte

Inhaltsverzeichnis Anwendungsszenario Ideen Proje...

SSH-Schlüsselpaare von einer oder mehreren Linux-Instanzen trennen

Schlüsselpaar trennen Trennen Sie SSH-Schlüsselpa...

Interpretation des CocosCreator-Quellcodes: Engine-Start und Hauptschleife

Inhaltsverzeichnis Vorwort Vorbereitung Gehen! Te...