docker - 您可以在 Cloud Run 容器中运行沙盒容器吗?

标签 docker google-cloud-platform sandbox google-cloud-run gvisor

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

我如何使 gvisor runc 或其他一些沙箱运行时在 Cloud Run 上运行的容器内可用?

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

谢谢你。

最佳答案

目前,Cloud Run(完全托管)本身在 gVisor 沙箱上运行,因此它对使用 cgroup 或 Linux 命名空间 API 创建进一步容器环境的低级 Linux API 的支持可能是不可能的。

但是,由于 gVisor 从技术上讲是一种用户空间沙盒技术(尽管我不确定它需要什么级别的权限),因此您可能能够在 gVisor 中运行 gVisor 沙盒,尽管我不会抱太大希望,因为它可能是不是为此而设计的。我猜 gVisor 沙箱没有为嵌套沙箱提供 ptrace 功能,尽管您可以在 gVisor 自己的 GitHub 存储库上询问。

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

通常容器本身应该是沙箱,所以尝试创建更多的沙箱( like you asked earlier )将是很多平台相关的工作,即使你可以以某种方式运行它。

关于docker - 您可以在 Cloud Run 容器中运行沙盒容器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61486156/

相关文章:

spring-boot - 连接被拒绝 : While Running the Docker Compose

java - Alpine 的自定义运行时图像

javascript - 从 MongoDB 检索 Docker 日志

google-cloud-platform - Google Cloud Natural Language API 是否使用或包含 Parsey McParseface?

machine-learning - 导入错误: cannot import name JSONClient

macos - 如何在沙盒应用程序中添加快速查看生成器?

node.js - docker桥接本地主机端口

facebook - 沙盒模式已禁用,但应用程序对所有人不可见

c - 如何创建一个轻量级的 C 代码沙箱?

pointers - 将接口(interface)实体放入 Google Cloud Datastore 失败