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

NetScaler CPXは、Docker App StoreでDockerイメージファイルの形式で提供されます。NetScaler CPXイメージをDocker App Storeからダウンロードし、docker runコマンドまたはDocker Composeツールを使用してNetScaler CPXインスタンスを展開します。

前提条件

以下の点について確認してください。

  • Dockerホストシステムに以下が含まれている。
    • CPU 1つ
    • 2GBのRAM
  • Dockerホストシステムで、以下のいずれかが実行されている。
    • Linux Ubuntuバージョン14.04以降
    • Mac OS X
  • Dockerバージョン1.12がLinuxホストシステムにインストールされている。
  • Dockerホストからインターネットに接続できる。

Docker App StoreからのNetScaler CPXイメージのダウンロード

Docker App StoreからのNetScaler CPXイメージをダウンロードします。次のコマンドを実行します。

docker pull store/citrix/netscalercpx:11.1-53.11

NetScaler CPX Dockerイメージのダウンロード後に次のコマンドを使用すると、イメージの詳細を表示できます:

docker images

次に例を示します。

root@ubuntu:~# docker images
REPOSITORY    TAG       IMAGE ID       CREATED    VIRTUAL SIZE
   cpx     11.1-53.11  2e97aadf918b  43 hours ago  605.5 MB

この例の出力にある、次のフィールドに注意します。

  • REPOSITORY:イメージが格納されている名前空間を指定します。
  • TAG:インストールされているNetScaler CPXイメージのバージョンを示します。
  • IMAGE ID:Dockerホストに含まれるイメージの一意のIDを示します。

docker runコマンドを使用したNetScaler CPXインスタンスの展開

ホスト上でNetScaler CPXイメージをロードしたら、docker runコマンドを使用してNetScaler CPXインスタンスを展開します。外部通信を可能にするには、HTTPポート80、SSHポート22、およびSNMPポート161を開く必要があります。また、Dockerホストからディレクトリをマウントするようにしてください。

https://www.citrix.com/products/netscaler-adc/cpx-express.htmlからNetScaler CPX Expressをダウンロードした場合は、https://www.citrix.com/products/netscaler-adc/cpx-express.htmlのエンドユーザーライセンス契約書(EULA)を読み、NetScaler CPXインスタンスを展開する際にEULAに同意してください。

docker run -dt -p <port_number> --privileged=true -e EULA=yes --name <container_name> -v <host_directory_path>:/cpx --ulimit core=-1 cpx:11.1-52.x

各オプションの意味は次のとおりです:

  • <port_number> は、外部通信を確立するためのポート番号です。
  • <container_name> は、NetScaler CPXインスタンスの名前です。
  • *<host_directory_path>* は、NetScaler CPXインスタンスをマウントするDockerホストのディレクトリを指定します。
docker run -dt -p 22 -p 80 -p 161/udp --privileged=true -e EULA=yes --name mycpx -v /var/cpx:/cpx --ulimit core=-1 cpx:11.1-52.x

ライセンスを購入してある場合、または評価ライセンスを所有している場合は、そのライセンスをライセンスサーバーにアップロードし、docker runコマンドでライセンスサーバーの場所を指定できます。この場合は、EULAを承認する必要はありません。

docker run -dt -p 80 -p 22 -e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT> -e PLATFORM=CP1000 --name=<NAME> --hostname=<HOSTNAME> --privileged=true -v <host_directory_path>:/cpx --ulimit core=-1 <repository>:<tag>

各オプションの意味は次のとおりです:

  • LS_IPADDRESS は、ライセンスサーバーのIPアドレスです。
  • LS_PORT は、ライセンスサーバーのポートです。
  • NAMEは、コンテナの名前です。
  • HOSTNAMEは、コンテナのホスト名です。
docker run -dt -p 80 -p 22 -e LS_IP=1.2.3.4 -e LS_PORT=27000 -e PLATFORM=CP1000 --name=test --hostname=testhost --privileged=true -v /var/cpx:/cpx--ulimit core=-1 cpx:11.1.52.x

docker psコマンドを使用すると、システムで実行されているイメージと、標準ポートにマップされたポートを表示できます。

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6fe01203e7b9 cpx:11.1-53.x "/bin/sh -c 'bash -C " 7 seconds ago Up 5 seconds 443/tcp, 0.0.0.0:32769->22/tcp, 0.0.0.0:32768->80/tcp, 0.0.0.0:32768->161/udp mycpx

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

Docker Composeツールを使用して、単一または複数のNetScaler CPXインスタンスをプロビジョニングできます。Composeを使用してNetScaler CPXインスタンスをプロビジョニングするには、最初にComposeファイルを作成して、NetScaler CPXイメージ、NetScaler CPXインスタンス用に開くポート、およびNetScaler CPXインスタンスの特権を指定する必要があります。

複数のNetScaler CPXインスタンスをプロビジョニングするには:

  1. Composeファイルを作成します。Composeファイルは、一般的に次のような形式に従います:

    <service-name>:
        container_name:
        image: <repository>:<tag>
        ports:
            - 22
            - 80
        tty: true
        privileged: true
        ulimits:
        core: -1
        environment:
            - EULA=yes
        volumes:
            - <host_directory_path>:/cpx
    

各オプションの意味は次のとおりです:

-  **\<service-name>** は、プロビジョニングするサービスの名前です。
-  **image:\<repository>:\<tag>**は、NetScaler CPXイメージのリポジトリとバージョンを示します。
-  **privileged: true**は、NetScaler CPXインスタンスのすべてのroot特権を提供します。
-  \*\*\<host_directory_path>\*\* は、NetScaler CPXインスタンスをマウントするDockerホストのディレクトリを指定します。

サンプルComposeファイル:

~~~
cpx_DUT-BRIDGE_0:
container_name: cpx_DUT-BRIDGE_0_my
image: cpx:11.1-52.xx
ports:
    - 22
    - 80
tty: true
privileged: true
ulimits:
    core: -1
environment:
    - EULA=yes
volumes:
    - /var/cpx:/cpx
~~~

> **注**
>
> 単一のNetScaler CPXインスタンスをプロビジョニングする場合は、次の行をcomposeファイルに追加する必要があります(name_of_containerはコンテナ名です):
>
> **container_name:\<name_of_container>**
  1. 複数のNetScaler CPXインスタンスをプロビジョニングには次のコマンドを実行します。

    docker-compose -f <compose_file_name> scale <service-name>=<number of instances> up –d
    
    docker-compose -f docker-compose.yml scale cpxlb=3 up –d
    

    単一のNetScaler CPXインスタンスをプロビジョニングする場合は、次のコマンドを実行します:

    docker-compose -f <compose_file_name> up –d