PPIO Agent 沙箱服务已经内置一些公共模板方便您开箱即用,您可以在 控制台 找到这些公共模板。
ppio.Dockerfile
来创建一个新的沙箱模板,并返回模板 ID 用于创建沙箱。详见下方教程。
如何创建自定义沙箱
1. 安装 PPIO 沙箱命令行工具
请参考 教程 来进行安装,并完成 认证。2. 初始化沙箱模板
以下命令将在当前目录下创建一个基础ppio.Dockerfile
文件。
3. 自定义ppio.Dockerfile
现在您可以通过编辑 ppio.Dockerfile
文件来自定义您的沙箱模板。
4. 构建沙箱模板
现在您可以开始构建沙箱模板。下面命令会调用本地 Docker 工具来构建镜像,然后将其推送到 PPIO 的远程镜像仓库。 我们会在云端将 Docker 镜像转换为 firecracker 的 microVM 镜像,后续会基于该镜像来启动沙箱实例。下面通过
-c
参数指定了启动命令,有关启动命令的用法请参考这里。5. 启动您的自定义沙箱
现在您可以使用上一步获得的模板 ID 来创建沙箱。工作原理
每次构建一个沙箱模板时,我们都会基于ppio.Dockerfile
文件创建一个容器。我们会提取容器的文件系统,进行配置(例如安装所需依赖项等),然后启动一个沙箱实例。
接下来我们会:
- 获取正在运行的沙箱实例。
- 执行 启动命令。仅当您指定了 “启动命令” 则会执行该步骤,否则跳过。
- 等待就绪(如果指定了 “启动命令”,则默认等待 20 秒,否则立即就绪)。就绪检查逻辑可以通过 就绪命令 进行配置。
- 对当前正在运行的沙箱进行快照并使其准备好供后续创建沙箱时使用。
我们将整个沙箱的文件系统连同所有正在运行的进程以一种 “稍后可快速加载” 的方式进行序列化和保存。这使我们能够在稍后的任何时候在几百毫秒内加载沙箱,加载后,所有进程处于运行状态,并且文件系统完全保持原样。