十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

gVisor 安装指南:apt 仓库、tarball 手动安装与 release 渠道详解

gVisor 安装指南:apt 仓库、tarball 手动安装与 release 渠道详解 gVisor 安装指南apt 仓库、tarball 手动安装与 release 渠道详解【免费下载链接】gvisorApplication Kernel for Containers项目地址: https://gitcode.com/GitHub_Trending/gv/gvisor本篇指南基于 gVisorApplication Kernel for Containers官方安装文档展开系统讲解从apt仓库安装、手动下载 tarball 安装、Docker 运行时注册到 2026 年多文件multi-file发布模式迁移以及 HEAD / Nightly / Latest / Specific / Point 五类 release 渠道的完整选择与用法。读完本文你将掌握在 x86_64 与 ARM64、Linux 5.6 主机上正确安装并验证runsc的每一步操作并理解gvisor-bin/sidecar 二进制目录的底层机制与迁移要求。安装前的环境要求gVisor 对宿主机的软硬件有明确约束CPU 架构支持x86_64和ARM64aarch64两种架构内核版本要求Linux 5.6 及以上。gVisor 的用户态内核sentry依赖宿主内核提供的特定系统调用与内存管理特性例如io_uring相关能力、fexecve等Linux 5.6 是官方支持的下限版本。如果宿主机内核低于该版本安装后容器将无法正常启动建议先升级内核再继续。安装完成后runsc需要被放置在所有用户可读、可执行的路径下例如/usr/local/bin因为runsc出于安全考虑可能需要以非特权用户身份重新执行自身。这一点在 tarball 安装部分会再次强调。方式一通过apt仓库安装推荐对于 Debian / Ubuntu 系发行版官方维护了 gVisor 的apt仓库。这是最省心、最面向未来的安装方式也是官方明确推荐的路径——后续小节会解释原因。第一步安装依赖apt需要借助 HTTPS 从仓库拉取软件包因此先安装对应依赖sudo apt-get update \ sudo apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg第二步配置签名密钥与仓库源gVisor 的归档文件使用 GPG 密钥签名需要先把公钥下载并去装甲化dearmor为 keyring 文件再写入仓库源curl -fsSL https://gvisor.dev/archive.key | sudo gpg --dearmor -o /usr/share/keyrings/gvisor-archive-keyring.gpg echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/gvisor-archive-keyring.gpg] https://storage.googleapis.com/gvisor/releases release main | sudo tee /etc/apt/sources.list.d/gvisor.list /dev/null注意签名密钥已于2021-07-13更新以替换过期密钥。如果安装时出现密钥已过期key expired之类的报错重新执行上面第一条curl命令刷新 keyring 即可。仓库行中的release是发布渠道名可以按需替换为master、nightly或具体日期详见下文版本与 release 渠道一节$(dpkg --print-architecture)会自动展开为当前机器的 Debian 架构名。第三步安装runsc软件包sudo apt-get update sudo apt-get install -y runsc安装完成时如果系统里已经装有 Docker安装脚本会自动完成 Docker 运行时注册之后即可直接使用docker run --runtimerunsc。若未自动注册可手动执行后续的runsc install步骤。方式二手动安装最新 releasetarballapt方式不可用例如使用非 Debian 系发行版时才建议走手动安装。官方明确提醒只要能装 Debian 包就优先用apt方式因为它更能跟上未来的发布形态变化。下载与解压以下命令会下载最新 release 的压缩包并校验 SHA-512 校验和( set -e ARCH$(uname -m) URLhttps://storage.googleapis.com/gvisor/releases/release/latest/${ARCH} wget ${URL}/gvisor.tar.zstd ${URL}/gvisor.tar.zstd.sha512 sha512sum -c gvisor.tar.zstd.sha512 sudo tar --zstd -xf gvisor.tar.zstd -C /usr/local/bin rm -f gvisor.tar.zstd gvisor.tar.zstd.sha512 )$(uname -m)在 x86_64 机器上返回x86_64在 ARM64 机器上返回aarch64与 release URL 的架构组件一一对应sha512sum -c会校验下载文件与官方校验和是否一致任何不匹配都会导致命令失败set -e保证脚本立即退出避免安装被篡改的二进制。如果机器上没有安装zstd可以改用gvisor.tar.bz2Bzip2 压缩格式把上面命令中的gvisor.tar.zstd与gvisor.tar.zstd.sha512分别替换为gvisor.tar.bz2与gvisor.tar.bz2.sha512即可。tarball 的内容与目录布局gvisor.tar.zstd压缩包内包含runscgVisor 的 OCI 运行时主二进制containerd-shim-runsc-v1供 containerd 使用的 shim 二进制gvisor-bin/目录sidecar 二进制sidecar binaries存放目录runsc在运行时按需执行其中的子进程。runsc会在自身二进制所在目录旁边查找gvisor-bin/目录来定位这些 sidecar。因此如果移动runsc必须连同gvisor-bin/一起移动二者必须始终保持相邻。从源码结构看这一约定实现在 runsc/gvisorbinaries/gvisorbinaries.go 中包注释明确规定sidecar 存放在主二进制旁边的gvisor-bin/目录中binDirName gvisor-binresolveDir()通过filepath.Join(filepath.Dir(ExePath), binDirName)解析目录并在runsc是符号链接时使用EvalSymlinks解析真实路径后再定位。标准安装中的 sidecar 共四个在源码中以常量列出sidecar 文件名用途runsc-metric-server指标metrics服务端checkpointgofercheckpoint / restore 场景下的 gofergvisor_sentrysentrygVisor 用户态内核本体gvisor-sentry-prewarmer在 sentry 启动前预热页缓存page cache的 C 程序此外还有仅在启用 plugin 网络栈的安装中存在的gvisor_sentry_plugin_stackplugin-enabled installations不属于标准All列表。注册为 Docker 运行时并验证sudo /usr/local/bin/runsc install sudo systemctl reload docker docker run --rm --runtimerunsc hello-worldrunsc install会自动向 Docker 守护进程配置默认路径/etc/docker/daemon.json写入名为runsc的 runtime 条目其具体行为可在 runsc/cmd/install.go 中确认命令读取现有 JSON 配置将runtimes[runsc]设置为{path: runsc 可执行文件路径, runtimeArgs: [...]}默认clobbertrue覆盖已有同名 runtime写入前还会把原配置备份为daemon.json~。systemctl reload docker让守护进程重新加载配置后docker run --runtimerunsc hello-world即可验证安装是否成功。注意务必把runsc复制到所有用户都可读可执行的目录如/usr/local/bin因为runsc可能需要以非特权用户身份重新执行自身以提升安全性gvisor-bin/目录必须随之一起移动。安装后验证运行一个交互容器并在容器内执行dmesg如果看到类似下面的输出即表示容器确实运行在 gVisor 沙箱中$ docker run --runtimerunsc -it ubuntu dmesg [ 0.000000] Starting gVisor... [ 0.354495] Daemonizing children... ... [ 2.613217] Ready!官方文档同时提示dmesg输出很容易被攻击者伪造在安全敏感场景下不要依赖dmesg来验证运行时。更全面的使用指引见 Docker Quick Start、Containerd Quick Start 与 OCI Quick Start若要用于生产环境请务必先阅读 Production guide。带自定义参数的 runtime 注册runsc install支持把额外参数透传给 runtime。例如注册一个开启调试的runsc-debugruntimesudo runsc install --runtime runsc-debug -- \ --debug \ --debug-log/tmp/runsc-debug.log \ --strace \ --log-packets--之后的所有参数会被写入daemon.json的runtimeArgs字段Docker 每次调用该 runtime 时都会带上。注意启用调试前请确保宿主机的 SELinux 处于关闭状态。install子命令还提供--config_fileDocker 配置路径默认/etc/docker/daemon.json、--cgroupdriverDocker cgroup 驱动等参数。从旧版仅 runsc 二进制安装迁移2026 年 7 月之前gVisor 的 release 只包含两个二进制runsc和containerd-shim-runsc-v1所有附带材料都打包内嵌在runsc内部。此后发布形态转变为多文件multi-file模式即上文的gvisor-bin/sidecar 机制背景见 gVisor issue #13718。自动下载机制与迁移期限如果runsc旁边缺失某个 sidecarrunsc install会尽力best-effort自动下载缺失二进制到自身旁边的gvisor-bin/子目录中该自动下载功能将于 2026 年 9 月底被移除在此之前你需要自行更新安装流程。自动下载依赖三个前提条件能访问storage.googleapis.com网络在runsc install执行时对runsc所在父目录有写权限系统装有curl或wget由于技术限制runsc目前无法链接net/http库只能借助外部下载工具。自动下载的实现细节可在 runsc/cmd/install_sidecars.go 中确认installSidecars()遍历gvisorbinaries.All检查缺失项然后从由runsc自身版本推导出的 release URL 下载gvisor.tar.bz2及其.sha512校验文件用 SHA-512 校验后仅抽取其中的gvisor-bin/成员通过临时目录 原子重命名的方式替换旧目录下载与解压全部失败即报错退出。install.go中还提供--download-sidecars与--require-sidecars两个临时开关取值NEVER/ALWAYS/IF_RELEASE_BUILD默认IF_RELEASE_BUILD控制该行为——这些标志本身也是临时的会随自动下载功能一并移除。迁移到新安装方式官方给出的迁移路径有两条任选其一使用 Debianapt仓库见上文方式一——最面向未来官方首选从 tarball 手动安装见上文方式二——tarball 内含完整的gvisor-bin/目录。sidecar 相关的运行时策略参数仓库中同时引入了两个运行时配置项见 runsc/config/config.go 与 runsc/config/flags.go--sidecar-usage-policysidecar 缺失时的处理策略取值STRICTsidecar 必须存在缺失即报错DEFAULT 策略将于 2026 年 9 月后切换为 STRICTLEGACY_DEPRECATED_SLOW_EMBEDDED_FALLBACK回退使用内嵌副本已废弃会拖慢启动2026 年 10 月后失效DEFAULT当前默认值缺失时回退内嵌副本并给出弃用警告。--sidecar-release-enforcement-policysidecar 与runsc的 release 版本一致性校验策略取值NEVER/ALWAYS/IF_RELEASE_BUILD。若两侧 release 不一致runsc会通过环境变量GVISOR_ENFORCE_RELEASE让 sidecar 在启动时 panic避免版本错配导致难以排查的问题VerifyMatchingRelease校验逻辑见 runsc/gvisorbinaries/gvisorbinaries.go。版本与 release 渠道runsc二进制与apt仓库提供多个版本与发布渠道。选择原则很简单实验探索用 nightly生产环境用 latest release。选定渠道后再回到上面的安装方式tarball 手动安装时把 URL 中的release/latest替换为对应渠道apt安装则把仓库行中的渠道名替换为对应值。注意较老版本的 release URL 可能没有${ARCH}组件——这些版本仅提供x86_64架构。HEADmaster 分支最新提交master分支上的每次提交都会产出二进制tarball URLhttps://storage.googleapis.com/gvisor/releases/master/latest/${ARCH}apt仓库行sudo add-apt-repository deb [archamd64,arm64] https://storage.googleapis.com/gvisor/releases master mainNightly每日构建Nightly release 大多在每晚从 master 分支构建tarball URLhttps://storage.googleapis.com/gvisor/releases/nightly/latest/${ARCH}特定日期的构建https://storage.googleapis.com/gvisor/releases/nightly/${yyyy-mm-dd}/${ARCH}并非每天都有构建apt仓库行sudo add-apt-repository deb [archamd64,arm64] https://storage.googleapis.com/gvisor/releases nightly mainLatest release最新正式版tarball URLhttps://storage.googleapis.com/gvisor/releases/release/latest/${ARCH}apt仓库行sudo add-apt-repository deb [archamd64,arm64] https://storage.googleapis.com/gvisor/releases release mainSpecific release指定日期的正式版特定 release 是某个日期对应的最新 point releasetarball URLhttps://storage.googleapis.com/gvisor/releases/release/${yyyymmdd}/${ARCH}apt安装时用该日期作为仓库渠道名可能包含 point 更新sudo add-apt-repository deb [archamd64,arm64] https://storage.googleapis.com/gvisor/releases yyyymmdd main注意只有较新的 release 才提供apt仓库形式。Point release打标签的发布版Point release 对应 GitHub 仓库中打了 tag 的正式发布每个发布都附带 release notes / changelog以及各架构的可下载 tarballgvisor-x86_64.tar.bz2、gvisor-aarch64.tar.bz2与校验文件SHA256SUMS、SHA512SUMS。也可以直接从发布存储桶获取tarball URLhttps://storage.googleapis.com/gvisor/releases/release/${yyyymmdd}.${rc}/${ARCH}注意apt不支持安装特定 point release。安装后的下一步安装并验证runsc后可以按需选择运行时集成方式继续深入Docker Quick Start把runsc注册为 Docker runtime 后运行容器docker run --runtimerunsc --rm hello-world还包含带--link、-v、-p、--cpus等参数的组合示例Containerd Quick Start通过containerd-shim-runsc-v1与 containerd runtime handler 集成要求 containerd 最低版本 1.3.9 / 1.4.3在/etc/containerd/config.toml中声明runtime_type io.containerd.runsc.v1OCI Quick Start不依赖容器引擎直接构造 OCI bundle 后以runsc spec -- /hello生成规范、sudo runsc run hello启动沙箱。小结优先aptDebian/Ubuntu 上用apt仓库安装最省心且能自动完成 Docker 注册tarball 兜底非 Debian 系或需要精确控制版本时手动安装务必让runsc与gvisor-bin/保持相邻警惕迁移期限2026 年 9 月底自动下载功能将下线、2026 年 10 月内嵌 fallback 将失效请在此之前切换到含gvisor-bin/的新式安装生产环境选择release渠道并参考 Production guide 完成部署前评估。【免费下载链接】gvisorApplication Kernel for Containers项目地址: https://gitcode.com/GitHub_Trending/gv/gvisor创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表