Wie 'Docker Plugin installieren' für JSON-basiertes Plugin

9

Ich arbeite an einem brandneuen Volume-Plugin und muss alle Vol-Test- Tests bestehen. Und ich habe alle Tests erfolgreich bestanden (in einer Umgebung mit installiertem Plugin), mit Ausnahme des ersten docker plugin install. Die Sache ist, dass es drei Möglichkeiten gibt, ein benutzerdefiniertes Plugin zu installieren:

Sock-Dateien sind UNIX-Domain-Sockets.
.spec-Dateien sind Textdateien, die eine URL enthalten, z. B. unix: ///other.sock oder tcp: // localhost: 8080.
.json-Dateien sind Textdateien, die eine vollständige json-Spezifikation für das Plugin enthalten.

und wir verwenden json, einen einfachen REST-Server, der die Docker-API implementiert (geschrieben in Java, Spring). Der Installationsprozess dafür ist unkompliziert: Kopieren Sie einfach die JSON-Datei /etc/docker/pluginsund Dockerd erkennt sie automatisch.
Das Problem tritt auf, wenn ich versuche, das Plugin in den docker plugin installBefehl zu integrieren . Wie hier angegeben :

Docker sucht zuerst nach dem Plugin auf Ihrem Docker-Host. Wenn das Plugin lokal nicht vorhanden ist, wird das Plugin aus der Registrierung abgerufen.

Unser Installationsprozess setzt keine Verbindung zu einer privaten oder öffentlichen Registrierung voraus, daher benötigen wir den ersten docker plugin createBefehl, um das Plugin lokal zu erstellen. Und hier fällt es mir schwer, mich mit dem json-basierten Plugin zu beschäftigen. Gemäß diesem Dokument muss ich einen Pfad zum Plugin angeben. Wenn ich einen Verzeichnisnamen verwenden , es erwartet config.jsonund rootfsin dem Verzeichnis.

ABER
1. config.json- Dies ist eine Konfiguration, die .sockFormatkonfigurationen beschreibt und nicht das .jsonFormat (bitte korrigieren Sie mich, wenn ich falsch
liege ). 2. Wie erstelle ich die Rootfs und warum brauche ich sie, wenn mein Plugin nur ein eigenständiger REST ist Service und es ist nicht einmal im Container?

Schätzen Sie jede Hilfe.

Vic K.
quelle

Antworten:

-1

config.json - Dies ist eine Konfiguration, die Konfigurationen im .sock-Format beschreibt und nicht das .json-Format (bitte korrigieren Sie mich, wenn ich falsch liege).

Ich habe überprüft, ob es mit .spec-Dateien funktioniert, bin mir aber nicht sicher, wie es mit json-Dateien funktioniert. Bei .spec-Dateien erwähnen Sie .spec-Dateien in config.json nicht. Dies wird nur für Unix-Socket-Plugins verwendet (Option 1). Tatsächlich ist für TCP-Socket-Plugins keine config.json erforderlich.

Wie erstelle ich die Rootfs und warum brauche ich sie, wenn mein Plugin nur ein eigenständiger REST-Service ist und sich nicht einmal im Container befindet?

Nach meinem Verständnis ist rootfs nur für Unix-Socket-Plugins. Die Plugin-Erkennung funktioniert sofort, wenn .spec-Dateien im richtigen Ordner vorhanden sind. Kurz gesagt, Sie erstellen einfach eine Spezifikationsdatei, legen sie im richtigen Erkennungsordner ab und versuchen, den Container mit diesem Plugin-Namen zu booten. Sie müssen keine Befehle wie "Docker-Plugin erstellen / installieren / aktivieren" ausführen. Sie führen den Server aus, legen die Datei im richtigen Ordner ab und lassen neue Container dieses Plugin verwenden.

Rajul Mittal
quelle