@ computesdk/ 创建os- sandbox
计算SDK 提供方 创建OS —— 说
节点Ops的creatos-sandbox VM沙盒服务. 细适配器于
正式 @nodeops-createos/sandbox。 。 。 .
安装
npm install computesdk @computesdk/createos-sandbox
使用量
import { compute } from "computesdk";
import { createosSandbox } from "@computesdk/createos-sandbox";
compute.setConfig({
provider: createosSandbox({
apiKey: process.env.CREATEOS_SANDBOX_API_KEY,
baseUrl: process.env.CREATEOS_SANDBOX_BASE_URL,
}),
});
const sandbox = await compute.instances.create({ memoryMb: 1024, image: "devbox:1" });
const { stdout } = await sandbox.runCommand("echo hello");
await sandbox.filesystem.writeFile("/tmp/x.txt", "hi");
await sandbox.destroy();
配置
| 外地 | 信封倒置 | 页:1 |
|---|---|---|
apiKey | CREATEOS_SANDBOX_API_KEY | 要求。 creatos-sandbox API 密钥 . |
baseUrl | CREATEOS_SANDBOX_BASE_URL | 控制飞机URL. 可选;默认为生产控制平面. |
shape | —— 说 | 默认 VM 形状( 如 . s-1vcpu-1gb) (中文(简体) ). |
rootfs | —— 说 | 默认 rootfs 分类名/ 模板 . |
timeout | —— 说 | 已报告 getInfo().timeout (数). 腾讯. |
能力绘图
从 a 创建 sandbox 大小 VM 形状目录 (不是免费的cpu/mem),所以
create() 获取实时目录( r)GET /v1/shapes)和地图
cpus编号 :memoryMb 在最小的形状适合。 传递指定提供者
shape 精确地标出一个( 跳过目录获取) 。 没有大小被钉住
默认是最小的活体形状,带有% 1 GiB RAM. image编号 :runtime 地图到
rootfs· ; ephemeralDiskMb 直接传递到 disk_mib (单位:千美元)
控制平面验证; 0/出自 = 该形状的默认磁盘.
| 计算SDK | 创建沙盒 |
|---|---|
| 形状选择 | GET /v1/shapes (生活目录,最近的合适) |
sandbox.create 编号 : getById 编号 : list 编号 : destroy | POST/GET/DELETE /v1/sandboxes |
sandbox.runCommand | POST /v1/sandboxes/:id/exec (包装在 sh -c(中文(简体) ) |
sandbox.getInfo | GET /v1/sandboxes/:id |
sandbox.getUrl({port}) | 每箱入侵 URL |
filesystem.readFile 编号 : writeFile | GET/PUT /v1/sandboxes/:id/files |
filesystem.mkdir 编号 : readdir 编号 : exists 编号 : remove | 合成通过 runCommand |
snapshot.create 编号 : list 编号 : delete | 暂停 fork({ start_paused: true }) * 恢复/列表已暂停 destroy |
模板构建( E)/v1/templates已经 没有 通过计算SDK曝光
提供者表面——计算SDK的公开 Provider 类型无法携带
creas 特定 dockerfile 安全创建选项类型。 构建模板
当地人 @nodeops-createos/sandbox 客户端( e)client.templates.create(中文(简体) )
直接说.
原生出逃舱
计算SDK的核心表面没有暂停/重置/叉. 全力以赴
@nodeops-createos/sandbox Sandbox 操作通过 getInstance()数字 :
const native = sandbox.getInstance();
await native.pause();
await native.waitUntilPaused(); // pause() returns while the VM is still "pausing"
const clone = await native.fork();
await native.resume();
await native.attachDisk({ diskId: "my-bucket", mountPath: "/mnt/data" });
已知的限制
runCommandenv/cwd被合成 – 创建- sadbox 滴入每个执行内存 服务器侧,所以env编号 :cwd以内线将命令包入注入sh -c剧本. Sandbox-level env 应当设置在创建时间(envs) (中文(简体) ).- 快照被暂停了 - 只从一个暂停的沙盒里创造出叉子,
这样
snapshot.create短暂地暂停源, 叉入已暂停的复制件 (快照,用自有的id)并恢复源.create({ snapshotId })复制到新沙盒的叉子;snapshot.delete摧毁它。 A 类 当进程运行时拍摄的快照也捕捉到其内存状态 . getUrl打开入侵 ——沙盒由外出而来 (通过)ingressEnabled: true(一) 能够创造;getUrl打开它 要求第一次请求 URL 。 入侵目前服务于非CA TLS 证书并剥去Authorization上游页眉-使用protocol: "http"编号 :curl -k不要依赖 HTTP 认证 后入内地.readdir剖析ls产出 ——依靠克来提斯ls在树根.
许可证
麻省理工学院