Containerlab实战系列之八: Cisco IOL 实验案例
2026/8/10 10:05:14 网站建设 项目流程

把 Cisco IOS 跑进容器——用 IOL + vrnetlab 做一次端到端的 Containerlab 实验

📌 导读前七篇我们把 Containerlab 的基础能力(部署、cRPD、自动加载配置、抓包、Web 拓扑图、edgeshark)逐个拆开讲了。本篇作为系列终章,用 Cisco IOL 跑一次端到端实验——把 vrnetlab 构建、YAML 拓扑、Containerlab 部署、Web 拓扑图、edgeshark 抓包全部串起来。IOL 是 Cisco IOS 的 Linux 二进制版本,无需虚拟机就能在容器里跑,资源占用比 cRPD/Juniper vJunos 还低,特别适合做多节点、大规模组网实验。
📋 本文目录
  • 一、背景:vrnetlab 与 cisco_iol
  • 二、准备工作:获取 IOL 镜像文件
  • 三、用 vrnetlab 构建 Docker 镜像
  • 四、编写并启动 Containerlab 拓扑
  • 五、访问与配置
  • 六、完整工作流回顾:Web 拓扑 + edgeshark 抓包
  • 七、写在最后(系列完结)

一、背景:vrnetlab 与 cisco_iol

vrnetlab是一个将传统虚拟机(VM)打包进容器、使其能像容器一样运行的项目。Containerlab 通过集成 vrnetlab,实现了在同一个拓扑文件里定义和启动基于 VM 的网络操作系统。

cisco_iol是 Cisco IOS / IOS-XE 的 Linux 二进制版本,无需虚拟机即可运行。在 Containerlab 中,它被识别为cisco_iol类型,本质是把 IOL 二进制文件打包进 Docker 容器。

⚠️ 重要提示必须使用 Containerlab 官方指定的srl-labs/vrnetlab分支来构建镜像,而不是原版 vrnetlab 项目——分支里针对 Containerlab 做了适配。

二、准备工作:获取 IOL 镜像文件

IOL 镜像不是随便下载就能用的,需要从Cisco CML(Cisco Modeling Labs)的参考平台 .iso 文件中提取 IOL 二进制文件,文件通常以iolioll2为前缀:

IOL:用作 L3 路由器
IOL-L2:用作虚拟的 IOS-XE 交换机

💡 提示Cisco CML 是 Cisco 官方的虚拟化实验平台,订阅用户可以下载它的 .iso 镜像,从镜像里提取 IOL 二进制文件作为本实验的输入。

三、用 vrnetlab 构建 Docker 镜像

拿到 IOL 二进制后,下一步是把它打包成 Docker 镜像——这正是 vrnetlab 的工作。

① 克隆 vrnetlab 仓库

[root@jmz ~]# git clone https://github.com/srl-labs/vrnetlab.git

② 放置并重命名镜像文件

将 IOL 二进制文件复制到vrnetlab/cisco/iol目录下,查看 README.md 文件,按要求用如下格式重命名(版本号以实际文件为准):

▸ L3 镜像:cisco_iol-x.y.z.bin
▸ L2 镜像:cisco_iol-L2-x.y.z.bin

[root@jmz iol]# mv x86_64_crb_linux_l2-adventerprisek9-ms.iol cisco_iol-L2-17.16.01.bin [root@jmz iol]# mv x86_64_crb_linux-adventerprisek9-ms.iol cisco_iol-17.16.01.bin

③ 执行构建

进入vrnetlab/cisco/iol目录,运行 make 命令:

[root@jmz iol]# make docker-image

④ 验证镜像

使用docker images命令,你应该能看到新生成的镜像,例如vrnetlab/cisco_iol:17.16.01vrnetlab/cisco_iol:L2-17.16.01

四、编写并启动 Containerlab 拓扑

镜像有了,下一步就是写拓扑 YAML、deploy 起来。

① 编写拓扑文件(cisco.yaml)

参考 vrnetlabcisco/iol/README.md文件来定义网络拓扑。

② 关键参数说明

kind:必须设置为cisco_iol
type:对于 L2 镜像,需要显式设置为L2
links:定义节点间的物理连接,接口命名遵循Ethernet0/X(或e0/X)格式

⚠️ 注意IOL 的接口以4 个为一组。例如e0/3e1/0e1/1分别对应第四、第五、第六个数据接口——这和物理路由器编号习惯不一样,写拓扑时容易踩坑。

③ 部署实验

在拓扑文件所在目录下运行:

[root@jmz ciscolab]# containerlab deploy -t cisco.yaml

五、访问与配置

部署完,几条关键信息:

默认凭证:IOL 节点的默认用户名和密码均为admin
管理接口Ethernet0/0是管理接口,被放置在独立的管理 VRF 中,其 IP 由 Containerlab 自动分配
数据接口:拓扑中定义的数据接口(如e0/1)需要你手动在 CLI 中配置 IP 地址才能转发流量

登录到设备:

[root@jmz ciscolab]# ssh admin@clab-cisco-iol-lab-router1

六、完整工作流回顾:Web 拓扑 + edgeshark 抓包

到这一步 IOL 已经跑起来了——但 Containerlab 真正的威力,是把以下能力一站式集成:

① 看 Web 拓扑图

用上一篇学的containerlab graph命令,浏览器直接看 IOL 节点的拓扑视图,能拖能点:

② 集成 edgeshark 抓包

在 Edgeshark Web 界面上单击 Wireshark鲨鱼鳍图标,就能调用本地 Wireshark 抓取 IOL 节点接口的实时流量——前一篇 edgeshark 集成的全部能力直接复用。

💡 一句话记忆vrnetlab」做打包,「cisco_iol」是载体;本篇 = 系列前 7 篇能力的大综合。Web 拓扑 + edgeshark 在 IOL 上照常工作,证明 Containerlab 生态的一致性。

七、写在最后(系列完结)

Containerlab 实战系列从「介绍」写到「Cisco IOL」,共8 篇,基本覆盖了一个网络工程师用 Containerlab 调试环境的全流程:

基础:介绍、部署
实验:Juniper cRPD、Cisco IOL
配置:自动加载配置
调试:网络抓包、Web 拓扑图、edgeshark 集成

整个写下来最大的感受是:Containerlab 的生态一致性做得很好——不管你是用 cRPD、Cisco IOL 还是别的网络 OS 镜像,所有容器都跑在统一的拓扑描述、统一的 deploy 流程、统一的 Web 视图、统一的抓包接口下。

学习 Containerlab 的本质,是学一种「网络实验的统一抽象」——把厂商差异藏在 kind/type 后面,把通用能力(拖拓扑、点抓包、自动配置)暴露给工程师。

感谢一路读到这里 ❤️ 如果这篇系列对你有帮助,欢迎点赞 ·· 转发支持。

📮 如读者朋友有希望拆解的其他 Containerlab 实战案例,欢迎评论区留言或私信,如更多案例将继续更新本系列👇

— Containerlab 实战系列 · 之八(终章)· Z 的网络知多少 —

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询