No description
- Shell 91.3%
- Dockerfile 8.7%
Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> |
||
|---|---|---|
| docs | ||
| labs | ||
| templates | ||
| .gitignore | ||
| README.md | ||
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-l2vni、linux-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>/目录。
其他
- 节点命名见
docs/naming.md,管理地址规划见docs/mgmt-addressing.md。 - containerlab 生成的
clab-*目录不要提交(已在.gitignore中忽略)。