gVisor ist ein von Google entwickelter, quelloffener Anwendungskernel für Container. Er ist in der Programmiersprache Go geschrieben und läuft vollständig im User-Bereich (Userspace). gVisor fängt die Systemaufrufe (Syscalls) der Anwendungen ab und beantwortet sie selbst — die Anwendung redet also nicht direkt mit dem Host-Kernel, sondern mit einer virtuellen, im Userspace nachgebildeten Kernel-Schnittstelle.

Wie gVisor funktioniert

gVisor bringt eine OCI-konforme Container-Runtime namens runsc mit. Läuft ein Container unter runsc, besteht die Sandbox aus zwei Komponenten:

  • Sentry: der eigentliche Anwendungskernel. Er nimmt die Syscalls entgegen, prüft sie und führt sie in Go-Code aus — ähnlich einer VM, aber ohne Hardware-Virtualisierung.
  • Gofer: vermittelt den Dateisystem-Zugriff. Die Anwendung erreicht die Platte nur über diesen schmalen Kanal, statt direkt auf Dateien des Hosts zuzugreifen.

Zum Abfangen der Syscalls nutzt gVisor eine von zwei Plattformen: ptrace (langsamer, aber ohne spezielle Hardware) oder KVM (schneller, benötigt Virtualisierungs-Erweiterungen). Innerhalb der Sandbox zeigt uname eine synthetische Kernel-Version statt des Host-Kernels.

Einordnung

Klassische Container teilen den Kernel des Hosts: runc isoliert nur über Namespaces und cgroups. gVisor geht einen Schritt weiter und legt eine eigene Syscall-Ebene dazwischen — dadurch hilft es gegen Kernel-Lücken, schließt aber nicht alle Lücken (z. B. nicht bei der Hardware). Die Isolation ist stärker als bei containerd mit runc, aber nicht ganz so hart wie bei einer echten virtuellen Maschine.

Verwandte Konzepte: Kata Containers (VM-Isolation) und Firecracker (MicroVMs) sind Alternativen mit ähnlichem Ziel.

Praxis

  • gVisor ist bei Google seit Jahren in Produktion (z. B. für Google Cloud Run und App Engine).
  • In Kubernetes wird runsc über eine RuntimeClass eingebunden; Docker unterstützt runsc als Runtime-Alt-Name.
  • Nachteil: Manche Syscalls und Kernel-Features werden nicht unterstützt — nicht jede Anwendung läuft unverändert.

Mehr dazu: Sandbox, Virtualisierung, Hypervisor.