Heim >Betrieb und Instandhaltung >Docker >Was ist Docker-API?
Docker API bezieht sich auf die Anwendungsprogrammschnittstelle von Docker, die die Verbindung verschiedener Komponenten des Softwaresystems darstellt, die hauptsächlich über drei externe APIs verfügt: 1. Docker Registry API; 3. Docker Remote-API.
Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Docker-1.13.1-Version, Dell G3-Computer.
1. Was ist API konkret?
Das Wort API wird in Wikipedia wie folgt erklärt: Application Programming Interface (englisch: application programming interface, abgekürzt API), auch Application Programming Interface genannt, ist eine Konvention zur Verbindung verschiedener Komponenten eines Softwaresystems. Nachdem Sie diese Erklärung gelesen haben, sind Sie vermutlich immer noch etwas verwirrt, aber das spielt keine Rolle. Im Folgenden werden wir für Laien erklären, was eine API ist.
Jeder von uns hat ein Mobiltelefon. Wenn das Mobiltelefon keinen Strom mehr hat, finden wir auf jeden Fall ein festes Ladegerät und ein Ladekabel, um es aufzuladen. Verwenden Sie Apple für Apple, verwenden Sie Android für Android. Aber Sie werden auf keinen Fall ein Android-Kabel zum Aufladen eines Apple-Telefons verwenden. Der Grund ist ganz einfach, denn Ihr Apple-Telefon verfügt über eine Lightning-Schnittstelle und das Android-Telefon über eine Mikroschnittstelle. Wenn Sie Ihr Mobiltelefon aufladen oder Daten darauf übertragen möchten, müssen Sie geeignete Ladekabel und Datenkabel kaufen. Dies ist der einfachste und einfachste Weg, die Schnittstelle zu verstehen.
Das Gleiche gilt auch für die Programmoberfläche. Jedes Programm verfügt über eine feste externe Standardschnittstelle. Diese Schnittstelle wird von dem Entwickler definiert, der das Programm entwickelt hat. Wenn Sie eine Verbindung zu ihnen herstellen möchten, sollten Sie deren Schnittstellenstandards befolgen.
2. Was ist REST?
Beim Lernen der API sehe ich oft ein Wort namens REST, und der vollständige englische Name ist Representational State Transfer. Was ist REST? Der Begriff REST wurde von Dr. Roy Fielding, dem Vorsitzenden der Apache Foundation, vorgeschlagen und seine chinesische Bedeutung ist „Zustandstransformation der Präsentationsschicht“. Chinesisch ist nicht leicht zu verstehen, aber wenn wir es anhand der folgenden Aspekte lernen, können Sie wahrscheinlich verstehen, was Ruhe ist.
2.1. Was ist die Präsentationsschicht?
Die Präsentationsschicht bezieht sich hier auf die Präsentationsschicht der Ressourcen. Die sogenannte „Ressource“ ist eine bestimmte Information im Netzwerk. Als Ressource können ein Text, ein Film und ein Dienst gezählt werden. Wofür werden diese Ressourcen also verwendet, um sie zu identifizieren und darzustellen? Dann müssen Sie URI verwenden. Wenn wir beispielsweise einen Film herunterladen, muss es eine entsprechende URI-Adresse geben. Wenn wir einen Online-Roman lesen, gibt es auch eine entsprechende URI-Adresse. Und diese Adresse ist einzigartig und einzigartig. Die Ressource wird durch den URI identifiziert, was wir verstehen können, da diese Ressource im Netzwerk „ausgedrückt“ wurde. Wenn es darum geht, ist die Bedeutung der Präsentationsschicht tatsächlich die Form, in der „Ressourcen“ konkret präsentiert werden.
2.2. Was ist ein Zustandsübergang?
Wenn wir im gesunden Menschenverstand den Zustand eines Objekts ändern wollen, brauchen wir auf jeden Fall einige Operationen und Mittel. Das Gleiche gilt für Ressourcen im Internet. Wenn Sie einen Film herunterladen, müssen Sie ihn zuerst herunterladen. Anschließend können Sie ihn öffnen und genießen. Für Downloads und Akquisitionen ist das HTTP-Protokoll erforderlich. Im HTTP-Protokoll gibt es vier grundlegende Operationsmethoden: GET, POST, PUT und DELETE (Abrufen, Erstellen, Aktualisieren, Löschen). Mit diesen vier Grundmethoden können einige Zustandstransformationsvorgänge für Ressourcen im Netzwerk durchgeführt werden.
REST ist also die Zustandstransformation der Präsentationsschicht. Sie können die beiden oben genannten Punkte separat verstehen und dann miteinander kombinieren. Es kann einfach und grob verstanden werden als: Methode + URI-Ressource.
GET /movie/war/Pearl Harbor
DELETE /movie/war/Pearl Harbor
...
Dockers API folgt auch dem Reststil, sodass wir die beiden oben genannten Punkte endlich verstehen , Wir begannen, das relevante Wissen über die Docker-eigene API zu erlernen.
Zunächst betrachten wir Docker als Ressource. Wir können Docker über die API betreiben, und die Betriebsmethoden sind auch die gleichen wie bei http.
Zweitens müssen wir verstehen, über welche APIs Docker verfügt, die extern verwendet werden können: Docker Registry API, Docker Hub API, Docker Remote API API
3. Docker-Remote-API
Diese API wird zur Steuerung der Host-Docker-Server-API verwendet, die dem Docker-Befehlszeilen-Client entspricht. Damit können Sie Docker-Container aus der Ferne bedienen und, was noch wichtiger ist, Docker-Prozesse automatisch über Programme betreiben und warten.3. Vorbereitung vor der Verwendung der API
Wie bereits erwähnt, werden die Methoden von http zum Betrieb der Rest-API verwendet. Wie setzt man diese Methoden konkret ein? Hier bieten wir mehrere gängige Möglichkeiten, die Docker-API zu bedienen, aufzurufen und dann zu erleben. Bevor wir es erleben, müssen wir die Docker-Rest-API aktivieren. Andernfalls können Sie sie nicht verwenden, wenn sie nicht aktiviert ist. Spezifische Öffnungsmethode:$ vim /usr/lib/systemd/system/docker.service
Fügen Sie -H tcp://0.0.0.0:8088 -H unix:///var/run/docker.sock direkt nach ExecStart=/usr/bin/dockerd hinzu (beachten Sie, dass Port 8088 selbst definiert werden kann Folgen Sie dem aktuellen Konflikt nicht)
$ systemctl daemon-reload $ systemctl restart docker
Nachdem der Neustart abgeschlossen ist, führen wir den Befehl „curl 127.0.0.1:8088/info python -mjson.tool |“ aus, um den Status von Docker anzuzeigen (in JSON-Form, leiht sich python -mjson.tool aus). Dieses Tool macht JSON formatiert und einfacher lesbar.)
Nachdem wir die Docker-API aktiviert haben, haben wir noch eine Frage: Wo können wir die vorhandene Docker-API abfragen? Da Docker die drei wichtigsten API-Bibliotheken bereitstellt: Docker Registry API, Docker Hub API und Docker Remote API. Wo kann ich also spezifische und detaillierte APIs anzeigen, z. B. welche API-Adressen es unter der Docker Registry API gibt? Gibt es eine API zum Abfragen von Bildern? Wurden welche gelöscht? Tatsächlich sind diese alle verfügbar. Die Adresse lautet: https://docs.docker.com/engine/api/v1.38/ (Möchten Sie sehen, was Version (die letzte Version v1.38 kann durch die Zielversionsnummer ersetzt werden)
Hier ist zu beachten, dass der Beamte nicht mehr die Verwendung von Versionen vor API v1.12 empfiehlt und die Verwendung von Versionen vor API v1.24 oder höher empfohlen wird.
Um die lokale Docker-API-Version zu überprüfen, können Sie den Docker-Versionsbefehl verwenden:
1. Die einfachste Curl-Methode
CURL Dieser Befehl ist meiner Meinung nach jeder Ist damit vertraut, läuft es standardmäßig unter Linux. Alle werden mit der Installation geliefert. Viele Methoden zum Testen von http können CURL direkt verwenden.
Wenn wir beispielsweise die Bilddetails von Docker überprüfen, können wir sie direkt mit Curl abrufen:
$ curl -X GET http://127.0.0.1:8088/images/json
Diese Anzeige wird unordentlich sein. Wir können python -mjson.tool nach dem Befehl hinzufügen, um es zu formatieren
$ curl -X GET http://127.0.0.1:8088/images/json | python -mjson.toolDas Ergebnisformat ist standardisierter und einfacher zu lesen. Alle Container anzeigen:
$ curl -X GET http://127.0.0.1:8088/containers/json | python -mjson.toolErstellen Sie einen Container: Hier erstellen Sie einen Container für die Mariadb-Datenbank, setzen Sie das Passwort auf 123456 und den Überwachungsport auf 3306
$ curl -X POST -H "Content-Type: application/json" -d '{ "Image": "mariadb", "Env": ["MYSQL_ROOT_PASSWORD=123456"], "ExposedPorts": { "3306/tcp": {} }, "HostConfig": { "PortBindings": { "3306/tcp": [{"HostIp": "","HostPort": "3306"}] } }, "NetworkSettings": { "Ports": { "5000/tcp": [{"HostIp": "0.0.0.0","HostPort": "3306"}] } } }' http://127.0.0.1:8088/containers/createStarten/Stoppen/Neustarten eines Containers:
$ curl -X POST http://127.0.0.1:8088/containers/{id}/start (注意这里是POST方法) $ curl -X POST http://127.0.0.1:8088/containers/{id}/stop (注意这里是POST方法) $ curl -X POST http://127.0.0.1:8088/containers/{id}/restart (注意这里是POST方法) ...Es gibt viele spezifische API-Methoden. Sie können sich über den oben genannten Link anmelden, um die Skriptmethode
https://docs.docker.com/engine/api/v1.38 anzuzeigen Python ist sehr mächtig, das erkennt jeder. Viele Automatisierungsszenarien verwenden jetzt Python, um entsprechende Bibliotheken von Drittanbietern zu laden und dann Geschäftslogik zu schreiben, um den Betrieb und die Wartung von DevOps zu automatisieren. Docker stellt außerdem eine sehr leistungsstarke Bibliothek für Python bereit, die Docker heißt. Wir können uns bei der offiziellen Python-SDK-Adresse anmelden, um zu erfahren, wie Python Docker konkret betreibt.
Die Adresse lautet:https://docker-py.readthedocs.io/en/stable/
2.1. Docker-Python-Bibliothek installieren$ pip install docker2.2. Los geht’s
import docker client = docker.DockerClient(base_url='unix://var/run/docker.sock', version="auto") client.containers.run("ubuntu", "echo hello world")Das ist ein sehr Wir können ein einfaches Anwendungsbeispiel analysieren: Die erste Zeile zeigt die Einführung des Bibliotheks-Dockers eines Drittanbieters an. Die zweite Zeile wird verwendet, um die grundlegenden Informationen des Docker-Servers zu konfigurieren, einschließlich base_url (die Adresse des Docker-Servers) und Version (auto kann die Version von Docker automatisch überprüfen). Die dritte Zeile entspricht dem Ausführen eines Docker-Run-Ubuntu-Echo-Hallo-Welt-Befehls.
2.3. Erweiterte Nutzung Oben haben wir die Einführung in die Docker-API kurz vorgestellt. Hier muss man sehr gut sein und es gibt viel Flexibilität und Komplexität, aber hier sind einige Kenntnisse in der Skriptprogrammierung erforderlich.
Empfohlenes Lernen: „
Docker-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWas ist Docker-API?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!