Repolode
google

google/gvisor

用 Go 编写的应用内核,在用户态拦截 Linux 系统调用来隔离容器,可作为 runsc OCI 运行时使用。

Star
19,738
Fork
2,025
未关闭 Issue
1,005
最近提交
3小时前

这是什么?

gVisor 是一个应用内核,实现了类 Linux 的接口,位于容器应用与宿主机操作系统之间。它运行在用户态并使用内存安全的 Go 语言编写,因此能限制容器能访问的宿主机内核范围,降低容器逃逸漏洞的影响。

项目提供名为 runsc 的 OCI 运行时,可与 Docker 和 Kubernetes 集成,现有容器工具几乎无需改动即可运行沙箱容器。它以普通宿主机进程的形式运行,而非虚拟机,定位介于 seccomp-bpf 这类系统调用过滤与完整虚拟机之间。

仓库支持 x86_64 和 ARM64 架构,要求宿主机 Linux 内核 5.6 及以上,构建依赖 Bazel 并封装在构建容器中。此外还维护了一个兼容标准 Go 工具链的分支,方便其他 Go 项目引入 Netstack 等子包。

核心功能

  • 01在用户态实现类 Linux 的系统调用接口
  • 02提供 runsc OCI 运行时,支持 Docker 和 Kubernetes
  • 03使用内存安全的 Go 语言编写
  • 04以普通宿主机进程运行,无需完整虚拟机
  • 05支持 x86_64 和 ARM64 架构

适用场景

  • 在沙箱容器中运行不可信或第三方代码
  • 为多租户 Kubernetes 工作负载增加额外的隔离层
  • 在 Go 项目中引入 Netstack 用户态 TCP/IP 协议栈

快速上手

  1. 1

    检查环境要求:Linux 5.6 及以上,Docker 17.09.0 及以上

  2. 2

    构建包含 runsc 的发布压缩包

    make release-tarball DESTINATION=bin/
  3. 3

    将压缩包解压到 /usr/local/bin

    sudo tar -C /usr/local/bin -xf bin/gvisor.tar.bz2

使用前须知

  • 仅支持 Linux 5.6 及以上版本,且仅可在 x86_64 和 ARM64 上构建。
  • 从源码构建依赖基于 Docker 的构建容器,或需要手动配置 Bazel 工具链。
  • runsc 不支持从 go 分支构建。

标签

常见问题

gvisor 是什么?
用 Go 编写的应用内核,在用户态拦截 Linux 系统调用来隔离容器,可作为 runsc OCI 运行时使用。 gVisor 是一个应用内核,实现了类 Linux 的接口,位于容器应用与宿主机操作系统之间。它运行在用户态并使用内存安全的 Go 语言编写,因此能限制容器能访问的宿主机内核范围,降低容器逃逸漏洞的影响。
gvisor 可以免费使用吗?用的什么许可证?
gvisor 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
gvisor 还在维护吗?
活跃维护中。gvisor 最近一次提交是在 2026年10月22日。
gvisor 适合用来做什么?
在沙箱容器中运行不可信或第三方代码 为多租户 Kubernetes 工作负载增加额外的隔离层 在 Go 项目中引入 Netstack 用户态 TCP/IP 协议栈
gvisor 怎么安装和运行?
检查环境要求:Linux 5.6 及以上,Docker 17.09.0 及以上 构建包含 runsc 的发布压缩包: make release-tarball DESTINATION=bin/ 将压缩包解压到 /usr/local/bin: sudo tar -C /usr/local/bin -xf bin/gvisor.tar.bz2
在哪里获取 gvisor?
源代码和安装说明在 GitHub 上:https://github.com/google/gvisor

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目