容器与内核强相关

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