Wie werden benutzerdefinierte App-Vorlagen in Container Station 3 konfiguriert und bereitgestellt?


Zuletzt geändertes Datum 2023-03-27

Mit den App-Vorlagen von Container Station können Sie vorkonfigurierte Container in Ihrer QNAP-Umgebung bereitstellen. Container Station bietet standardmäßig eine Sammlung von QNAP-verifizierten Vorlagen, aber Sie können zusätzliche benutzerdefinierte Anwendungsvorlagen hinzufügen, um Ihre speziellen Anforderungen zu erfüllen. Sie können diese benutzerdefinierten App-Vorlagen direkt auf Ihrem QNAP-Gerät oder auf einem externen Webserver hosten.

In diesem Tutorial werden zwei Methoden erklärt, um benutzerdefinierte App-Vorlagen auf Ihrem QNAP-Gerät zu hosten, und wie man Container Station für den Zugriff auf diese benutzerdefinierten App-Vorlagen konfiguriert.

Eine benutzerdefinierte App-Vorlagendatei erstellen

Der erste Schritt besteht darin, eine benutzerdefinierte App-Vorlagendatei zu erstellen. Container Station bietet standardmäßig eine Liste von Containern, deren korrekte Funktion mit Ihrem QNAP-Gerät überprüft wurde. Sie können QNAP-verifizierte Vorlagen hier herunterladen und ändern oder selbst eine neue Datei erstellen.

Hinweis:

Sie können die Vorlagendatei mit einem beliebigen Texteditor bearbeiten.

App-Vorlagenformat

App-Vorlagendefinitionen werden in JSON geschrieben. Gültige Vorlagen bestehen aus einem Array und einem oder mehreren Container-Vorlagenelementen. Jedes Element der Container-Vorlage ist ein JSON-Objekt, das alle obligatorischen oder optionalen Datenfelder enthält. Das Format sollte ähnlich dem folgenden Beispiel sein:

{
  “templates”: [
    {
      // template1
    },
    {
      // template2
    },
    ...
  ]
}

JSON-Element-Format

typ

Attribut

Beschreibung

Beschreibung

Der Typ des Containers (Docker oder LXD) für diese Vorlage.

Bedeutung

Erforderlich

Format

Ganzzahl

Akzeptierte Werte

  • 1: Wird für Docker-Container verwendet.

  • 10: Wird für LXD-Container verwendet.

title

Attribut

Beschreibung

Beschreibung

Der Titel der Vorlage.

Bedeutung

Erforderlich

Format

Zeichenfolge

Akzeptierte Werte

Beliebiger Zeichenfolgenwert

sub_title

Attribut

Beschreibung

Beschreibung

Informationen zur Vorlagenversion.

Bedeutung

Erforderlich

Format

Zeichenfolge

Akzeptierte Werte

Beliebiger Zeichenfolgenwert

Beschreibung

Attribut

Beschreibung

Beschreibung

Eine Beschreibung, die Informationen über die Vorlage enthält.

Bedeutung

Erforderlich

Format

Zeichenfolge

Akzeptierte Werte

Beliebiger Zeichenfolgenwert

logo

Attribut

Beschreibung

Beschreibung

Der Speicherort eines Logos für die Vorlage.

Bedeutung

Optional

Format

Zeichenfolge

Akzeptierte Werte

Jede gültige URL oder jeder gültige Pfad relativ zu der Netzwerkdomäne, in der die benutzerdefinierte App-Vorlage gehostet wird.

location

Attribut

Beschreibung

Beschreibung

Die Vorlagen-URL. Könnte eine Einführungswebseite für die Vorlage sein.

Bedeutung

Optional

Format

Zeichenfolge

Akzeptierte Werte

Jede gültige URL

platform

Attribut

Beschreibung

Beschreibung

Die unterstützte Plattform. Muss einen gültigen Wert enthalten.

Bedeutung

Erforderlich

Format

Zeichenfolge

Akzeptierte Werte

  • linux: Jede Plattform

  • linux/amd64: 64-Bit x86

  • linux/arm64: 64-Bit-ARM

  • linux/arm: 32-Bit-ARM

Beispiel

{
  "platform": "linux/amd64"
}

image

Attribut

Beschreibung

Beschreibung

Das mit einer Vorlage verknüpfte Image.

Bedeutung

Erforderlich

Format

Zeichenfolge

Akzeptierte Werte

Jedes gültige Image

Beispiel

{
  "image": "nginx:latest"
}

command

Attribut

Beschreibung

Beschreibung

Der Befehl, der im Docker-Container ausgeführt werden soll. Wenn nichts angegeben wird, verwendet der Container den im Dockerfile angegebenen Standardbefehl.

Bedeutung

Optional

Format

Zeichenfolge

Akzeptierte Werte

Beliebiger Zeichenfolgenwert

Beispiel

{
  "command": "nginx -g 'daemon off;'"
}

entrypoint

Attribut

Beschreibung

Beschreibung

Der Einstiegspunkt zum Starten des Docker-Containers. Wenn nichts angegeben wird, verwendet der Container den im Dockerfile angegebenen Einstiegspunkt.

Bedeutung

Optional

Format

Zeichenfolge

Akzeptierte Werte

Beliebiger Zeichenfolgenwert

Beispiel

{
  "entrypoint": "/docker-entrypoint.sh"
}

env

Attribut

Beschreibung

Beschreibung

Ein JSON-Array, das die von einer Vorlage benötigten Umgebungsvariablen beschreibt. Jedes Element im Array muss ein gültiges JSON-Objekt sein.

Bedeutung

Optional

Format

Array

Akzeptierte Werte

Ein gültiges JSON-Array

Array-Format

  • name: (Erforderlich) Der Name der Umgebungsvariablen, wie er im Container-Image unterstützt wird.

  • value: (Erforderlich) Der mit der Variablen verknüpfte Wert.

Beispiel

{
  "env": [
    { "name": "ENV_VAR1", "value": "" },
    { "name": "ENV_VAR2", "value": "value2" }
  ]
}

labels

Attribut

Beschreibung

Beschreibung

Ein JSON-Array, das die mit einer Vorlage verknüpften Label beschreibt. Jedes Element im Array muss ein gültiges JSON-Objekt sein.

Bedeutung

Optional

Format

Array

Akzeptierte Werte

Ein gültiges JSON-Array

Array-Format

  • name: (Erforderlich) Der Name des Label-Schlüssels.

  • value: (Erforderlich) Der mit dem Schlüssel verknüpfte Wert.

Beispiel

{
  "labels": [
    { "name": "com.example.vendor", "value": "Acme Incorporated" },
    { "name": "com.example.label-with-value", "value": "foo" },
    { "name": "version", "value": "1.0" }
  ]
}

volumes

Attribut

Beschreibung

Beschreibung

Ein JSON-Array, das die mit einer Vorlage verknüpften Volumes beschreibt. Jedes Element im Array muss ein gültiges JSON-Objekt mit einer erforderlichen Container-Eigenschaft sein.

Bedeutung

Optional

Format

Array

Akzeptierte Werte

Ein gültiges JSON-Array

Array-Format

  • container: (Erforderlich) Der Containerpfad.

  • Volume: (Optional) Der Name des Docker-Volumes.

  • bind: (Optional für Docker-Container, erforderlich für LXD-Container) Der Host-Pfad, der als Quelle für einen Bind-Mount verwendet wird.

  • readonly: (Optional) Bei Einstellung auf truewird das Volume im schreibgeschützten Modus gemountet.

Beispiel

{
  "volumes": [
    {
      "container": "/usr/share/nginx/html"
    },
    {
      "container": "/usr/share/nginx/html"
      "volume": "nginx-vol"
    },
    {
      "container": "/usr/share/nginx/html/my-templates.json",
      "bind": "/Container/my-templates.json  ",
      "readonly": true
    }
  ]
}

ports

Attribut

Beschreibung

Beschreibung

Ein JSON-Array, das die von einer Vorlage bereitgestellten Ports beschreibt. Jedes Element des Arrays muss eine gültige JSON-Zeichenfolge sein, die die Portnummer im Container sowie das Protokoll angibt. Dieser kann optional eine Portnummer und ein Doppelpunkt vorangestellt werden (z. B. 8080:), um den Port zu definieren, der auf dem Host abgebildet wird. Wenn der Host-Port nicht angegeben wird, weist der Docker-Host beim Start des Containers automatisch einen Port zu.

Bedeutung

Optional

Format

Array

Akzeptierte Werte

Ein gültiges JSON-Array

Beispiel

{
  "ports": ["8080:80/tcp", "443/tcp", "80/udp"]
}

hostname

Attribut

Beschreibung

Beschreibung

Der Hostname des Containers. Kann helfen, den Container leicht zu identifizieren.

Bedeutung

Optional

Format

Zeichenfolge

Akzeptierte Werte

Beliebiger Zeichenfolgenwert

Beispiel

{
  "hostname": "myContainerHostName"
}

restart_policy

Attribut

Beschreibung

Beschreibung

Die mit dem Docker-Container verknüpfte Neustartrichtlinie. Wenn nichts angegeben wird, ist dieser Wert standardmäßig unless-stopped.

Bedeutung

Optional

Format

Zeichenfolge

Akzeptierte Werte

  • no: Der Container wird nicht automatisch neu gestartet.

  • on-failure: Starten Sie den Container neu, wenn er aufgrund von Fehlern, z. B. einem Exit-Code ungleich Null, beendet wird.

  • always: Startet den Container immer neu, wenn er angehalten wird. Wenn er manuell gestoppt wurde, wird er erst wieder gestartet, wenn Container Station neu gestartet wird oder Sie den Container manuell neu starten.

  • unless-stopped: Ähnlich wie always, mit dem Unterschied, dass der Container, wenn er manuell gestoppt wird, auch nach dem Neustart von Container Station nicht neu gestartet wird.

Beispiel

{
  "restart_policy": "unless-stopped"
}

auto_start_policy

Attribut

Beschreibung

Beschreibung

Die mit dem LXD-Container verknüpfte Auto-Start-Richtlinie. Wenn nichts angegeben wird, ist dieser Wert standardmäßig retain.

Bedeutung

Optional

Format

Zeichenfolge

Akzeptierte Werte

  • no: Der Container wird nicht automatisch neu gestartet.

  • always: Startet den Container immer neu, wenn er angehalten wird. Wenn er manuell gestoppt wurde, wird er erst wieder gestartet, wenn Container Station neu gestartet wird oder Sie den Container manuell neu starten.

  • retain: Ähnlich wie Always, mit dem Unterschied, dass der Container, wenn er manuell gestoppt wird, auch nach dem Neustart von Container Station nicht neu gestartet wird.

Beispiel

{
  "auto_start_policy": "retain"
}

interactive

Attribut

Beschreibung

Beschreibung

Steuert, ob der Docker-Container im Vordergrundmodus gestartet werden soll. Wenn nichts angegeben wird, ist der Wert standardmäßig true.

Bedeutung

Optional

Format

Boolean

Akzeptierte Werte

  • true: Steuert, ob der Docker-Container im Vordergrundmodus gestartet werden soll.

  • false: Startet den Container im getrennten Modus.

Beispiel

{
  "interactive": false
}

tty

Attribut

Beschreibung

Beschreibung

Steuert, ob dem Docker-Container ein Pseudo-TTY zugewiesen werden soll. Wenn nichts angegeben wird, ist es standardmäßig true.

Bedeutung

Optional

Format

Boolean

Akzeptierte Werte

  • true: Weist dem Docker-Container einen Pseudo-TTY zu

  • false: Weist dem Docker-Container keinen Pseudo-TTY zu

Beispiel

{
  "tty": false
}

privileged

Attribut

Beschreibung

Beschreibung

Steuert, ob der Container im privilegierten Modus gestartet werden soll. Wenn nichts angegeben wird, ist es standardmäßig false.

Bedeutung

Optional

Format

Boolean

Akzeptierte Werte

  • true: Startet den Container im privilegierten Modus.

  • false: Startet den Container nicht im privilegierten Modus.

Beispiel

{
  "privileged": true
}

Eine benutzerdefinierte App-Vorlage in einem NGINX-Container hosten

Als nächstes müssen Sie die benutzerdefinierte App-Vorlage für Container Station verfügbar machen. In diesem Thema wird der Prozess des Hostings der Vorlagendatei mit einem NGINX-Container erläutert, der ebenfalls in Container Station läuft.

Alternativ dazu können Sie die App-Vorlagendatei auch auf dem QNAP-Webserver hosten. Siehe Eine benutzerdefinierte App-Vorlage mit dem QNAP-Webserver hosten.

Wichtig:

Nachdem Sie die JSON-Datei der benutzerdefinierten App-Vorlagen aktualisiert haben, müssen Sie den NGINX-Container neu starten, damit die Änderungen innerhalb des Containers übernommen werden.

  1. Laden Sie die benutzerdefinierte App-Vorlagendatei hoch.
    1. Öffnen Sie File Station.
    2. Navigieren Sie zu einem Ordner auf dem Gerät.
    3. Laden Sie die App-Vorlagendatei hoch.
    4. Notieren Sie sich den Speicherort der Vorlagendatei zur späteren Verwendung.
  2. Öffnen Sie Container Station.
  3. Klicken Sie im oberen Fenster auf den Pfeil neben Erkunden
  4. Wählen Sie Container erstellen.

    Das Fenster Container erstellen wird geöffnet.

  5. Wählen Sie ein Image.

    Einstellung

    Aktion

    Modus

    Wählen Sie Basismodus.

    Registrierung

    Wählen Sie Docker-Hub.

    Image

    Geben Sienginx.

  6. Klicken Sie auf Weiter.
  7. Optional: Konfigurieren Sie die Container-Einstellungen.

    Einstellung

    Aktion

    Name

    Geben Sie einen Namen für den Container ein. Beispiel: nginx-my-template.

    Auto-Start-Richtlinie

    Wählen Sie Sofern nicht gestoppt.

    Diese Option bewirkt, dass der Container immer neu gestartet wird, es sei denn, er wird von einem Benutzer manuell gestoppt.

    Netzwerkkonfiguration

    Konfigurieren Sie die Einstellungen passend zu Ihrer Netzwerkumgebung.

    In diesem Tutorial verwenden wir den Standard-Netzwerkmodus und senden den Datenverkehr an den Container über Port30080 auf dem Host.

    Hinweis:

    Wenn das Feld Host nicht angegeben ist, kann sich der veröffentlichte Port nach dem Neustart des Containers ändern. Dies kann dazu führen, dass die App-Vorlage für Container Station unzugänglich wird.

  8. Optional: Ändern Sie die erweiterten Einstellungen.
    1. Klicken Sie auf Erweiterte Einstellungen.

      Das Fenster Erweiterte Einstellungen wird angezeigt.

    2. Wechseln Sie zur Registerkarte Speicher.
    3. Klicken Sie auf den Pfeil neben Volume hinzufügen.
    4. Wählen Sie Mount-Host-Pfad binden.

      Eine neue Speicherzeile wird hinzugefügt.

    5. Klicken Sie auf .

      Das Fenster Host-Pfad wählen wird geöffnet.

    6. Suchen Sie die App-Vorlagendatei, die Sie zuvor hochgeladen haben, und wählen Sie sie aus.
    7. Klicken Sie auf Übernehmen.
    8. Geben Sie im Feld Container field /usr/share/nginx/html/TEMPLATE_FILENAME ein.
      Hinweis:

      Ersetzen SieTEMPLATE_FILENAME durch den Namen Ihrer Vorlagendatei. Beispiel: /usr/share/nginx/html/my-templates.json

    9. Wählen Sie RO.
    10. Klicken Sie auf Übernehmen.

      Container Station speichert die Speichereinstellungen.

  9. Klicken Sie auf Weiter.
  10. Überprüfen Sie die Container-Einstellungen und klicken Sie dann auf Fertigstellen.

Die App-Vorlagendatei wird zur Verwendung verfügbar gemacht.

Hinweis:

Sie können überprüfen, ob die App-Vorlagendatei zugänglich ist, indem Sie im Webbrowser http://HOST_IP_ADDRESS:PUBLISHED_HOST_PORT/TEMPLATE_FILENAME eingeben. Beispiel: http://192.168.1.1:30080/my-templates.json.

Eine benutzerdefinierte App-Vorlage mit dem QNAP-Webserver hosten

Als nächstes müssen Sie die benutzerdefinierte App-Vorlage für Container Station verfügbar machen. In diesem Thema wird der Prozess des Hostings der Vorlagendatei mit dem QNAP-Webserver erklärt.

Alternativ können Sie die App-Vorlagendatei auch mit einem NGINX-Container direkt in Container Station hosten. Siehe Eine benutzerdefinierte App-Vorlage in einem NGINX-Container hosten.

  1. Aktivieren Sie den QTS-Webserver.
    1. Melden Sie sich beim System als Administrator an.
    2. Wechseln Sie zu Systemsteuerung > Anwendungen > Webserver > Webserver.
    3. Wählen Sie Webserver aktivieren.
    4. Optional: Konfigurieren Sie die Webserver-Einstellungen.
    5. Klicken Sie auf Übernehmen.

      Das System aktiviert den Webserver

  2. Laden Sie die benutzerdefinierte App-Vorlagendatei hoch.
    1. Öffnen Sie File Station.
    2. Navigieren Sie zu dem für den Webserver erstellten Ordner Web.
    3. Laden Sie die App-Vorlagendatei hoch.

Die App-Vorlagendatei wird zur Verwendung verfügbar gemacht.

Hinweis:

Sie können überprüfen, ob die App-Vorlagendatei zugänglich ist, indem Sie im Webbrowser http://HOST_IP_ADDRESS:WEB_SERVER_PORT/TEMPLATE_FILENAME eingeben. Beispiel: http://192.168.1.1:80/my-templates.json.

Eine benutzerdefinierte App-Vorlage zu Container Station hinzufügen

Der nächste Schritt besteht darin, die benutzerdefinierte App-Vorlagendatei zu Container Station hinzuzufügen. Damit wird die Liste der Anwendungen in Container Station verfügbar.

  1. Starten Sie Container Station.
  2. Klicken Sie im Menü auf Voreinstellungen.
  3. Wechseln Sie zu App-Vorlagen.
  4. Wählen Sie Benutzerdefinierte Vorlage aktivieren.
  5. Geben Sie die URL zu einer benutzerdefinierten App-Vorlage an.
    Hinweis:

    Je nach Ihrer Konfiguration müssen Sie bei der URL die IP-Adresse und die Portnummer des konfigurierten Webservers angeben. Beispiel: http://192.168.1.1:30080/my-template-file.json.

  6. Klicken Sie auf Übernehmen.

Container Station speichert die benutzerdefinierte App-Vorlage.

Eine benutzerdefinierte App-Vorlage bereitstellen

Der letzte Schritt besteht darin, einen Container aus der benutzerdefinierten App-Vorlagendatei bereitzustellen, die Sie im vorherigen Schritt hinzugefügt haben.

  1. Wechseln Sie im Menü zu App-Vorlagen.
  2. Wechseln Sie zur Registerkarte Benutzerdefinierte Vorlagen.
  3. Identifizieren Sie eine Vorlage.
  4. Klicken Sie auf Bereitstellen.

Der Assistent Container bereitstellen wird geöffnet. Siehe Einen Docker-Container erstellen.

War dieser Artikel hilfreich?

60% der Nutzer fanden es hilfreich.
Vielen Dank für Ihre Rückmeldung.

Bitte teilen Sie uns mit, wie dieser Artikel verbessert werden kann:

Wenn Sie zusätzliches Feedback geben möchten, fügen Sie es bitte unten ein.

Wählen Sie die Spezifikation

      Mehr anzeigen Weniger

      Diese Seite in anderen Ländern / Regionen:

      open menu
      back to top