Verwendung des Dockers in einer Skript-Jenkins-Pipeline auf RHEL7

527
Bram

Ziel ist es, ein Docker-Image von einer Skript-Jenkins-Pipeline aus zu starten.

Der Knoten, auf dem das Andockgerät ausgeführt wird, ist eine RHEL7-Maschine.

Auf RHEL7 dürfen reguläre Benutzer Docker-Befehle nicht ohne sudo ausführen. Siehe diesen Beitrag von Dan Walsh .

Sudo wurde konfiguriert und ich habe den Alias ​​wie empfohlen eingerichtet. Allerdings liest jenkins das bash-Profil nicht.

Als Nächstes entfernte ich den Alias ​​und erstellte ein Skript mit dem Namen Docker und legte das Verzeichnis in das Verzeichnis, das ich jetzt dem PATH voranstelle.

Die Pipeline kann jetzt Docker ausführen, aber am Ende der Pipeline versucht sie, / usr / bin / docker-current aufzurufen, und aus irgendeinem Grund wird das Skript nicht verwendet. Obwohl der Docker-Strom in einem SH-Schritt in der Pipeline zeigt, dass er das Skript gefunden hat.

All dies scheint mir etwas zu fehlen. Wie kann ich Jenkins / Docker so konfigurieren, dass Jenkins Docker-Images ordnungsgemäß starten kann, um Schritte in meiner Pipeline auszuführen?

0

1 Antwort auf die Frage

0
jayhendren

Anstatt dem Jenkins-Benutzer sudo zu geben und zu versuchen, Anrufe an Docker mit sudo umzuwandeln, fügen Sie den Jenkins-Benutzer der Docker-Gruppe hinzu:

Wenn Sie dem Docker-Befehl kein sudo voranstellen möchten, erstellen Sie eine Unix-Gruppe mit dem Namen Docker und fügen Sie Benutzer hinzu. Wenn der Docker-Dämon gestartet wird, erstellt er einen Unix-Socket, auf den Mitglieder der Docker-Gruppe zugreifen können.

Quelle aus der offiziellen Dokumentation mit detaillierteren Anweisungen, um Nicht-Root-Benutzern Zugriff auf den Docker-Daemon zu gewähren.

Diese Anweisungen befolgte ich, um Jenkins Docker-Zugriff auf RHEL 7 über gescriptete Pipelines zu ermöglichen, und es scheint gut zu funktionieren.