容器与内核强相关
1.Linux 容器并没有自己的内核
无论是 Docker / LXC / Podman / systemd-nspawn,容器里的 uname -r 都是 宿主机 kernel。
所以当你在 Debian 13 容器里看到:
uname -r
5.14.0-427.el9.x86_64
这其实是 RockyLinux 9.6 的内核。
但 Debian 的 apt 仓库里只有:
linux-headers-6.x.x-amd64
于是就产生了一个“宇宙错位”:
| 组件 | 来源 |
|---|---|
| kernel | RockyLinux |
| userspace | Debian |
| headers | Debian |
APT 找不到 5.14.0-427.el9 的 header,这是必然的。
2.构建依赖则使用 VM 而不是容器
如果必须要:
linux-headers-6.x
那就意味着 必须运行 Debian kernel。
那就应该用:
- KVM
- QEMU
- Firecracker
- Kata container
而不是普通容器。
3.容器调用关系
可以把容器想象成:
+---------------------+
| container userland |
| Debian / Ubuntu |
+---------------------+
|
| syscall
v
+---------------------+
| Host Linux Kernel |
| Rocky 9 kernel |
+---------------------+
|
v
hardware
容器只是在 借用宿主机的 kernel API。