Instrukcja obsługi Jak skonfigurować i wdrożyć niestandardowe szablony aplikacji w Container Station 3?

Szablony aplikacji w Container Station umożliwiają wdrażanie wstępnie skonfigurowanych kontenerów w środowisku QNAP. Domyślnie Container Station udostępnia kolekcję szablonów zweryfikowanych przez QNAP (QNAP-Verified Templates), ale możesz dodawać własne niestandardowe szablony aplikacji, aby spełnić swoje specyficzne potrzeby. Niestandardowe szablony aplikacji możesz hostować bezpośrednio na urządzeniu QNAP lub na zewnętrznym serwerze WWW.

Ten samouczek opisuje dwie metody hostowania niestandardowych szablonów aplikacji na urządzeniu QNAP oraz sposób konfigurowania Container Station w celu uzyskania dostępu do tych niestandardowych szablonów aplikacji.

  • Tworzenie pliku niestandardowego szablonu aplikacji
  • Hostowanie niestandardowego szablonu aplikacji w kontenerze NGINX
  • Hostowanie niestandardowego szablonu aplikacji przy użyciu serwera WWW QNAP
  • Dodawanie niestandardowego szablonu aplikacji do Container Station
  • Wdrażanie niestandardowego szablonu aplikacji

Tworzenie pliku niestandardowego szablonu aplikacji​


Pierwszym krokiem jest utworzenie pliku niestandardowego szablonu aplikacji. Domyślnie Container Station udostępnia listę kontenerów, które zostały zweryfikowane pod kątem poprawnego działania z urządzeniem QNAP. Możesz pobrać i zmodyfikować szablony zweryfikowane przez QNAP (QNAP-Verified Templates) tutaj lub samodzielnie utworzyć nowy plik.
Uwaga:
Plik szablonu można modyfikować w dowolnym edytorze tekstu.

Format szablonu aplikacji


Definicje szablonów aplikacji są zapisywane w formacie JSON. Prawidłowe szablony składają się z tablicy oraz jednego lub więcej elementów szablonu kontenera. Każdy element szablonu kontenera jest obiektem JSON zawierającym obowiązkowe lub opcjonalne pola danych. Format powinien być podobny do poniższego przykładu:

Kod:
{
"templates": [
{
// template1
},
{
// template2
},
...
]
}

Format elementu JSON​


type​


AtrybutOpis
OpisTyp kontenera (Docker lub LXD) dla tego szablonu.
WażnośćWymagany
FormatLiczba całkowita
Akceptowane wartości
  • 1: Używane dla kontenerów Docker.
  • 10: Używane dla kontenerów LXD.

title​


AtrybutOpis
OpisTytuł szablonu.
WażnośćWymagany
FormatCiąg znaków
Akceptowane wartościDowolny ciąg znaków

sub_title​


AtrybutOpis
OpisInformacje o wersji szablonu.
WażnośćWymagany
FormatCiąg znaków
Akceptowane wartościDowolny ciąg znaków

description​


AtrybutOpis
OpisOpis służący do przekazywania informacji o szablonie.
WażnośćWymagany
FormatCiąg znaków
Akceptowane wartościDowolny ciąg znaków

logo​


AtrybutOpis
OpisLokalizacja logo szablonu.
WażnośćOpcjonalny
FormatCiąg znaków
Akceptowane wartościDowolny prawidłowy adres URL lub ścieżka względna w stosunku do domeny sieciowej, na której hostowany jest niestandardowy szablon aplikacji.

location​


AtrybutOpis
OpisAdres URL szablonu. Może to być strona internetowa z informacjami o szablonie.
WażnośćOpcjonalny
FormatCiąg znaków
Akceptowane wartościDowolny prawidłowy adres URL

platform​


AtrybutOpis
OpisObsługiwana platforma. Musi zawierać prawidłową wartość.
WażnośćWymagany
FormatCiąg znaków
Akceptowane wartości
  • linux: Każda platforma
  • linux/amd64: 64-bitowy x86
  • linux/arm64: 64-bitowy ARM
  • linux/arm: 32-bitowy ARM
Przykład
Kod:
{
"platform": "linux/amd64"
}

image​


AtrybutOpis
OpisObraz skojarzony z szablonem.
WażnośćWymagany
FormatCiąg znaków
Akceptowane wartościDowolny prawidłowy obraz
Przykład
Kod:
{
"image": "nginx:latest"
}

command​


AtrybutOpis
OpisPolecenie do uruchomienia w kontenerze Docker. Jeśli nie zostanie określone, kontener użyje domyślnego polecenia zdefiniowanego w pliku Dockerfile.
WażnośćOpcjonalny
FormatCiąg znaków
Akceptowane wartościDowolny ciąg znaków
Przykład
Kod:
{
"command": "nginx -g 'daemon off;'"
}

entrypoint​


AtrybutOpis
OpisPunkt wejścia do uruchomienia kontenera Docker. Jeśli nie zostanie określony, kontener użyje domyślnego punktu wejścia zdefiniowanego w pliku Dockerfile.
WażnośćOpcjonalny
FormatCiąg znaków
Akceptowane wartościDowolny ciąg znaków
Przykład
Kod:
{
"entrypoint": "/docker-entrypoint.sh"
}

env​


AtrybutOpis
OpisTablica JSON opisująca zmienne środowiskowe wymagane przez szablon. Każdy element tablicy musi być prawidłowym obiektem JSON.
WażnośćOpcjonalny
FormatTablica
Akceptowane wartościPrawidłowa tablica JSON
Format tablicy
  • name: (Wymagany) Nazwa zmiennej środowiskowej obsługiwanej w obrazie kontenera.
  • value: (Wymagana) Wartość skojarzona ze zmienną.
Przykład
Kod:
{
"env": [
{ "name": "ENV_VAR1", "value": "" },
{ "name": "ENV_VAR2", "value": "value2" }
]
}

labels​


AtrybutOpis
OpisTablica JSON opisująca etykiety skojarzone z szablonem. Każdy element tablicy musi być prawidłowym obiektem JSON.
WażnośćOpcjonalny
FormatTablica
Akceptowane wartościPrawidłowa tablica JSON
Format tablicy
  • name: (Wymagany) Nazwa klucza etykiety.
  • value: (Wymagana) Wartość skojarzona z kluczem.
Przykład
Kod:
{
"labels": [
{ "name": "com.example.vendor", "value": "Acme Incorporated" },
{ "name": "com.example.label-with-value", "value": "foo" },
{ "name": "version", "value": "1.0" }
]
}

volumes​


AtrybutOpis
OpisTablica JSON opisująca woluminy powiązane z szablonem. Każdy element tablicy musi być prawidłowym obiektem JSON z wymaganą właściwością container.
WażnośćOpcjonalne
FormatTablica
Akceptowane wartościPrawidłowa tablica JSON
Format tablicy
  • container: (Wymagane) Ścieżka kontenera.
  • volume: (Opcjonalne) Nazwa woluminu Docker.
  • bind: (Opcjonalne dla kontenerów Docker, wymagane dla kontenerów LXD) Ścieżka hosta używana jako źródło montowania bind.
  • readonly: (Opcjonalne) Jeśli ustawione na true, wolumin jest montowany w trybie tylko do odczytu.
Przykład
Kod:
{
"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​


AtrybutOpis
OpisTablica JSON opisująca porty udostępniane przez szablon. Każdy element tablicy musi być prawidłowym ciągiem JSON określającym numer portu w kontenerze oraz protokół. Opcjonalnie można poprzedzić go numerem portu i dwukropkiem (na przykład 8080:), aby zdefiniować port mapowany na hoście. Jeśli port hosta nie zostanie określony, host Docker automatycznie przypisuje port przy uruchamianiu kontenera.
WażnośćOpcjonalne
FormatTablica
Akceptowane wartościPrawidłowa tablica JSON
Przykład
Kod:
{
"ports": ["8080:80/tcp", "443/tcp", "80/udp"]
}

hostname​


AtrybutOpis
OpisNazwa hosta kontenera. Może ułatwić identyfikację kontenera.
WażnośćOpcjonalne
FormatCiąg znaków
Akceptowane wartościDowolna wartość ciągu znaków
Przykład
Kod:
{
"hostname": "myContainerHostName"
}

restart_policy​


AtrybutOpis
OpisZasada ponownego uruchamiania powiązana z kontenerem Docker. Jeśli nie zostanie określona, wartość domyślna to unless-stopped.
WażnośćOpcjonalne
FormatCiąg znaków
Akceptowane wartości
  • no: Nie uruchamiaj kontenera ponownie automatycznie.
  • on-failure: Uruchom ponownie kontener, jeśli zakończy działanie z powodu błędów, takich jak niezerowy kod wyjścia.
  • always: Zawsze uruchamiaj ponownie kontener, jeśli zostanie zatrzymany. Jeśli zostanie zatrzymany ręcznie, uruchomi się ponownie tylko po ponownym uruchomieniu aplikacji Container Station lub ręcznym ponownym uruchomieniu kontenera.
  • unless-stopped: Podobnie jak Always, z tą różnicą, że jeśli kontener zostanie zatrzymany ręcznie, nie uruchomi się ponownie nawet po ponownym uruchomieniu aplikacji Container Station.
Przykład
Kod:
{
"restart_policy": "unless-stopped"
}

auto_start_policy​


AtrybutOpis
OpisZasada automatycznego uruchamiania powiązana z kontenerem LXD. Jeśli nie zostanie określona, wartość domyślna to retain.
WażnośćOpcjonalne
FormatCiąg znaków
Akceptowane wartości
  • no: Nie uruchamiaj kontenera ponownie automatycznie.
  • always: Zawsze uruchamiaj ponownie kontener, jeśli zostanie zatrzymany. Jeśli zostanie zatrzymany ręcznie, uruchomi się ponownie tylko po ponownym uruchomieniu aplikacji Container Station lub ręcznym ponownym uruchomieniu kontenera.
  • retain: Podobnie jak Always, z tą różnicą, że jeśli kontener zostanie zatrzymany ręcznie, nie uruchomi się ponownie nawet po ponownym uruchomieniu aplikacji Container Station.
Przykład
Kod:
{
"auto_start_policy": "retain"
}

interactive​


AtrybutOpis
OpisOkreśla, czy kontener Docker powinien być uruchamiany w trybie pierwszoplanowym. Jeśli nie zostanie określone, wartość domyślna to true.
WażnośćOpcjonalne
FormatWartość logiczna
Akceptowane wartości
  • true: Uruchom kontener Docker w trybie pierwszoplanowym.
  • false: Uruchamia kontener w trybie odłączonym.
Przykład
Kod:
{
"interactive": false
}

tty​


AtrybutOpis
OpisOkreśla, czy kontenerowi Docker powinien zostać przydzielony pseudo-TTY. Jeśli nie zostanie określone, wartość domyślna to true.
WażnośćOpcjonalne
FormatWartość logiczna
Akceptowane wartości
  • true: Przydziela pseudo-TTY do kontenera Docker.
  • false: Nie przydziela pseudo-TTY do kontenera Docker.
Przykład
Kod:
{
"tty": false
}

privileged​


AtrybutOpis
OpisOkreśla, czy kontener powinien być uruchamiany w trybie uprzywilejowanym. Jeśli nie zostanie określone, wartość domyślna to false.
WażnośćOpcjonalne
FormatWartość logiczna
Akceptowane wartości
  • true: Uruchamia kontener w trybie uprzywilejowanym.
  • false: Nie uruchamia kontenera w trybie uprzywilejowanym.
Przykład
Kod:
{
"privileged": true
}

Hostowanie niestandardowego szablonu aplikacji w kontenerze NGINX​


Następnie należy udostępnić niestandardowy szablon aplikacji w aplikacji Container Station. W tym temacie opisano proces hostowania pliku szablonu przy użyciu kontenera NGINX uruchomionego również w aplikacji Container Station.

Alternatywnie można hostować plik szablonu aplikacji na serwerze WWW QNAP. Zobacz Hostowanie niestandardowego szablonu aplikacji przy użyciu serwera WWW QNAP.
Ważne:
Po zaktualizowaniu pliku JSON z niestandardowymi szablonami aplikacji należy uruchomić ponownie kontener NGINX, aby zmiany zostały odzwierciedlone w kontenerze.

  1. Prześlij plik niestandardowego szablonu aplikacji.
    1. Otwórz aplikację File Station.
    2. Przejdź do folderu na urządzeniu.
    3. Prześlij plik szablonu aplikacji.
      GUID-5C14E8F1-9443-4A94-B061-9C9C95CB8C06-low.png
    4. Zanotuj lokalizację pliku szablonu do późniejszego użycia.
  2. Otwórz aplikację Container Station.
  3. Na górnym panelu kliknij strzałkę obok opcji Eksploruj.
  4. Wybierz opcję Utwórz kontener.
    Zostanie otwarte okno Utwórz kontener.
  5. Wybierz obraz.
    UstawienieDziałanie
    TrybWybierz Tryb podstawowy.
    RejestrWybierz Docker Hub.
    ObrazWprowadź nginx.

    GUID-F4D7D1CA-AD05-434F-8A5E-B62B9A78A1E0-low.png
  6. Kliknij Dalej.
  7. Opcjonalnie: Skonfiguruj ustawienia kontenera.
    UstawienieDziałanie
    NazwaWprowadź nazwę kontenera. Na przykład: nginx-my-template.
    Zasada automatycznego uruchamianiaWybierz opcję Jeśli nie zatrzymano.

    Ta opcja spowoduje, że kontener będzie zawsze uruchamiany ponownie, chyba że zostanie ręcznie zatrzymany przez użytkownika.
    Konfiguracja sieciSkonfiguruj ustawienia odpowiednio do środowiska sieciowego.

    W tym samouczku używamy domyślnego trybu sieci i kierujemy ruch do kontenera przez port 30080 na hoście.
    Uwaga:
    Jeśli pole Host nie zostanie określone, opublikowany port może ulec zmianie po ponownym uruchomieniu kontenera. Może to spowodować, że szablon aplikacji stanie się niedostępny dla aplikacji Container Station.

    GUID-FEA8B37F-04EE-4D3E-8272-08DD1F21EFE4-low.png
  8. Opcjonalnie: Zmodyfikuj ustawienia zaawansowane.
    1. Kliknij Ustawienia zaawansowane.
      Pojawi się okno Ustawienia zaawansowane.
    2. Przejdź do karty Pamięć masowa.
    3. Kliknij strzałkę obok opcji Dodaj wolumin.
    4. Wybierz Bind Mount Host Path.
      Zostanie dodany nowy wiersz pamięci masowej.
    5. Kliknij
      GUID-C86A03A5-3E5F-4EC7-9F04-4FF3CA5EE246-low.png

      .
      Otworzy się okno Wybierz ścieżkę hosta.
    6. Znajdź i wybierz wcześniej przesłany plik szablonu aplikacji.
    7. Kliknij Zastosuj.
    8. W polu Kontener wprowadź /usr/share/nginx/html/TEMPLATE_FILENAME. Uwaga:
      Zastąp TEMPLATE_FILENAME nazwą pliku szablonu. Na przykład: /usr/share/nginx/html/my-templates.json
    9. Wybierz RO.
      GUID-FB89C46D-264E-4DBE-A423-6CFA82486F6B-low.png
    10. Kliknij Zastosuj.
      Container Station zapisuje ustawienia pamięci masowej.
  9. Kliknij Dalej.
  10. Przejrzyj ustawienia kontenera, a następnie kliknij Zakończ.

Plik szablonu aplikacji będzie dostępny do użycia.
Uwaga:
Możesz sprawdzić dostępność pliku szablonu aplikacji, wpisując w przeglądarce internetowej adres http://HOST_IP_ADDRESS:pUBLISHED_HOST_PORT/TEMPLATE_FILENAME. Na przykład: http://192.168.1.1:30080/my-templates.json.

Hostowanie niestandardowego szablonu aplikacji przy użyciu serwera WWW QNAP​


Następnie musisz udostępnić niestandardowy szablon aplikacji dla Container Station. Ten temat wyjaśnia proces hostowania pliku szablonu przy użyciu serwera WWW QNAP.

Alternatywnie możesz również hostować plik szablonu aplikacji w kontenerze NGINX bezpośrednio w Container Station. Zobacz Hostowanie niestandardowego szablonu aplikacji w kontenerze NGINX.

  1. Włącz serwer WWW QTS.
    1. Zaloguj się do systemu jako administrator.
    2. Przejdź do Panelu sterowania > Aplikacje > Serwer WWW > Serwer WWW.
    3. Wybierz Włącz serwer WWW.
      GUID-06CF17DF-AF9D-4C3A-9223-F51E4C31E614-low.png
    4. Opcjonalnie: Skonfiguruj ustawienia serwera WWW.
    5. Kliknij Zastosuj.
      System włącza serwer WWW.
  2. Prześlij niestandardowy plik szablonu aplikacji.
    1. Otwórz Menedżera plików.
    2. Przejdź do folderu Web utworzonego dla serwera WWW.
      GUID-718C9F83-7009-42D0-ADEA-8F00E56518E3-low.png
    3. Prześlij plik szablonu aplikacji.

Plik szablonu aplikacji będzie dostępny do użycia.
Uwaga:
Możesz sprawdzić dostępność pliku szablonu aplikacji, wpisując w przeglądarce internetowej adres http://HOST_IP_ADDRESS:WEB_SERVER_PORT/TEMPLATE_FILENAME. Na przykład: http://192.168.1.1:80/my-templates.json.

Dodawanie niestandardowego szablonu aplikacji do Container Station​


Następnym krokiem jest dodanie niestandardowego pliku szablonu aplikacji do Container Station. Dzięki temu lista aplikacji będzie dostępna w Container Station.

  1. Uruchom Container Station.
  2. W menu kliknij Preferencje.
  3. Przejdź do karty Szablony aplikacji.
  4. Wybierz Włącz niestandardowy szablon.
  5. Podaj adres URL niestandardowego szablonu aplikacji. Uwaga:
    W zależności od konfiguracji adres URL może wymagać podania adresu IP i numeru portu skonfigurowanego serwera WWW. Na przykład: http://192.168.1.1:30080/my-template-file.json.

    GUID-069F2C11-2E87-4BFB-9A00-1D6A4FF32BAE-low.png
  6. Kliknij Zastosuj.

Container Station zapisuje niestandardowy szablon aplikacji.

Wdrażanie niestandardowego szablonu aplikacji​


Ostatnim krokiem jest wdrożenie kontenera na podstawie niestandardowego pliku szablonu aplikacji dodanego w poprzednim kroku.

  1. W menu przejdź do Szablonów aplikacji.
  2. Przejdź do karty Szablony niestandardowe.
  3. Zidentyfikuj szablon.
    GUID-C54D6580-E430-4476-BF55-C7DD9FD921E8-low.png
  4. Kliknij Wdróż.

Otworzy się kreator Wdrożenie kontenera. Zobacz Tworzenie kontenera Docker.