No description
  • Shell 91.3%
  • Dockerfile 8.7%
Find a file
Doby Asa 07fe9cb3c6 Add TopoViewer annotations for OSPF cost lab
Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-07-02 03:18:26 +00:00
docs chore: reorganize lab examples 2026-07-02 02:52:36 +00:00
labs Add TopoViewer annotations for OSPF cost lab 2026-07-02 03:18:26 +00:00
templates chore: reorganize lab examples 2026-07-02 02:52:36 +00:00
.gitignore Initialize containerlab lab repository 2026-06-28 22:04:42 +08:00
README.md chore: reorganize lab examples 2026-07-02 02:52:36 +00:00

Containerlab Labs

这个仓库用于沉淀日常学习网络时常用的 containerlab 拓扑环境。

目录结构

.
├── docs/                 # 仓库约定、镜像准备、管理地址规划
├── labs/                 # 实际实验拓扑,按主题分组,一个 lab 一个目录
│   ├── evpn/
│   └── security/
└── templates/            # 新建 lab 时可复制的模板

主题目录(labs/<topic>/)按需创建,不预留空目录。管理网段已按主题预留,见 docs/mgmt-addressing.md

新建一个 lab

建议从模板复制(主题目录不存在时顺手创建):

mkdir -p labs/bgp
cp -r templates/2-router labs/bgp/bgp-ebgp-basic
mv labs/bgp/bgp-ebgp-basic/2-router.clab.yml labs/bgp/bgp-ebgp-basic/bgp-ebgp-basic.clab.yml

每个 lab 目录保持如下结构:

labs/<topic>/<lab-name>/
├── README.md
├── <lab-name>.clab.yml
├── Dockerfile            # 可选lab 专用镜像
├── configs/
└── scripts/

常用命令

进入某个 lab 目录后,如果目录中只有一个 *.clab.yml 文件,可以直接执行:

sudo containerlab deploy
sudo containerlab inspect
sudo containerlab destroy

也可以在仓库根目录指定拓扑文件:

sudo containerlab deploy -t labs/bgp/bgp-ebgp-basic/bgp-ebgp-basic.clab.yml
sudo containerlab inspect -t labs/bgp/bgp-ebgp-basic/bgp-ebgp-basic.clab.yml
sudo containerlab destroy -t labs/bgp/bgp-ebgp-basic/bgp-ebgp-basic.clab.yml

约定

Lab 目录

  • 一个 lab 一个自包含目录;一个目录里只放一个 *.clab.yml 拓扑文件。同一主题的变体(例如静态 key 和 MKA 两种 MACsec拆成两个平级的 lab 目录。
  • lab 目录命名为 <topic>-<scenario>,例如 evpn-vxlan-l2vnilinux-macsec-static,详见 docs/naming.md
  • 拓扑文件命名为 <lab-name>.clab.yml,拓扑里的 name 和目录名保持一致,避免多个 lab 同时运行时容器名冲突。
  • 主题目录按需创建,不放 .gitkeep 空占位目录。

configs/

  • 节点配置放在 configs/ 下。
  • 一个节点只有一个配置文件时,直接命名为 configs/<node>.<ext>(如 configs/sw1.cfg)。
  • 一个节点有多个配置文件时(如 FRR 的 frr.conf + vtysh.conf),使用按节点分目录:configs/<node>/<file>
  • 多个节点共享的文件放在 configs/ 根目录(如 configs/daemons)。

镜像 / Dockerfile

  • 优先使用公开镜像,镜像准备方式记录在 docs/images.md
  • lab 专用镜像的 Dockerfile 放在 lab 目录内,命名为 Dockerfile,构建的镜像 tag 为 clab-<lab-name>:latest
  • 如果某个镜像被多个 lab 复用,再抽到顶层 images/<image-name>/ 目录。

其他