内容提要
Vercel推出托管镜像(VMI),替代已弃用的沙箱运行时。新默认镜像universal基于Ubuntu,含Node.js、Python及常用工具,支持夜间更新和安全补丁。用户可按需选择node、python、ubuntu或arch镜像,通过镜像路径引用,旧代码仍兼容。镜像默认用户为ubuntu或arch,支持sudo,可扩展或提PR改进。
延伸解读
迁移注意事项
旧代码中使用的 runtime 属性虽然已弃用但并未移除,因此现有代码仍可正常运行。不过,新项目应优先使用 image 属性并指定镜像路径,例如 vercel/sandbox/universal:latest。若团队依赖 Amazon Linux 2023,则需继续使用 runtime,因为托管镜像目录中不包含该操作系统。
镜像选择与更新策略
托管镜像提供多种选择:universal 适合通用场景,node 和 python 镜像针对特定语言,ubuntu 为基础镜像,arch 则适合需要动态安装工具的代理。滚动标签(如 latest)会自动更新,包括安全补丁,但依赖版本可能变化;若需完全可复现的环境,应固定到镜像摘要(SHA),这样会停止自动更新。
安全与权限变化
托管镜像默认以 ubuntu 或 arch 用户运行,并支持无密码 sudo,这与之前的 vercel-sandbox 用户不同。镜像每晚发布,滚动标签会包含安全补丁,但固定摘要的镜像不会自动更新,因此需要用户自行跟踪安全更新。
Q&A
Vercel 托管镜像(VMI)是什么?它替代了什么?
Vercel 托管镜像(VMI)是一组版本化的开源基础镜像,可以直接使用或扩展。它替代了已弃用的沙箱运行时。
新的默认镜像是什么?它基于什么操作系统?包含哪些主要组件?
新的默认镜像是 vercel/sandbox/universal:latest,基于 Ubuntu 26.04,包含 Node.js 24、Python 3.14(带 uv)、常用编码代理(如 opencode、claude-code、codex、pi)以及 git、vim、nano、tmux、ripgrep、jq、fzf 等标准工具。
Vercel 托管镜像如何保证安全性?
每个托管镜像每晚发布一次,滚动标签(如 latest 和主要版本标签)会自动更新操作系统和依赖,包括安全补丁。此外,镜像内的依赖尽可能固定版本,以保证一致性。
如何实现完全不可变和可复现的镜像环境?
可以通过固定镜像摘要(SHA)来实现。摘要固定的镜像会退出自动更新,从而提供完全不可变和可复现的环境。
Vercel 托管镜像目录中有哪些可用的镜像?
目录包括:universal(默认)、node:22/24/26、python:3.14、ubuntu:latest(基础 Ubuntu 26.04)和 arch:latest(Arch Linux,无预装 Node.js 或 Python)。
如何引用一个托管镜像?旧代码是否兼容?
镜像通过完整路径引用,格式为 team-slug/project/repo:tag,例如 vercel/sandbox/universal:latest。旧的 runtime 属性已弃用但未移除,因此现有代码仍然可以正常工作。
托管镜像默认以什么用户运行?是否支持 sudo?
托管镜像默认以 ubuntu 或 arch 用户运行,并支持无密码 sudo。
用户如何为托管镜像做出贡献?
用户可以通过在 GitHub 上打开 issue 或提交 PR 来改进镜像。