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 文件极大地简化了部署,因为它是一个配方,允许相应地配置其中的容器并相互连接。

本节介绍 Docker Compose 与 cJunosEvolved 部署相关的主要功能。

Docker Compose 文件的示例布局如下所示。有关完整的示例文件,请参阅瞻博网络网站上的 vJunos Labs 下载页面。

Docker Compose 布局说明

本部分提供 Docker Compose YAML 文件的高级概述。部署部分介绍了详细信息。

文件的服务部分包含要部署的每个容器的以下字段:

  • cJunosEvolved Docker 映像
  • 容器名称
  • 可选主机名
  • 指示使用特权模式的必填字段
  • 可以传递到容器中的环境变量显示在后面的表中。
  • 每个容器的 Docker 网络的有序和优先级列表,包括单个管理以太网端口和 Docker 需要向容器提供的任何 WAN(数据)以太网端口。

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 接口映射

本主题提供每种类型的 cJunosEvolved 的 Linux 样式“eth”WAN 端口与 CLI 接口命名约定之间的接口映射的详细信息。

cJunosEvolved-BT 非通道化接口映射

BT 版本的 cJunosEvolved 支持 12 个非通道化接口。这些接口的编号从 et-0/0/0 到 et-0/0/11,标称额定功率为 400 G。

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

8 个 25G

et-0/0/1:0 到 et-0/0/1:7

8

ETH12-ETH19

8 个 25G

et-0/0/2:0 到 et-0/0/2:7

8

ETH20-ETH27

8 个 25G

et-0/0/3:0 到 et-0/0/3:7

8

ETH28-ETH35

8 个 25G

et-0/0/4:0 至 et-0/0/4:3(重定时器)

4

ETH36-ETH39

4 个 25G

ET-0/0/5

0

-

关机

et-0/0/6:0 到 et-0/0/6:3(重定时器)

4

ETH40 – ETH43

4 个 25G

ET-0/0/7

0

-

关机

et-0/0/8:0 至 et-0/0/8:7

8

ETH44- ETH51

8 个 25G

et-0/0/9:0 到 et-0/0/9:7

8

ETH52 – ETH59

8 个 25G

et-0/0/10:0 到 et-0/0/10:7

8

ETH60 – ETH67

8 个 25G

et-0/0/11:0 到 et-0/0/11:7

8

ETH68 – ETH75

8 个 25G

cJunosEvolved-BX 非通道化 WAN 接口映射

此模式共支持 36 个 WAN 接口。每个接口的标称端口速度为 800 G。

Docker Compose Linux eth4-eth39 端口分别对应于 CLI et-0/0/0-et-0/0/35 接口。

cJunosEvolved-BX 通道化 WAN 接口映射

每个 BX ASIC 模拟器支持 72 个 100 G 通道化接口。总共产生 144 个通道化接口。

使用如下所示的 CLI 命令对每个非通道化接口进行通道化,et-0/0/0 只是一个示例,并将速度设置为 100 G。

下表显示了通道化 WAN 端口映射。信道化系数为 4x100G,因为每个“物理”WAN 端口分为 4 个信道。

表 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 Notation

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 文件用于部署。

注意:

本主题仅重点介绍 YAML 文件中用于通过 Docker Compose 部署 cJunosEvolved 的几个部分。一些示例 cJunosEvolved Compose 文件以及所需的容器映像和相关文档可从实验室下载页面下载。

  1. 将 cJunosEvolved Docker Compose 映像加载到 Ubuntu 主机上。
  2. 运行 此步骤中的命令以查看映像名称及其 Docker 标记。

    这只是示例图像。需要在 Docker Compose YAML 文件中提供存储库和标记名称。

  3. 按照以下步骤中的说明,编辑 YAML 文件的服务部分。对拓扑中的每个容器执行此作。
  4. 将 YAML 文件中的图像字段设置为 <repository:tag>,如下所示。此外,选择容器名称和主机名。按照约定,主机名应是您要在 CLI 配置中设置为主机名的主机名。container_name 向主机服务器和各种 Docker 命令(如 docker container lsdocker logs <container_name)标识容器。
    注意:

    确保必须将 YAML 文件中的每个容器的特权模式设置为 true

    映像在构建时进行标记。您可以使用该标签,如下所示,也可以通过 Docker 重新标记它。

  5. 在 YAML 文件中设置环境变量。这也在服务部分下。请参阅上面的“环境变量”部分。
    • 注意:

      对于 BT,将其设置为“CPTX_COSIM:BT”

      仅当您想要为 EVOVM 分配更多 CPU 时才需要设置此设置。4 是默认值(也是最小值),因此是可选的。仅当要为 EVOVM 分配更多 MB 内存时,才指定此选项。6292 MB 是默认值,因此无需指定。

    • 仅当要为 EVOVM 分配更多 MB 内存时,才指定此选项。6292 MB 是默认值,因此无需指定。

    • 配置 cJunosEvolved 的可选方法。请参阅配置部分。
  6. 编辑管理以太网端口以配置 IP 地址。这位于 YAML 文件中特定容器的服务部分下。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 手动配置 CLI。
    • 始终在 YAML 文件中设置管理接口的 IP 地址,并在文件的“整个网络”部分中指定其子网 IP。这样您就可以控制分配给管理接口的 IP 地址。无论是否使用CPTX_AUTO_CONFIG都是如此。
    • 如果要使用 YAML 文件中的命令传递 volumes EVO CLI 配置,请在传入的“juniper.conf”中配置与在 YAML 文件中相同的管理 IP 地址和子网。
  7. 同样,在每个容器的服务子句的 networks 子节下编辑 YAML 文件中的其他接口。前 3 个保留供 cJunosEvolved 内部使用,应保持原样才能正常运行。

    WAN(数据)接口从 Linux 端的 eth4 开始。根据您的需要,会有多个这样的选择。仅在使用 CPTX_AUTO_CONFIG 端口时设置WAN端口的 IP 地址。

  8. 您可以通过 Docker Compose 文件中的以下部分传入整个 JunosEvolved 分层 CLI 配置。
    分层配置格式是指在 CLI 模式下键入 show configuration 命令时显示的格式。这是在启动时配置 cJunosEvolved 的最全面方法。如果选择此选项,则不要在 Docker Compose 文件中指定 WAN IP 地址和子网。cJunosEvolved 只会在配置 CPTX_AUTO_CONFIG 时使用 YAML 文件中指定的 IP 地址/子网。否则,您可以使用磁盘配置模式或登录到容器并手动配置它们。
  9. 或者,您可以使用“CPTX_AUTO_CONFIG:1”环境变量,如“在 Docker 上配置 cJunosEvolved,自动配置”部分中所述。
  10. 还必须指定 YAML 文件的整体“网络”部分。

    此部分对于 YAML 文件中的所有容器都是通用的,这对于所有容器都是通用的。 网络 部分列在各种容器的 服务 部分之后。本节列出了所有 WAN 接口以及拓扑的管理接口。如果在每个容器的 YAML 文件的匹配网络部分中指定了接口的 IP 地址,请在“整体网络”部分中为同一网络指定对应的子网 IP。这样,各个容器中的接口就可以在彼此之间交换 IP 流量。例如,在上一步中,其中一个容器有以下节:

    因此,在 YAML 文件中容器通用的“整体网络”部分中,必须为与以下相同的接口指定有效的子网 IP:

  11. 主机服务器使用以下命令创建 YAML 文件中指定的 cJunosEvolved 容器。

    -d 选项在后台运行容器。这意味着控制权将返回到您运行此命令的终端,您可以将该终端用于其他目的。

  12. 从主机服务器运行docker network ls命令,以验证网络接口的顺序是否与 YAML 文件中指定的顺序匹配。否则,YAML 文件中指定的容器之间的连接可能会被“交叉”。
  13. 主机服务器运行 docker container ls 命令以验证是否已创建 Docker Compose 文件中指定的容器: