Zum Hauptinhalt springen

Starten eines Docker-Containers über die API

Voraussetzungen

Um einen benutzerdefinierten Docker-Container zu starten, benötigst du Folgendes:

  • Die Projekt-ID eines bestehenden Projekts (wie man ein Projekt erstellt), in dem die Container-Hosting-Funktion verfügbar ist
  • Ein Container-Image, das du starten möchtest. Dieses Image kann in jeder öffentlichen oder privaten Registry verfügbar sein; jedoch muss die Registry aus dem Internet erreichbar sein und darf nicht hinter einer Firewall verborgen sein.

Definieren einer privaten Registry (optional)

Wenn dein Container-Image aus einer privaten Registry geladen werden soll, musst du diese Registry zuerst für das jeweilige Projekt definieren.

Du kannst die folgenden API-Operationen verwenden, um Container-Registries zu verwalten:

Zum Beispiel kannst du die POST/v2/projects/{projectId}/registries/-Operation verwenden, um diese neue Registry zu definieren:

POST /v2/projects/{projectId}/registries HTTP/1.1
Host: api.mittwald.de
Content-Type: application/json

{
"credentials": {
"password": "password",
"username": "username"
},
"description": "Meine Registry",
"uri": "my-registry.example"
}
See full request reference at: POST/v2/projects/{projectId}/registries/

Nachdem eine Container-Registry für ein Projekt konfiguriert wurde, kannst du sie einfach innerhalb dieses Projekts verwenden, indem du den Namen des Images mit jeweiligen Präfix der Registry versiehst, genau wie bei einem docker run-Befehl.

Starten eines Containers im Standard-Stack

Container werden als Teil eines Container-Stacks ausgeführt. Ein Container-Stack ist eine Sammlung von Containern und Volumes, die zusammen ausgeführt werden. Du kannst die folgenden API-Operationen verwenden, um Container-Stacks zu verwalten:

  • GET/v2/projects/{projectId}/stacks/ um verfügbare Stacks aufzulisten (verwende den default Stack)
  • PUT/v2/stacks/{stackId}/ um den gewünschten Zustand eines Container-Stacks zu deklarieren; diese Operation ist idempotent und kann verwendet werden, um Container und Volumes zu einem Stack hinzuzufügen/aktualisieren oder zu entfernen

Identifizieren des Standard-Stacks

Bevor du einen Container im Standard-Stack startest, musst du die ID des Standard-Stacks ermitteln. Dazu listest du die verfügbaren Stacks in deinem Projekt auf, indem du den GET/v2/projects/{projectId}/stacks/-Endpunkt aufrufst. Der Standard-Stack wird default genannt.

Definieren des Container-Stacks

Nachdem du den Standard-Stack ermittelt hast, kannst du definieren, welche Container und Volumes du in diesem Stack erstellen möchtest. Das folgende Beispiel zeigt eine Beispielanfrage, die einen Container mit einem Volume startet:

PUT /v2/stacks/{stackId} HTTP/1.1
Host: api.mittwald.de
Content-Type: application/json

{
"services": {
"mycontainer": {
"image": "my-registry/my-container:v1.0.1",
"volumes": [
"myvolume:/var/www"
],
"command": [
"command"
],
"entrypoint": [
"/entrypoint.sh"
],
"environment": {
"FOO": "bar"
}
}
},
"volumes": {
"myvolume": {}
}
}
See full request reference at: PUT/v2/stacks/{stackId}/

Siehe die Dokumentation zu Container-Workloads für weitere Informationen darüber, wie Container, Volumes und Netzwerke definiert werden.

Starten eines neuen Container-Stacks (geplant)

Das Starten neuer Container-Stacks neben dem Standard-Stack wird momentan nicht unterstützt.

Verbinden von Domains mit Containern

Um eine Domain mit einem laufenden Container zu verbinden, kannst du den Container als Ziel einer Ingress-Ressource angeben. Verwende die folgende API-Operation, um ein Ingress zu erstellen, das mit einem Container verbunden ist:

Betrieb von Containern

Um den Lebenszyklus eines Container-Stacks zu verwalten, kannst du die folgenden API-Operationen verwenden: