DockerでNetScaler CPXインスタンスを展開する

最終公開日 : Sep 25, 2026
NetScaler CPXインスタンスは、QuayコンテナレジストリでDockerイメージファイルとして利用できます。インスタンスを展開するには、QuayコンテナレジストリからNetScaler CPXイメージをダウンロードし、docker runコマンドまたはDocker composeツールを使用してインスタンスを展開します。

前提条件

以下を確認してください。
  • Dockerホストシステムには、少なくとも以下が必要です。
    • 1 CPU
    • 2 GB RAM
      注:
      NetScaler CPXのパフォーマンスを向上させるために、NetScaler CPXインスタンスが起動する処理エンジンの数を定義できます。追加する処理エンジンごとに、Dockerホストに同等のvCPU数とGB単位のメモリが含まれていることを確認してください。たとえば、4つの処理エンジンを追加する場合、Dockerホストには4つのvCPUと4 GBのメモリが含まれている必要があります。
  • Dockerホストシステムは、Linux Ubuntuバージョン14.04以降を実行していること。
  • ホストシステムにDockerバージョン1.12がインストールされていること。LinuxへのDockerのインストールについては、Docker Documentationを参照してください。
  • Dockerホストがインターネットに接続されていること。
    注: NetScaler CPXは、ubuntuバージョン16.04.5、カーネルバージョン4.4.0-131-genericで実行すると問題が発生します。したがって、ubuntuバージョン16.04.5、カーネルバージョン4.4.0-131-genericでNetScaler CPXを実行することはお勧めしません。
    注: 以下のkubeletおよびkube-proxyバージョンにはいくつかのセキュリティ脆弱性があり、これらのバージョンでNetScaler CPXを使用することはお勧めしません。
    • kubelet/kube-proxy v1.18.0-1.18.3
    • kubelet/kube-proxy v1.17.0-1.17.6
    • kubelet/kube-proxy <=1.16.10
    この脆弱性を軽減する方法については、「この脆弱性を軽減する」を参照してください。

Quay から NetScaler CPX イメージをダウンロードする

docker pull コマンドを使用して、Quay コンテナレジストリから NetScaler CPX イメージをダウンロードし、お使いの環境にデプロイできます。Quay コンテナレジストリから NetScaler CPX イメージをダウンロードするには、次のコマンドを使用します。
docker pull quay.io/citrix/citrix-k8s-cpx-ingress:13.0-xx.xx
たとえば、バージョン 13.0-64.35 をダウンロードする場合は、次のコマンドを使用します。
docker pull quay.io/citrix/citrix-k8s-cpx-ingress:13.0-64.35
NetScaler CPX イメージが docker images にインストールされているかどうかを確認するには、次のコマンドを使用します。
root@ubuntu:~# docker images | grep 'citrix-k8s-cpx-ingress'
quay.io/citrix/citrix-k8s-cpx-ingress                  13.0-64.35          952a04e73101        2 months ago        469 MB
最新の NetScaler CPX イメージは、Quay コンテナレジストリ からデプロイできます。

docker run コマンドを使用して NetScaler CPX インスタンスをデプロイする

ホスト上で、ホストにロードした NetScaler CPX Docker イメージを使用して、Docker コンテナに NetScaler CPX インスタンスをインストールできます。docker run コマンドを使用して、デフォルトの NetScaler CPX 構成で NetScaler CPX インスタンスをインストールします。
次の docker run コマンドを使用して、Docker コンテナに NetScaler CPX インスタンスをインストールします。
docker run -dt -P --privileged=true --net=host –e NS_NETMODE=”HOST” -e CPX_CORES=<number of cores> --name <container_name> --ulimit core=-1 -e CPX_NW_DEV='<INTERFACES>' -e CPX_CONFIG=’{“YIELD”:”NO”}’ -e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT> e PLATFORM=CP1000 -v <host_dir>:/cpx <REPOSITORY>:<TAG>docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e CPX_NW_DEV='eth1 eth2' -e CPX_CORES=5 –e CPX_CONFIG='{"YIELD":"No"}' -e LS_IP=10.102.38.134 -e PLATFORM=CP1000 -v /var/cpx:/cpx --name cpx_host cpx:13.0-x.x
この例では、NetScaler CPX Docker イメージに基づいて mycpx という名前のコンテナを作成します。
-P パラメータは必須です。これは、NetScaler CPX Docker イメージによってコンテナで公開されているポートをマップするように Docker に指示します。つまり、ポート 9080、22、9443、および 161/UDP を、ユーザー定義の範囲からランダムに選択された Docker ホスト上のポートにマップします。このマッピングは、競合を回避するために行われます。同じ Docker ホスト上に複数の NetScaler CPX コンテナを後で作成する場合。ポートマッピングは動的であり、コンテナが起動または再起動されるたびに設定されます。ポートは次のように使用されます。
  • 9080 は HTTP に使用されます
  • 9443 は HTTPs に使用されます
  • SSHに使用される22
  • 161/UDPはSNMPに使用されます。
静的ポートマッピングが必要な場合は、-pパラメータを使用して手動で設定します。
--privileged=trueオプションは、コンテナを特権モードで実行するために使用されます。NetScaler CPXをホストモードで展開している場合、NetScaler CPXにすべてのシステム特権を付与する必要があります。NetScaler CPXをシングルコアまたはマルチコアでブリッジモードで実行したい場合は、このオプションの代わりに--cap-add=NET_ADMINオプションを使用できます。--cap-add=NET_ADMINオプションを使用すると、NetScaler CPXコンテナを完全なネットワーク特権で実行できます。
The**--net=host は、コンテナがホストネットワークスタックで実行され、すべてのネットワークデバイスにアクセスできることを指定する標準のdocker runコマンドオプションです。
注
NetScaler CPXをブリッジまたはnoneネットワークで実行している場合は、このオプションを無視してください。
The -e NS_NETMODE="HOST" は、NetScaler CPXがホストモードで起動されることを指定できるNetScaler CPX固有の環境変数です。NetScaler CPXがホストモードで起動すると、NetScaler CPXへの管理アクセス用にホストマシンに4つのデフォルトのiptablesルールを設定します。以下のポートを使用します。
  • HTTP用9995
  • HTTPS用9996
  • SSH用9997
  • SNMP用9998
異なるポートを指定したい場合は、以下の環境変数を使用できます。
  • -e NS_HTTP_PORT=
  • -e NS_HTTPS_PORT=
  • -e NS_SSH_PORT=
  • -e NS_SNMP_PORT=
注
NetScaler CPXをブリッジネットワークまたはなしネットワークで実行している場合は、この環境変数を無視してください。
-e CPX_CORES は、オプションのNetScaler CPX固有の環境変数です。NetScaler CPXコンテナが起動する処理エンジンの数を定義することで、NetScaler CPXインスタンスのパフォーマンスを向上させるために使用できます。
注:
  • 追加する処理エンジンごとに、Dockerホストに同等の数のvCPUとGB単位のメモリが含まれていることを確認してください。たとえば、4つの処理エンジンを追加したい場合、Dockerホストには4つのvCPUと4GBのメモリが含まれている必要があります。
  • NetScaler CPXは1~16コアをサポートできます。
-e EULA = yes は必須のNetScaler CPX固有の環境変数であり、Citrixライセンスシステムコンポーネント で入手可能なエンドユーザーライセンス契約 (EULA) を読み、理解したことを確認するために必要です。
-e PLATFORM=CP1000 パラメータは、NetScaler CPXのライセンスタイプを指定します。
ホストネットワークでDockerを実行している場合、-e CPX_NW_DEV 環境変数を使用して、専用のネットワークインターフェースをNetScaler CPXコンテナに割り当てることができます。ネットワークインターフェースは空白で区切って定義する必要があります。定義したネットワークインターフェースは、NetScaler CPXコンテナをアンインストールするまでNetScaler CPXコンテナによって保持されます。NetScaler CPXコンテナがプロビジョニングされると、割り当てられたすべてのネットワークインターフェースがNetScalerネットワーク名前空間に追加されます。
注
NetScaler CPXをブリッジネットワークで実行している場合、コンテナネットワークを変更できます。たとえば、コンテナへの別のネットワーク接続を構成したり、既存のネットワークを削除したりできます。その後、更新されたネットワークを使用するためにNetScaler CPXコンテナを再起動してください。
docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e EULA=yes -e CPX_NW_DEV='eth1 eth2' -e CPX_CORES=5 -e PLATFORM=CP1000 --name cpx_host cpx:13.0-x.x
-e CPX_CONFIG は、NetScaler CPXコンテナのスループットパフォーマンスを制御できるNetScaler CPX固有の環境変数です。NetScaler CPXが処理する受信トラフィックを受け取らない場合、アイドル時にCPUを解放するため、スループットパフォーマンスが低下します。このようなシナリオでNetScaler CPXコンテナのスループットパフォーマンスを制御するには、CPX_CONFIG 環境変数を使用できます。CPX_CONFIG 環境変数には、JSON形式で以下の値を指定する必要があります。
  • アイドル状態のシナリオでNetScaler CPXコンテナにCPUを解放させたい場合は、{"YIELD” : “Yes”} を定義します。
  • NetScaler CPXコンテナがアイドル状態のシナリオでCPUを解放しないようにして、高いスループット性能を得たい場合は、{“YIELD” : “No”}を定義します。
docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e EULA=yes -e CPX_CORES=5 –e CPX_CONFIG='{"YIELD":"No"}' -e PLATFORM=CP1000 --name cpx_host cpx:13.0-x.xdocker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e EULA=yes -e CPX_CORES=5 –e CPX_CONFIG='{"YIELD":"Yes"}' -e PLATFORM=CP1000 --name cpx_host cpx:13.0-x.x
–vパラメータは、NetScaler CPXマウントディレクトリ/cpxのマウントポイントを指定するオプションパラメータです。マウントポイントとは、ホスト上のディレクトリで、そこに/cpxディレクトリをマウントします。/cpxディレクトリには、ログ、構成ファイル、SSL証明書、コアダンプファイルが保存されます。この例では、マウントポイントは/var/cpxで、NetScaler CPXマウントディレクトリは/cpxです。
ライセンスを購入した場合、または評価ライセンスをお持ちの場合は、ライセンスをライセンスサーバーにアップロードし、-e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT>パラメータを使用してdocker runコマンドでライセンスサーバーの場所を指定できます。この場合、EULAに同意する必要はありません。
docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e CPX_CORES=5 –e CPX_CONFIG='{"YIELD":"No"}' -e LS_IP=10.102.38.134 -e PLATFORM=CP1000 --name cpx_host cpx:13.0-x.x
ここで、:
  • LS_IP_ADDRESSはライセンスサーバーのIPアドレスです。
  • LS_PORTはライセンスサーバーのポートです。
システムで実行されているイメージと標準ポートにマッピングされているポートは、次のコマンドを使用して表示できます: docker ps

docker runコマンドを使用したNetScaler CPXの軽量バージョンの展開

NetScalerは、ランタイムメモリ消費量が少ないNetScaler CPXの軽量バージョンを提供します。NetScaler CPXの軽量バージョンは、サービスメッシュ展開でサイドカーとして展開できます。
NetScaler CPXの軽量バージョンは、次の機能をサポートしています。
  • アプリケーションの可用性
    • L4ロードバランシングとL7コンテンツスイッチング
    • SSLオフロード
    • IPv6プロトコル変換
  • アプリケーションセキュリティ
    • L7 リライトとレスポンダー
  • シンプルな管理性
    • Web ロギング
    • AppFlow®
NetScaler CPX の軽量バージョンをインスタンス化するには、Docker run コマンドを実行する際に NS_CPX_LITE 環境変数を設定します。
docker run -dt -P --privileged=true -e NS_CPX_LITE=1 -e EULA=yes --name <container_name> --ulimit core=-1 <REPOSITORY>:<TAG>
次の例では、NetScaler CPX イメージに基づいて軽量コンテナを作成します。
docker run –dt -P --privileged=true -e NS_CPX_LITE=1 -e EULA=yes -–name lightweight --ulimit core=-1 cpx:latest
デフォルトでは、NetScaler CPX の軽量バージョンでは newnslog を使用したロギングは無効になっています。これを有効にするには、NetScaler CPX の軽量バージョンを起動する際に、NS_ENABLE_NEWNSLOG 環境変数を 1 に設定する必要があります。
次の例は、NetScaler CPX の軽量バージョンを展開する際に newnslog を使用したロギングを有効にする方法を示しています。
docker run -dt --privileged=true --ulimit core=-1 -e EULA=yes -e NS_CPX_LITE=1 -e NS_ENABLE_NEWNSLOG=1 cpx:<tag>
注: CPX の軽量バージョンは、シングルコア (CPX_CORES=1) のみをサポートします。

Docker Compose を使用した NetScaler CPX インスタンスの展開

Docker の Compose ツールを使用して、単一の NetScaler CPX インスタンスまたは複数の NetScaler CPX インスタンスをプロビジョニングできます。Docker Compose を使用して NetScaler CPX インスタンスをプロビジョニングするには、まず Compose ファイルを作成する必要があります。このファイルには、NetScaler CPX イメージ、NetScaler CPX インスタンス用に開くポート、および NetScaler CPX インスタンスの特権が指定されます。
重要
ホストに Docker Compose ツールがインストールされていることを確認してください。
複数の NetScaler CPX インスタンスをプロビジョニングするには:
  1. Compose ファイルを作成します。その際、以下を指定します。
  • \&lt;service-name> は、プロビジョニングするサービスの名前です。
  • image:\&lt;repository>:\&lt;tag> は、NetScaler CPX イメージのリポジトリとバージョンを示します。
  • privileged: true は、NetScaler CPX インスタンスにすべてのルート権限を提供します。
  • cap_add は、NetScaler CPX インスタンスにネットワーク権限を提供します。
  • \&lt;host_directory_path> は、NetScaler CPX インスタンスにマウントする Docker ホスト上のディレクトリを示します。
  • \&lt;number_processing_engine> は、NetScaler CPX インスタンスで起動する処理エンジンの数です。追加の処理エンジンごとに、Docker ホストに同等の数の vCPU と GB 単位のメモリが含まれていることを確認してください。たとえば、4 つの処理エンジンを追加する場合、Docker ホストには 4 つの vCPU と 4 GB のメモリが含まれている必要があります。
compose ファイルは通常、次のような形式に従います。
<container_name>:
    image: <repository>:<tag>
    ports:
        -  9443
        -  22
        -  9080
        -  161/udp
    tty: true
    cap_add:
        - NET_ADMIN
    ulimits:
        core: -1
    volumes:
        - <host_directory_path>:/cpx
    environment:
        - EULA=yes
        - CPX_CORES=<number_processing_engine>
        - CPX_CONFIG='{"YIELD":"Yes"}'
CPX_0:
    image: quay.io/citrix/citrix-k8s-cpx-ingress:13.1-37.38
    ports:
        -  9443
        -  22
        -  9080
        -  161/udp
    tty: true
    cap_add:
        - NET_ADMIN
    ulimits:
        core: -1
    volumes:
        - /root/test:/cpx
    environment:
        -  CPX_CORES=2
        -  EULA=yes