你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 容器应用沙盒概述(预览版)

Azure 容器应用沙盒提供具有内置暂停和恢复功能的快速、安全、临时计算环境。 沙盒是容器应用中的一级资源类型(Microsoft.App/SandboxGroups),与应用、作业和动态会话并列。

Important

若要管理和创建沙盒,你需要具有 Azure 角色 Container Apps SandboxGroup Data Owner。 将此角色分配给创建和管理沙盒的所有用户。

在预览期间创建的沙盒可能与将来的版本不兼容,可能需要重新创建。

Python SDK 和 Azure 容器应用 CLI 命令的 API 图面可能会在预览期间更改。

创建和管理沙盒环境

可以在 Sandboxes 门户或使用 Azure 容器应用 CLI 或 SDK 以编程方式创建和管理沙盒。

容器应用沙盒的主要特征

  • 亚秒级启动:沙盒从预热池中进行配置,以实现近乎即时的可用性。

  • 强隔离:每个沙盒都在各自独立的安全边界内运行,可安全地执行不受信任的代码。

  • 缩容到零:沙盒停止运行时,你无需支付 CPU 或内存费用。

  • 扩展:服务可按需扩展到数千个并发沙盒。

  • OCI 容器镜像支持:使用附带的公共镜像,或带入你自己的容器镜像作为沙盒根文件系统。

  • 暂停和恢复:对包括内存和磁盘在内的完整状态进行快照,并可在稍后以亚秒级恢复时间恢复。

  • 生命周期控制:你可以管理完整的沙箱生命周期,包括状态快照、持久存储和网络策略(包括出口和入口)。

何时使用沙盒

当你需要隔离的计算环境,具备显式生命周期控制、持久状态或通过SDK可编程访问时,可以使用沙盒。

Scenario 使用沙盒吗? 为什么
支持状态保留的 AI 代码执行 Yes 在任务之间暂停,恢复时完整保留上下文
开发环境 Yes 按需创建且可暂停的环境,可在不同会话间保留状态
代理工作流 Yes 为 AI 代理提供跨任务边界的持久隔离工作区
交互式用户会话 Yes 每个用户获取自己的独立计算环境
安全的多租户计算 Yes 为来自多个租户的不可信工作负载提供强隔离
突发性工作负载 Yes 按需将沙盒数量从零扩展到数千个
CI/CD 管道 Yes 空闲时可缩减为零的临时构建和测试环境

选择正确的容器应用计算选项

使用下表选择适合工作负荷的容器应用计算类型。

计算类型 最适用于 Lifecycle
应用 长时间运行的服务、API、Web 应用 连续 无状态(外部状态存储)
作业 运行至完成任务,批处理 开始 → 运行 → 完成 无状态
动态会话 托管代码执行,LLM 生成的脚本 由会话池管理 临时
沙盒 具有生命周期控制的可编程独立计算 你管理:创建、暂停、恢复、删除 有状态(快照、卷)

重要概念

先决条件

若要创建或管理沙盒,需要Azure角色分配Container Apps SandboxGroup 数据所有者。 如果没有此角色,则无法执行沙盒操作。 在 Azure 门户中或使用 Azure CLI,在所需作用域内(Azure 订阅或 Azure 资源组)分配此角色。

在运行以下命令之前,请将由 <> 包围的占位符替换为您自己的值。

az role assignment create \
  --assignee "<USER_EMAIL_OR_OBJECT_ID>" \
  --role "Container Apps SandboxGroup Data Owner" \
  --scope "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>"

沙盒组

沙盒组是沙盒的最高级别管理边界。 这是你在资源组和区域中创建的 Azure 资源管理器 (ARM) 资源。 所有沙盒、磁盘映像、快照、卷和密钥均限定在沙盒组范围内。

使用沙盒组按应用程序、团队或环境组织沙盒。

沙盒

沙盒是沙盒组中的单个独立计算实例。 每个沙盒都从磁盘映像或快照运行,并有自己的 CPU、内存、磁盘和网络边界。

可以通过执行命令、管理文件、公开端口以及控制生命周期状态来与沙盒进行交互。

磁盘映像

磁盘映像是转换的 OCI 容器映像,用作沙盒根文件系统。 可以使用公共映像或从自己的容器注册表创建专用映像。

可以从以下方法生成磁盘映像:

  • 公共镜像:可供所有沙盒组使用的预构建镜像。
  • 容器注册表镜像:可选择使用身份验证从公共或私有注册表拉取。

Snapshots

快照可捕获运行中沙盒的完整状态,包括内存和磁盘。 使用快照可以:

  • 暂停和恢复:暂停沙盒,并在稍后恢复,且其中所有进程和数据均保持不变。
  • 克隆环境:从已知良好状态创建新的沙盒。
  • 共享基线:在团队中分发预配置的环境。

Volumes

Microsoft 管理卷并提供持久存储,您可以将其挂载到沙盒中。 有两种卷类型可用:

卷类型 Description
Azure Blob 在多个沙箱之间共享数据(上传和下载、持久化产物)。 可同时装载到多个沙盒。
数据磁盘 适用于数据库、构建缓存和大型工作集的高性能卷。 每次仅可挂载到一个沙盒。

生命周期状态

沙盒会经历以下状态:

Description
Running 主动执行,使用CPU和内存
已停止 被用户、API或生命周期策略阻止

当沙箱停止时,操作会根据暂停模式(见下节)拍摄并保存快照。

你可以为每个沙箱配置生命周期策略:

  • 自动暂停:在可配置的超时时间过后,暂停一个空闲的沙箱。 当沙箱没有入口(进入)流量、没有代码执行(通过执行 API)、没有交互式 shell 会话以及没有文件操作时,它就处于空闲状态。
  • 挂起模式:请在内存模式(完整快照 - 磁盘 + 内存)和磁盘模式(仅保留磁盘)之间进行选择。
  • 自动删除:在沙盒停止后的指定天数后自动删除沙盒。

Architecture

沙盒使用双平面体系结构:

飞机 终结点 Operations
ARM 控制平面 management.azure.com 创建、更新、删除和列出沙盒组。 管理 VNet 连接。
ADC 数据平面 management.azuredevcompute.io 管理沙盒、磁盘映像、快照、文件、卷、机密、端口和出口策略。

可以通过 ARM 控制平面创建和管理沙盒组。 单个沙盒及其资源上的所有操作都经过 ADC 数据平面,范围限定为特定的沙盒组。

资源层级

为每个沙盒分配一个资源层,用于检查其 CPU、内存和磁盘分配。

CPU Memory Disk
XS 0.25 核 0.5 GB 20 GB
S 0.5 核 1GB 20 GB
M (默认值) 1 核 2 GB 20 GB
L 2 个核心 4 GB 40 GB
XL 4 核 8 GB 80 GB

Considerations

使用沙盒时,请考虑以下几点:

  • Entra ID必需:只有Microsoft Entra ID帐户可以访问沙盒。 不支持个人Microsoft帐户。
  • 网络控制:你可以配置出口策略来控制来自沙箱的出站流量,包括基于域的允许或拒绝规则、基于CIDR的网络规则以及VNet集成。

沙盒与动态会话的比较

沙盒和 动态会话 在容器应用中都提供隔离的计算环境,但它们满足不同的需求。

动态会话 沙盒
访问模式 通过会话池管理终结点路由 HTTP 请求 通过 SDK 和 CLI 直接控制单个沙盒
状态 临时,在冷却后被销毁 支持暂停、恢复和快照的状态化
开发人员控件 池管理分配和生命周期 管理沙盒生命周期、文件、端口和策略
图像模型 代码解释器(内置)或自定义容器 磁盘映像(OCI)、快照、内容包
持久性存储 不可用 卷(Azure Blob、数据磁盘)
网络 基本隔离 出口策略、VNet 集成、端口管理
SDK 通过池端点访问 REST API Python SDK (azure-containerapps-sandbox) 和 REST API

当您需要一种可屏蔽底层基础设施细节的托管式执行体验时,请选择动态会话。 如果需要通过状态持久性对独立计算进行可编程控制,请选择沙盒。