Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

DockerでcJunosEvolvedを導入および管理する

このトピックをお読みになり、Dockerにインストールした後にcJunosEvolvedインスタンスを導入して管理する方法を理解できます。

このトピックでは、以下について説明します。

概要

Docker Composeは、YAMLファイルの仕様に従って設定および接続されたcJunosEvolvedルーターのトポロジーを開始するために使用されます。YAMLファイルは、その中のコンテナをそれに応じて構成し、相互に接続できるようにするレシピであるため、デプロイが大幅に簡素化されます。

このセクションでは、cJunosEvolvedの導入に関連するDocker Composeの主な機能について説明します。

Docker Compose ファイルのレイアウト例を以下に示します。サンプルファイル一式については、ジュニパーのWebサイトにあるvJunos Labsのダウンロードページを参照してください。

Docker Compose Lay Out の説明

このセクションでは、Docker Compose YAML ファイルの概要について説明します。詳細については、「デプロイ」セクションで説明します。

ファイルの services セクションには、デプロイされるコンテナーごとに次のフィールドが含まれています。

  • cJunosEvolved Dockerイメージ
  • コンテナー名
  • オプションのホスト名
  • 特権モードが使用されていることを示す必須フィールド
  • コンテナーに渡すことができる環境変数は、次の表に示されています。
  • 単一の管理イーサネットポートと、Dockerがコンテナに提供する必要があるWAN(データ)イーサネットポートを含む、各コンテナのDockerネットワークの順序と優先順位付けされたリスト。

YAML ファイルには、全体的なネットワーク セクションもあります。ここでは、各イーサネットポートのIPサブネットアドレスを指定します。これにより、Dockerはコンテナ間のインターフェイスを適切に接続して、コンテナ間でトラフィックを伝送できるようになります。トポロジ内のコンテナーの管理ポート サブネットは、同じセクションで指定する必要があります。

環境変数

Docker Compose YAMLファイルでコンテナごとに指定できる環境変数は、以下のとおりです。

表 1: 環境変数
環境変数

形容

CPTX_COSIM

BTの

「CPTX_COSIM:BT」は、BTチップセットを使用するPTX10001-36MRプラットフォームをエミュレートします。これがデフォルトの設定です。

CPTX_COSIM

BXの

「CPTX_COSIM:BX」は、BXチップセットを使用するPTX10002-36QDDプラットフォームをエミュレートしています。

CPTX_CHANNELIZED(オプション)

1

「CPTX_CHANNELIZED:1」は、BTまたはBXタイプのインターフェイスをチャネル化モードにします。この環境変数が指定されていない場合、インターフェイスはデフォルトモードである非チャネル化モードになります。

CPTX_EVOVM_CPU(オプション)

EVOVMのコア数

最低 4 つのコアが必要です。CPU ピン留めはありません。

CPTX_EVOVM_MEM_MB(オプション)

EVO VMへのメモリ容量(MB)

最低でも 6292 MB が必要です。

手記:cJunosEvolvedコンテナ全体に最低8GBのメモリが必要です。これには、EVO VM外のコンテナ内のCOSIMとQEMUも含まれます。

CPTX_AUTO_CONFIG(オプション)

1

自動プロビジョニング構成を有効にするには、「1」に設定します。自動構成は、Docker Compose で指定されたディスクを介して構成を渡すよりも優先されます。

WAN インターフェイスのマッピング

このトピックでは、Linuxスタイルの「eth」WANポート間のインターフェイスマッピングと、cJunosEvolvedの各タイプのCLIインターフェイス命名規則について詳しく説明します。

cJunosEvolved-BT非チャネル化インターフェイスマッピング

cJunosEvolvedのBTバージョンでサポートされている12の非チャネル化インターフェイスがあります。これらのインターフェイスには、et-0/0/0からet-0/0/11までの番号が付けられており、公称定格は400G です。

Docker Compose Linux の eth4 – eth15 インターフェイスは、CLI 構成の et-0/0/0 – et-0/0/11 インターフェイスに対応します。

cJunosEvolved-BTチャネル化WANインターフェイスマッピング

チャネル化を使用すると、12の非チャネル化されたBTインターフェイスを72のチャネル化されたインターフェイスに多重化できます。各チャネル化されたポートの公称速度は8x25Gです。一部の物理ポートはシャットダウンされ、チャネル化がオンになると、この表のように使用されなくなります。

表2:cJunosEvolved-BTチャネル化WANインターフェイスマッピング
CLIのチャネライズドポート 表記 ポート Docker Compose(Linuxなど)表記 速度

et-0/0/0:0からet-0/0/0:7

8

eth4 - eth11

25G x 8

et-0/0/1:0からet-0/0/1:7

8

eth12 - eth19

25G x 8

et-0/0/2:0からet-0/0/2:7

8

eth20-eth27

25G x 8

et-0/0/3:0からet-0/0/3:7

8

eth28 - eth35

25G x 8

et-0/0/4:0からet-0/0/4:3(リタイマー)

4

eth36 - eth39

25Gx4

et-0/0/5

0

-

シャットダウン

et-0/0/6:0からet-0/0/6:3(リタイマー)

4

ETH40 - ETH43

25Gx4

et-0/0/7

0

-

シャットダウン

et-0/0/8:0からet-0/0/8:7

8

eth44 - eth51

25G x 8

et-0/0/9:0からet-0/0/9:7

8

ETH52 - ETH59

25G x 8

et-0/0/10:0からet-0/0/10:7

8

eth60 - eth67

25G x 8

et-0/0/11:0からet-0/0/11:7

8

eth68 - eth75

25G x 8

cJunosEvolved-BX 非チャネル化 WAN インターフェイス マッピング

このモードは、合計 36 の WAN インターフェイスをサポートします。各インターフェイスの公称ポート速度は800G です。

Docker Compose Linux の eth4-eth39 ポートは、それぞれ CLI の et-0/0/0- et-0/0/35 インターフェイスに対応しています。

cJunosEvolved-BX チャネル化 WAN インターフェイス マッピング

各BX ASICシミュレータは、100G で72のチャネル化されたインターフェイスをサポートします。これにより、合計 144 個のチャネル化されたインターフェイスが得られます。

以下のようなCLIコマンドを使用して、非チャネル化された各インターフェイスをチャネル化し、et-0/0/0は単なる例であり、速度を100G に設定します。

以下の表は、チャネル化WANポートマッピングを示しています。各「物理」WANポートは4つのチャネルに分割されているため、チャネル化係数は4x100Gです。

表3:BXチャネル化WANポートマッピング
CLI表記のチャネライズドポート(下位72) Docker Compose Linux インターフェイス
et-0/0/0:0からet-0/0/0:3

eth4 - eth7

et-0/0/1:0からet-0/0/1:3

eth8 - eth11

et-0/0/2:0からet-0/0/2:3

eth12 - eth15

et-0/0/3:0からet-0/0/3:3

eth16 - eth19

et-0/0/4:0からet-0/0/4:3

eth20-eth23

et-0/0/5:0からet-0/0/5:3

eth24-eth27

et-0/0/6:0からet-0/0/6:3

eth28-eth31

et-0/0/7:0からet-0/0/7:3

ETH32 - ETH35

et-0/0/8:0からet-0/0/8:3

eth36 - eth39

et-0/0/9:0からet-0/0/9:3

eth40-eth43

et-0/0/10:0からet-0/0/10:3

ETH44 - ETH47

et-0/0/11:0からet-0/0/11:3

ETH48 - ETH51

et-0/0/12:0からet-0/0/12:3

ETH52 - ETH55

et-0/0/13:0からet-0/0/13:3

eth56 - eth59

et-0/0/14:0からet-0/0/14:3

eth60 - eth63

et-0/0/15:0からet-0/0/15:3

eth64 - eth67

et-0/0/16:0からet-0/0/16:3

eth68 - eth71

et-0/0/17:0からet-0/0/17:3

eth72 - eth75

チャネル化されたポート(上位 72) Docker Compose Linux 表記

et-0/0/18:0からet-0/0/18:3

eth76 - eth79

et-0/0/19:0からet-0/0/19:3

eth80 - eth83

et-0/0/20:0からet-0/0/20:3

eth84 - eth87

et-0/0/21:0からet-0/0/21:3

eth88 - eth91

et-0/0/22:0からet-0/0/22:3

eth92 - eth95

et-0/0/23:0からet-0/0/23:3

eth96 - eth99

et-0/0/24:0からet-0/0/24:3

eth100 - eth103

et-0/0/25:0からet-0/0/25:3

ETH104 - ETH107

et-0/0/26:0 から eth-0/0/26:3

eth108 - eth111

et-0/0/27:0からet-0/0/27:3

eth112 - eth115

et-0/0/28:0からet-0/0/28:3

eth116 - eth119

et-0/0/29:0からet-0/0/29:3

eth120 - eth123

et-0/0/30:0からet-0/0/30:3

ETH124 - ETH127

et-0/0/31:0からet-0/0/31:3

eth128 - eth131

et-0/0/32:0からet-0/0/32:3

ETH132 - ETH135

et-0/0/33:0からet-0/0/33:3

eth136 - eth139

et-0/0/34:0からet-0/0/34:3

eth140 - eth143

et-0/0/35:0からet-0/0/35:3

ETH144 - ETH147

cJunosEvolvedの導入

Docker Compose とそれに関連する YAML ファイルがデプロイに使用されます。

手記:

このトピックでは、Docker Composeを通じてcJunosEvolvedを展開するためのYAMLファイルのいくつかのセクションのみを取り上げます。cJunosEvolved Composeサンプルファイルの一部は、ラボのダウンロードページから、必要なコンテナイメージおよび関連ドキュメントとともにダウンロードできます。

  1. cJunosEvolved Docker Compose イメージを Ubuntu ホストにロードします。
  2. この手順のコマンドを実行して、イメージ名とその Docker タグを確認します。

    これは画像の一例にすぎません。リポジトリ名とタグ名は、Docker Compose YAML ファイルで指定する必要があります。

  3. 次の手順の説明に従って、YAML ファイルの services セクションを編集します。トポロジ内のコンテナごとにこれを行います。
  4. 以下に示すように、YAML ファイルの image フィールドを <repository:tag > に設定します。また、コンテナー名とホスト名を選択します。慣例により、ホスト名はCLI設定でホスト名として設定するものにする必要があります。container_nameは、ホストサーバーと、docker container lsdocker logs <container_nameなどのさまざまなDockerコマンドに対してコンテナを識別します。
    手記:

    YAML ファイル内の各コンテナーの特権モードが true に設定されていることを確認します。

    イメージはビルド時にタグ付けされます。以下に示すように、そのタグを使用するか、Docker を使用してタグ付けし直すことができます。

  5. YAMLファイルで環境変数を設定します。これは [サービス] セクションの下にあります。上記の「環境変数」セクションを参照してください。
    • 手記:

      BTの場合は「CPTX_COSIM:BT」に設定します

      これは、EVOVM により多くの CPU を割り当てる場合にのみ設定する必要があります。4 は既定値 (および最小値) であるため、省略可能です。これは、EVOVM にさらに MB のメモリを割り当てる場合にのみ指定します。6292 MB がデフォルト値であるため、指定する必要はありません。

    • これは、EVOVM にさらに MB のメモリを割り当てる場合にのみ指定します。6292 MB がデフォルト値であるため、指定する必要はありません。

    • cJunosEvolvedを設定するオプションの方法。設定のセクションを参照してください。
  6. 管理イーサネット ポートを編集して、IP アドレスを設定します。これは、YAML ファイル内の特定のコンテナーの services セクションの下にあります。eth0_mgmt は、YAML ファイルで管理ポートを指定します。コンテナ内の実際のインターフェイスは「eth0」であり、driver_optsで呼び出す必要があります。
    注意:
    ネットワークをインターフェイスに適切に接続するには、WAN(データ)インターフェイスを含むコンテナのすべてのインターフェイスに上記のdriver_optsスタンザを使用する必要があります。詳細については 、https://github.com/docker/compose/issues/12776 を参照してください。
    • YAML ファイルでコンテナーの CPTX_AUTO_CONFIG 環境オプションを設定していない場合は、無視されるため、YAML ファイルで WAN インターフェイス IP を指定しないでください。コンテナーが起動して実行されたら、 volume コマンドを使用して CLI 構成を渡すか、CLI を使用して IP を手動で構成する必要があります。
    • 管理インターフェイスの IP アドレスは常に YAML ファイルで設定し、ファイルの全体的なネットワーク セクションでそのサブネット IP も指定します。これにより、管理インターフェイスに割り当てられる IP アドレスを制御できます。これは、CPTX_AUTO_CONFIG使用されているかどうかに関係なく当てはまります。
    • YAML ファイルで volumes コマンドを使用して EVO CLI 設定を渡す場合は、YAML ファイルと同じ管理 IP アドレスとサブネットを「juniper.conf」で渡して構成します。
  7. 同様に、YAML ファイル内の、各コンテナーの services 句の networks サブセクションにある他のインターフェイスを編集します。最初の3つは、cJunosEvolved内部で使用するために予約されており、適切に動作させるためにはそのままにしておく必要があります。

    WAN(データ)インターフェースは、Linux 側の eth4 から始まります。必要に応じて、これらの複数があります。WAN ポートの IP アドレスは、CPTX_AUTO_CONFIG を使用している場合にのみ設定してください。

  8. Docker Compose ファイルの次のスタンザを使用して、JunosEvolved 階層 CLI 設定全体を渡すことができます。
    階層設定形式は、CLI モードで show configuration コマンドを入力したときに表示される形式です。これは、起動時にcJunosEvolvedを設定する最も包括的な方法です。このオプションを選択する場合は、Docker Compose ファイルで WAN の IP アドレスとサブネットを指定しないでください。cJunosEvolvedは、CPTX_AUTO_CONFIG設定時にYAMLファイルで指定されたIPアドレス/サブネットのみを使用します。それ以外の場合は、ディスク構成モードを使用するか、コンテナーにログインして手動で構成できます。
  9. または、「DockerでのcJunosEvolvedの設定、自動設定」セクションで指定されているように、「CPTX_AUTO_CONFIG:1」環境変数を使用することもできます。
  10. また、YAML ファイルの全体的な "networks" セクションも指定する必要があります。

    このセクションは、YAML ファイル内のすべてのコンテナーに共通であり、すべてのコンテナーに共通です。 networks セクションは、さまざまなコンテナーの services セクションの後に一覧表示されます。このセクションでは、トポロジのすべての WAN インターフェイスと管理インターフェイスを一覧表示します。各コンテナーの YAML ファイルの一致するネットワーク セクションでインターフェイスの IP アドレスを指定した場合は、全体的なネットワーク セクションで同じネットワークに対応するサブネット IP を指定します。これにより、個々のコンテナ内のインターフェイスが相互にIPトラフィックを交換できるようになります。たとえば、前の手順では、コンテナーの 1 つに次のスタンザがありました。

    そのため、YAML ファイル内のコンテナーに共通する全体的なネットワーク セクションで、同じインターフェイスの有効なサブネット IP を次のように指定する必要があります。

  11. ホストサーバーから次のコマンドを使用して、YAMLファイルで指定されたcJunosEvolvedコンテナを作成します。

    -d オプションは、コンテナをバックグラウンドで実行します。つまり、このコマンドを実行した端末に制御が戻され、その端末を他の目的に使用できます。

  12. ホストサーバーからdocker network lsコマンドを実行して、ネットワークインターフェイスの順序がYAMLファイルで指定された順序と一致することを確認します。そうしないと、YAMLファイルで指定されたコンテナ間の接続が「交差」する可能性があります。
  13. ホスト サーバーから docker container ls コマンドを実行して、Docker Compose ファイルで指定されたコンテナーが作成されていることを確認します。