RustROS · 2026-10-27 · 主线 9a93633

M8 报告:容器计划的验收

M0 到 M7b 的容器计划收尾:你定下的每一条容器要求都成了回归套件里经 docker 实际运行的测试;容器的智能流控(S2)补上;验收中找到并修好了四个问题(nat 替换时连接断、边读边删目录会漏、名字缓存记着已删目录、测试服务器连接数用尽);实例的文件系统准备从内核移到 VFS 模块。

回归测试(KVM 测试机)0 失败单元测试 218 项;新增 s2 测试;docker 测试加了 M8 的各项;转发 TCP 19.2 / 18.9 Gbit/s,64 B 375 / 373 kpps,和之前一样
验收全部经 docker 测过见下表
内核405,504 字节代码少了 392 字节:实例的挂载准备移出,进了终端共享、接口名、应用交接的钩子
这次更新要重启一次内核和 api 改了:所有模块重装;程序 docker 重装

验收容器要求逐条

要求测试结果
compose up -d 起 Debian 13(sleep infinity),exec -it bash 里 apt update、apt install -y curl,curl 访问外部网站;down 清理,up 再起docker_test通过
自己的根目录和进程号空间instance_test、docker_test通过
两个容器都监听 80,映射到两个宿主地址的 80(测试里是 8080)同时可达docker_test通过
运行中改映射:服务不中断,新映射立刻生效docker_test(compose 只改端口:1 号进程不变,服务一直在,新地址能连,旧地址不再接受新连接)通过
和路由器端口转发、宿主机服务端口冲突的映射被拒绝docker_test(dstnat 转发上的 docker run -p;updater 的 9000)通过
宿主网络配置定时回滚后容器映射照常docker_test(net apply 不确认,回滚后两个服务都能连)通过
防火墙规则拒绝容器访问宿主端口(默认允许)docker_test(容器里探测 9000:默认通,规则后不通,删规则后又通)通过
热更新:替换模块不影响运行中的容器docker_test:在跑着的 compose 服务下依次替换 linux、vfs、netstack、containers、nat、ctnet,每次之后经映射的已有连接照常收发,exec -it 会话照常通过
容器的智能流控(S2):对容器的 SYN 洪水、容器发起的扫描s2_test:洪水下真实客户端 5/5 连上,另一个容器 5/5;扫描的容器按名字报出(ct3 s2/scan)、降级、封禁、NAT 表不被填满、平静后解除通过
删除干净docker_test 末尾:没有实例、设置、映射,磁盘上没有容器目录和记录,e2fsck 干净通过
回归套件通过,转发不低于基线整套通过

修复验收中找到的问题

内核这次内核改了什么(按规则报告)

请你确认

M8 是否发布:内核改了,部署时重启一次,所有模块重装,docker 程序重装。按你定的顺序,之后是 IPv6(J);“稳定的服务接口”(内核评估第 4 条)建议排在 IPv6 之后单独做。