DockerでのNetScaler CPXインスタンスの展開

最終公開日 : Oct 02, 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と4GBのメモリが含まれている必要があります。
  • Dockerホストシステムは、Linux Ubuntuバージョン14.04以降を実行していること。
  • ホストシステムにDockerバージョン1.12がインストールされていること。LinuxへのDockerのインストールについては、Docker Documentationを参照してください。
  • Dockerホストがインターネットに接続されていること。
    注: NetScaler CPXは、Ubuntuバージョン16.04.5、カーネルバージョン4.4.0-131-genericで実行すると問題が発生します。そのため、NetScaler CPXをUbuntuバージョン16.04.5、カーネルバージョン4.4.0-131-genericで実行することはお勧めしません。
    注: 以下の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イメージにインストールされているかどうかを確認するには、次のコマンドを使用します。
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 --name <cpx_container_name> <REPOSITORY>:<CPX-IMAGE_TAG_IN_QUAY>
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 quay.io/citrix/citrix-k8s-cpx-ingress:14.1-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を使用
  • SNMPには161/UDPを使用します。
静的ポートマッピングが必要な場合は、-p パラメータを使用して手動で設定します。
--privileged=true オプションは、コンテナを特権モードで実行するために使用されます。NetScaler CPX をデプロイのホストモードで実行している場合、NetScaler CPX にすべてのシステム特権を付与する必要があります。
シングルコアまたはマルチコアでブリッジモードでNetScaler CPXを実行するには、特権モードの代わりに --cap-add=NET_ADMIN オプションを使用できます。--cap-add=NET_ADMIN オプションを使用すると、NetScaler CPXコンテナを完全なネットワーク特権で実行できます。--cap-add=NET_ADMIN オプションを使用する場合は、docker run コマンドで --sysctl kernel.shmmax=1073741824 --sysctl net.ipv6.conf.default.accept_dad=0 --sysctl kernel.core_pattern=/var/crash/core.%e.%p.%s オプションを使用して、追加のシステム制御設定を手動で行います。これらの追加のシステム制御設定は、非特権モードでは自動的に行われません。
**--net=host は、コンテナがホストネットワークスタックで実行されており、すべてのネットワークデバイスにアクセスできることを指定する標準の docker run コマンドオプションです。
注
NetScaler CPX をブリッジまたはなしのネットワークで実行している場合は、このオプションを無視してください。
-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を解放するため、スループットパフォーマンスが低下します。このようなシナリオでは、 CPX_CONFIG 環境変数を使用してNetScaler CPXコンテナのスループットパフォーマンスを制御できます。 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.x
docker 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. コンポーズファイルを記述します。ここで、:
  • \&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と4GBのメモリが含まれている必要があります。
コンポーズファイルは一般的に、次のような形式に従います。
<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