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
。
- 节点总是属于某种特定的
kind
。kind
定义了节点的配置和行为。
- Containerlab支持固定数量的
kind
。在上面的示例中,srl
和 ceos
是受支持的 kind
之一。
- 拓扑的实际节点在
nodes
部分定义,该部分包含一个节点名称映射。在上面的示例中,定义了名为 srl
和 ceos
的节点。
- 节点元素必须有一个
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