Container Station 3 のカスタムアプリテンプレートを設定し、デプロイする方法


最終更新日: 2023-03-27

Container Station のアプリテンプレートにより、事前に設定したコンテナを QNAP 環境にデプロイできます。デフォルトでは、Container StationQNAP が検証したテンプレートの一覧を提供しますが、ご自身のニーズに合うアプリテンプレートを追加できます。そのようなカスタムアプリテンプレートは、QNAP デバイスあるいは外部 Web サーバーに直接ホストできます。

このチュートリアルでは、カスタムアプリテンプレートを QNAP デバイスにホストする2つの方法と、その カスタムアプリテンプレートにアクセスするための Container station の設定方法について解説します。

カスタムアプリテンプレートファイルを作成する

最初の手順は、カスタムアプリテンプレートファイルの作成です。デフォルトでは、Container StationQNAP デバイスでの正しい動作が検証されたコンテナの一覧を提供します。QNAP が検証したテンプレートはこちらからダウンロードして変更でき、ご自身で新しいファイルを作成することもできます。

注:

テンプレートファイルはお好きなテキストエディターで変更できます。

アプリテンプレートの形式

アプリテンプレートの定義は、JSON で書かれています。正しいテンプレートはアレイと1つまたは複数のコンテナテンプレート要素で構成されています。各コンテナテンプレート要素は、必須またはオプションのデータフィールドを含む JSON オブジェクトです。このフィールドは次の例のようになっています。

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

JSONエレメントフォーマット

タイプ

属性

説明

説明

このテンプレートに対するコンテナのタイプ (Docker または LXD)

重要

必須

形式

整数

可能な値

  • 1:Docker コンテナ用に使用されています。

  • 10:LXD コンテナ用に使用されています。

タイトル

属性

説明

説明

テンプレートのタイトル

重要

必須

形式

文字列

可能な値

任意の文字列

サブタイトル

属性

説明

説明

テンプレートバージョンの情報

重要

必須

形式

文字列

可能な値

任意の文字列

説明

属性

説明

説明

テンプレートについての情報を提供するための説明

重要

必須

形式

文字列

可能な値

任意の文字列

ロゴ

属性

説明

説明

テンプレート用ロゴの位置

重要

任意

形式

文字列

可能な値

カスタムアプリテンプレートが置かれているネットワークドメインでの正しい URL またはパス。

位置を

属性

説明

説明

テンプレート URLテンプレート用の紹介 Web ページも可能。

重要

任意

形式

文字列

可能な値

任意の正しい URL

プラットフォーム

属性

説明

説明

サポートされるプラットフォーム。正しい値である必要があります。

重要

必須

形式

文字列

可能な値

  • linux:すべてのプラットフォーム

  • linux/amd64:64ビットx86

  • linux/arm64:64ビット ARM

  • linux/arm:32ビット ARM

{
  "platform": "linux/amd64"
}

イメージ

属性

説明

説明

テンプレートに付随するイメージ

重要

必須

形式

文字列

可能な値

任意の正しいイメージ

{
  "image": "nginx:latest"
}

コマンド

属性

説明

説明

Docker コンテナで実行するコマンド指定がない場合、コンテナは Dockerfile で指定されているデフォルトコマンドを使用します。

重要

任意

形式

文字列

可能な値

任意の文字列

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

エントリーポイント

属性

説明

説明

Docker コンテナを開始するエントリーポイント指定がない場合、コンテナは Dockerfile で指定されているデフォルトエントリーポイントを使用します。

重要

任意

形式

文字列

可能な値

任意の文字列

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

env

属性

説明

説明

テンプレートが必要とする環境変数を説明する JSON アレイ。アレイ内の各要素は正しい JSON オブジェクトでなければなりません。

重要

任意

形式

アレイ

可能な値

正しい JSON アレイ

アレイフォーマット

  • 名前:(必須) コンテナイメージでサポートされる環境変数の名称。

  • :(必須) 変数に対応付けられた値。

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

ラベル

属性

説明

説明

テンプレートに対応付けられたラベルを説明する JSON アレイ。アレイ内の各要素は正しい JSON オブジェクトでなければなりません。

重要

任意

形式

アレイ

可能な値

正しい JSON アレイ

アレイフォーマット

  • 名前:(必須) ラベルキーの名称。

  • :(必須) キーに対応付けられた値。

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

ボリューム

属性

説明

説明

テンプレートに対応付けられたボリュームを説明する JSON アレイ。アレイ内の各要素は、必要なコンテナプロパティをもった正しい JSON オブジェクトでなければなりません。

重要

任意

形式

アレイ

可能な値

正しい JSON アレイ

アレイフォーマット

  • コンテナ:(必須) コンテナパス。

  • ボリューム:(オプション) Docker ボリュームの名称。

  • バインド:(Docker コンテナではオプション、LXD コンテナでは必須) バインドマウントのソースとして使用されるホストパス。

  • 読み取り専用:(オプション) true に設定されている場合は、このボリュームは読み取り専用モードでマウントされます。

{
  "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
    }
  ]
}

ポート

属性

説明

説明

テンプレートに公開されたポートを説明する JSON アレイ。アレイ内の各要素は、プロトコルだけでなくコンテナ内のポート番号を指定している正しい JSON 文字列でなければなりません。これは、ホストにマップされているポートを規定するために、ポート番号とコロンが前につく場合があります (8080: など)。ホストポートが指定されていない場合、Docker ホストはコンテナが起動した時にポートを自動的に割り当てます。

重要

任意

形式

アレイ

可能な値

正しい JSON アレイ

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

ホスト名

属性

説明

説明

コンテナのホスト名。コンテナを識別しやすくします。

重要

任意

形式

文字列

可能な値

任意の文字列

{
  "hostname": "myContainerHostName"
}

restart_policy

属性

説明

説明

Docker コンテナに対応したリスタートポリシー指定されていない場合、この値は停止時以外になります。

重要

任意

形式

文字列

可能な値

  • no:コンテナを自動的に再起動しません。

  • 不具合発生時:終了コードがゼロでないなど、エラーによる終了の場合、コンテナを再起動してください。

  • 常時:コンテナが停止した場合には常にコンテナを再起動します。手動で停止した場合は、Container Station が再起動するか、手動でコンテナを再起動しないと再起動しません。

  • 停止時以外常にとほとんど同じですが、コンテナが手動で停止した場合以外では、Container Station が再起動してもそれは再起動しません。

{
  "restart_policy": "unless-stopped"
}

auto_start_policy

属性

説明

説明

LXD コンテナに対応したオートスタートポリシー指定されていない場合、この値は保持になります。

重要

任意

形式

文字列

可能な値

  • no:コンテナを自動的に再起動しません。

  • 常時:コンテナが停止した場合には常にコンテナを再起動します。手動で停止した場合は、Container Station が再起動するか、手動でコンテナを再起動しないと再起動しません。

  • 保持常にとほとんど同じですが、コンテナが手動で停止した場合以外では、Container Station が再起動してもそれは再起動しません。

{
  "auto_start_policy": "retain"
}

インタラクティブ

属性

説明

説明

Docker コンテナがフォアグラウンドモードで起動するかどうかをコントロール。指定されていない場合、値は true になります。

重要

任意

形式

ブーリアン型

可能な値

  • true:Docker コンテナをフォアグラウンドモードで起動。

  • false:コンテナを取り外しモードで開始する。

{
  "interactive": false
}

tty

属性

説明

説明

Docker コンテナが疑似 TTY を割り当てるかどうかをコントロール。指定されていない場合は true になります。

重要

任意

形式

ブーリアン型

可能な値

  • true:疑似 TTY を Docker コンテナに割り当て

  • false:疑似 TTY を Docker コンテナに割り当てません。

{
  "tty": false
}

権限付

属性

説明

説明

コンテナが権限モードで起動するかどうかをコントロール。指定されていない場合は false になります。

重要

任意

形式

ブーリアン型

可能な値

  • true:コンテナを権限モードで開始します。

  • false:コンテナを権限モードで開始しません。

{
  "privileged": true
}

NGINX コンテナにカスタムアプリテンプレートをホストする

次に、Container Stationで利用できるカスタムアプリテンプレートを作る必要があります。このトピックでは、NGINX コンテナでテンプレートファイルをホスティングし、Container Stationで実行されるプロセスを説明します。

それ以外にもアプリテンプレートファイルはQNAP Web サーバーにもホストできます。詳細については、「QNAP Web サーバーにカスタムアプリテンプレートをホストする」をご覧ください。

重要:

カスタムアプリテンプレートJSONファイルを更新した後は、コンテナ内で変更を反映させるためにNGINXコンテナを再起動する必要があります。

  1. カスタムアプリテンプレートファイルアップロードします。
    1. File Stationを開きます。
    2. デバイス上のフォルダーに移動します。
    3. アプリテンプレートファイルをアップロードします。
    4. 後で使用するためにテンプレートファイルの場所をメモしてください。
  2. Container Stationを開きます。
  3. トップパネルで、エクスプローラーのとなりの矢印をクリックします
  4. [コンテナの作成]を選択します。

    コンテナの作成ウィンドウが開きます。

  5. イメージを選択します。

    設定

    アクション

    モード

    [基本モード]を選択します。

    レジストリ

    [Docker Hub]を選択します。

    イメージ

    nginxを入力します.

  6. [次へ]をクリックします。
  7. 任意: コンテナの設定を行います。

    設定

    アクション

    名前

    コンテナの名称を入力します。例:nginx-my-template.

    オートスタートポリシー

    [停止しない限り]を選択します。

    このオプションは、コンテナをユーザーが手動で停止していない限り必ず再起動します。

    ネットワーク設定

    ネットワーク環境に適した設定を行います。

    このチュートリアルでは、デフォルトのネットワークモードを使用し、コンテナをホスト上のポート30080で送信します。

    注:

    ホストフィールドが指定されていない場合は、公開ポートはコンテナが再起動された後に変わることがあります。その場合、アプリテンプレートはContainer Stationにアクセスできなくなります。

  8. 任意: 詳細設定を変更します。
    1. [詳細設定]をクリックします。

      詳細設定ウィンドウが開きます。

    2. [ストレージ]タブに進みます。
    3. [ボリュームの追加]の隣の矢印をクリックします。
    4. [マウントされたホストのパスをバインド]を選択します。

      新しいストレージ列が追加されます。

    5. をクリックします。

      ホストパスの選択ウィンドウが開きます。

    6. 先にアップロードしたアプリテンプレートファイルを見つけて、選択します。
    7. [適用]をクリックします。
    8. [コンテナ]フィールドで、/usr/share/nginx/html/TEMPLATE_FILENAMEを入力します。
      注:

      テンプレートTEMPLATE_FILENAMEをご自分のテンプレートファイル名に入れ替えます。例:/usr/share/nginx/html/my-templates.json

    9. [RO]を選択します。
    10. [適用]をクリックします。

      Container Stationが、ストレージ設定を保存します。

  9. [次へ]をクリックします。
  10. コンテナ設定を確認してから、[完了]をクリックします。

アプリテンプレートファイルが利用可能になります。

注:

アプリテンプレートファイルがアクセス可能かどうかは、Web ブラウザに http://HOST_IP_ADDRESS:PUBLISHED_HOST_PORT/TEMPLATE_FILENAME を入力します。たとえば、http://192.168.1.1:30080/my-templates.json のような形です。

QNAP Web サーバーにカスタムアプリテンプレートをホストする

次に、Container Stationで利用できるカスタムアプリテンプレートを作る必要があります。このトピックでは、QNAP Web サーバーでテンプレートファイルをホスティングするプロセスを説明します。

それ以外にも、アプリテンプレートファイルは、Container Station内で直接NGINXコンテナでホストすることができます。「NGINX コンテナにカスタムアプリテンプレートをホストする」を参照してください。

  1. QTS Web サーバーを有効化します。
    1. 管理者として システム にログオンします。
    2. [コントロールパネル] > [アプリケーション] > [Web サーバー] > [Web サーバー]に進みます。
    3. [Web サーバーを有効にする]を選択します。
    4. 任意: Web サーバーを設定します。
    5. [適用]をクリックします。

      システムが Web サーバーを有効にします。

  2. カスタムアプリテンプレートファイルアップロードします。
    1. File Stationを開きます。
    2. この Web サーバー用に作られた Web フォルダーに進みます。
    3. アプリテンプレートファイルをアップロードします。

アプリテンプレートファイルが利用可能になります。

注:

アプリテンプレートファイルがアクセス可能かどうかは、Web ブラウザに http://HOST_IP_ADDRESS:WEB_SERVER_PORT/TEMPLATE_FILENAME を入力します。たとえば、http://192.168.1.1:80/my-templates.json のような形です。

Container Station にカスタムアプリテンプレートを追加する

次に、Container Stationにカスタムアプリテンプレートを追加します。これにより、アプリケーションの一覧が Container Station 内で利用可能になります。

  1. Container Station を起動します。
  2. メニュー上で、[環境設定]をクリックします。
  3. [アプリテンプレート]に進みます。
  4. [カスタムテンプレートを有効にする]を選択します。
  5. カスタムアプリテンプレートに URL を指定します。
    注:

    設定によっては、URL に設定する Web サーバーの IP アドレスとポート番号が必要になります。例:http://192.168.1.1:30080/my-template-file.json.

  6. [適用]をクリックします。

Container Station が、カスタムアプリテンプレートを保存します。

カスタムアプリテンプレートをデプロイする

最後の手順は、前の手順で追加したカスタムアプリテンプレートファイルからコンテナをデプロイすることです。

  1. メニューで、[アプリテンプレート]に進みます。
  2. [カスタムテンプレート]タブに進みます。
  3. テンプレートを見つけます。
  4. [デプロイ]をクリックします。

コンテナのデプロイウィザードが開きます。「Dockerコンテナを作成する」を参照してください。

この記事は役に立ちましたか?

60% の人が、これは役に立つと思っています。
ご意見をいただき、ありがとうございます。

この記事の改善箇所をお知らせください。

その他のフィードバックがある場合は、以下に入力してください。

仕様を選択

      もっと見る 閉じる

      当ページを他の国/地域で見る:

      気軽にお問い合わせ! show inquiry button
      open menu
      back to top