您可以 运行 Cloud 运行 容器中的沙盒容器吗?

Can you run a sandbox container within a Cloud Run container?

假设我想让用户上传一些 python 或 bash 脚本,在云中执行它 运行 并取回结果。为此,我将使用无权访问项目资源的服务帐户创建一个 Cloud 运行 服务。我也会 运行 嵌套容器中的脚本,这样用户就不会干扰服务器代码并操纵来自其他用户的连续请求。

我如何让 gvisor 运行sc 或其他一些沙箱 运行time 在容器 运行ning on Cloud 运行 中可用?

我发现一些资源提到在原始容器上使用特权标志,但这在 Cloud 运行 中是不可能的。另外,我找不到任何关于如何使用 运行sc 来 运行 无根容器的信息。让我知道我是否在正确的轨道上,或者这是否可以通过云 运行 或者我应该使用其他服务?

谢谢。

目前云 运行(完全托管)本身 运行 在 gVisor 沙箱本身上,因此它支持低级 Linux API,用于使用 cgroups 或创建更多容器环境Linux 名称space API 可能无法实现。

但是,由于 gVisor 在技术上是一种用户-space 沙盒技术(虽然我不确定它需要什么级别的权限),您可以 运行 一个 gVisor 沙盒在里面gVisor,虽然我不会抱太大希望,因为它可能不是为此而设计的。我猜测 gVisor 沙箱不提供 ptrace 嵌套沙箱的工作能力,尽管您可以在 gVisor 自己的 GitHub 存储库中询问这个问题。

对于这样的用例,我建议查看 Cloud 运行 for Anthos on GKE,它是与 Cloud 运行 类似的开发人员体验,但 运行 是您的应用程序GKE 节点(即 GCE 虚拟机)具有完整的 Linux 系统调用套件。由于 Kubernetes podspec 在那里可用,您实际上可以创建特权容器,并在其中创建 运行 VM 等

通常容器本身就是沙箱,因此尝试创建更多沙箱 () 将需要大量依赖于平台的工作,即使您可以做到 运行宁莫名其妙。