查看: 93|回复: 0

Containerlab 快速入门

377

主题

881

回帖

985万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9850515

推广达人宣传达人突出贡献优秀版主论坛元老

QQ

1 快速入门

1.1 安装

获取Containerlab非常简单。得益于快速安装脚本,在任何基于RHEL或Debian的操作系统上,你都能在短短几秒内完成安装并开始使用 。

curl -sL https://containerlab.dev/setup | sudo -E bash -s "all"

1.2 拓扑定义文件

安装完成后,Containerlab会管理所谓的拓扑定义文件(clab文件)中定义的实验室。用户可以从头开始编写拓扑定义文件,也可以查看Containerlab软件包中提供的各种实验室示例,或者探索社区分享的数十个实验室。

在本快速入门中,我们将使用其中一个提供的实验室示例,它由相互连接的诺基亚SR Linux和Arista cEOS节点组成。

实验室拓扑在 srlceos01.clab.yml文件中定义。要使用这个实验室示例,我们需要获取该 clab文件:

mkdir ~/clab-quickstart
cd ~/clab-quickstart
curl -LO \
	https://raw.githubusercontent.com/srl-labs/containerlab/main/lab-examples/srlceos01/srlceos01.clab.yml

让我们看看这个实验室的拓扑是如何定义的:

# 拓扑文档:http://containerlab.dev/lab-examples/srl-ceos/
name: srlceos01
topology:
  nodes:
    srl:
      kind: nokia_srlinux
      image: ghcr.io/nokia/srlinux:24.3.3
    ceos:
      kind: arista_ceos
      image: ceos:4.32.0F
  links:
    - endpoints: ["srl:e1-1", "ceos:eth1"]

一份深入解析拓扑定义的文档提供了拓扑定义语法的完整参考。在本快速入门中,我们简要介绍文件的关键组成部分:

  • 每个实验室都有一个 name
  • 实验室拓扑在 topology元素下定义。
  • 拓扑是一组 nodes以及它们之间的 links
  • 节点总是属于某种特定的 kindkind定义了节点的配置和行为。
  • Containerlab支持固定数量的 kind。在上面的示例中,srlceos是受支持的 kind之一。
  • 拓扑的实际节点在 nodes部分定义,该部分包含一个节点名称映射。在上面的示例中,定义了名为 srlceos的节点。
  • 节点元素必须有一个 kind参数,以表明该节点属于哪种类型。在 nodes部分,你通常会提供特定于节点的参数。本实验室使用了一个特定于节点的参数——image
  • nodes通过 links相互连接。每个 link由一组 endpoints定义。

1.3 容器镜像

节点最重要的属性之一是定义节点时使用的容器 image。镜像名称遵循与使用Docker CLI或Docker Compose时相同的规则。

1.3.1 镜像名称格式和完全限定名

镜像名称的写法有多种形式,但每个名称本质上都映射到一个完全限定的镜像名称,该名称由以下部分组成:

  • 注册表(registry):存储镜像的注册表。
  • 组织(organisation):该注册表中的组织名称。
  • 仓库(repository):仓库名称。
  • 标签(tag):镜像标签。

以下是在使用Containerlab时可能遇到的不同镜像名称及其对应的完全限定名(FQDN):

镜像名称 注册表 组织 仓库 标签
ghcr.io/nokia/srlinux ghcr.io nokia srlinux 未显式设置标签时,隐式使用 latest
ceos:4.32.0F 未设置注册表时,假定为 docker.io 未设置时,假定为 library ceos 4.32.0F
prom/prometheus:v2.47 未设置注册表时,假定为 docker.io prom prometheus v2.47

我们的拓扑文件定义了两个节点,每个节点都使用自己的容器镜像进行定义:

  • ghcr.io/nokia/srlinux:24.3.3:用于诺基亚SR Linux节点。
  • ceos:4.32.0F:用于Arista cEOS节点。

当Containerlab开始部署实验室时,它会首先检查镜像是否在本地可用。可以使用 docker images命令列出本地镜像。

Containerlab会将拓扑文件中的镜像名称与本地镜像进行比较,如果本地没有可用镜像,它会尝试从远程注册表拉取。

1.3.2 镜像可用性

快速入门实验室包含诺基亚SR Linux和Arista cEOS镜像。虽然诺基亚SR Linux是公开可用的镜像,任何人都可以拉取,但Arista cEOS镜像并未在公共注册表中提供。

Arista要求用户在下载任何镜像之前先在arista.com上注册。创建账户并登录后,前往软件下载部分,下载特定版本的ceos64 tar归档文件。

下载完成后,使用docker导入归档文件:

# 导入容器镜像并将其保存为ceos:4.32.0F
docker import cEOS64-lab-4.32.0F.tar.xz ceos:4.32.0F

1.4 部署实验室

现在我们了解了基本拓扑文件的组成,回顾了容器镜像名称的相关知识,并且导入了cEOS镜像,接下来可以继续部署这个实验室。为了简单易懂,部署实验室的命令名为 deploy

在执行部署命令之前,最好先确认已导入cEOS镜像:

docker images | grep ceos
REPOSITORY TAG IMAGE ID CREATED SIZE
ceos 4.32.0F 40d39e1a92c2 24 hours ago 2.4GB

1.4.1 远程拓扑文件

Containerlab允许从远程Git仓库和/或HTTP URL中的文件部署实验室。更多详细信息,请查看部署命令文档。

虽然你可以预先拉取诺基亚SR Linux镜像,但如果本地没有该镜像,Containerlab会为你拉取,非常方便!现在我们准备部署:

sudo containerlab deploy

很快你就会看到已部署实验室节点的汇总表。

该表将显示节点名称(与容器名称相同)、节点类型、镜像名称以及许多其他有用信息。你始终可以使用 containerlab inspect命令列出实验室的节点。

# 名称 容器ID 镜像 类型 状态 IPv4地址 IPv6地址
1 clab-srlceos01-ceos 6ec1b1367a77 ceos:4.32.0F arista_ceos running 172.20.20.11/24 3fff:172:20:20::b/64
2 clab-srlceos01-srl 6af1e33f4573 ghcr.io/nokia/srlinux nokia_srlinux running 172.20.20.10/24 3fff:172:20:20::a/64

1.5 连接到节点

我们知道你迫不及待想要操作这些节点,那就让我们连接到它们。网络工程师与网络设备交互的常用方式是通过命令行界面(CLI)。对于网络操作系统,你可以使用SSH,通过分配给容器的管理地址或节点名称连接到CLI:

❯ ssh admin@clab-srlceos01-srl
Using configuration file(s): []
Welcome to the srlinux CLI.
Type 'help' (and press <ENTER>) if you need any help using this.
--{ running }--[  ]--
A:srl#

1.5.1 注意

对于每种受支持的节点类型,我们都记录了管理接口以及使用它们的方法。

例如,srl类型的文档提供了使用SSH和gNMI接口的命令。ceos类型有自己的使用说明 。

以下表格汇总了获取每个实验室节点CLI访问权限的方法:

诺基亚SR Linux Arista cEOS
docker exec -it clab-srlceos01-srl sr_cli(访问CLI)docker exec -it clab-srlceos01-srl bash(访问bash) docker exec -it clab-srlceos01-ceos Cli(访问CLI)docker exec -it clab-srlceos01-ceos bash(访问bash)

你可以随意探索节点、配置它们,并运行你喜欢的网络协议。如果操作失误,随时可以销毁实验室并重新开始。说到这里……

1.6 销毁实验室

要删除实验室,使用 destroy命令,该命令以拓扑文件为参数:

sudo containerlab destroy

不忘初心
回复

使用道具 举报

本版积分规则

Copyright   ©2015-2024  EmulatedLab  Powered by Discuz!©   ( 浙ICP备2021010423号-1 )
快速回复 返回列表 返回顶部