Skip to content

[B1] Sandbox provider interface, with Docker behind it #45

Closed

Description

@yifanxuaaa

Part of #13 ([B] Sandbox: Docker and native Linux, macOS and Windows), in the LayerFS 2.0 working plan #9.

Connect, exec, mount, close. layerfs-sandbox has only a Docker backend today.

Activity

  1. jiangkoumo commented on Oct 28, 2026

    @jiangkoumo
    Collaborator

    我想认领 B1。之前做过 layerfs#402(sandbox local backend)和 #427(macOS 原生),对 sandbox 的生命周期和挂载路径比较熟。打算先把 provider 接口草案发在这里(创建、挂载、执行、卸载、关闭、列举,Docker 作为第一个实现),确保后面的 B2/B3/B4 能直接接上,对齐之后再开 PR。

  2. jiangkoumo commented on Oct 29, 2026

    @jiangkoumo
    Collaborator

    进度更新:B1 接口已经做成 Draft PR,直接在 PR 里对齐:
    Ephemeral-AI-Lab/layerfs#498

    • 两级接口 SandboxProvider / SandboxInstance,Docker、Linux 原生(B2,root daemon + FUSE)、macOS 原生(B3,loopback NFSv3)三种后端都收进来了,layerfs-api 和 layerfs-node 只走 provider 这一条路径
    • sandbox.record 磁盘格式、typed refusal、错误码、关闭宽限时间都不变
    • 叠在 layerfs#427 上,评审只看 #427 之后的提交
    • 本地验证:macOS / Linux 的 fmt、clippy、单测和 SDK smoke 48/48 都过,真实 Docker 的 8 个 verify 场景和基线一致;上游 CI 四项全绿
    • 不含 B8/B9/B10,后面单独做

    想请确认两点:

    1. trait 划分、SandboxRecord 枚举、ProviderLaunchOptions 按后端分变体,这个形状是否认可
    2. #498 和 #427 是一起合,还是先合 #427
  3. jiangkoumo commented on Oct 30, 2026

    @jiangkoumo
    Collaborator

    进度更新:layerfs#498 已按 layerfs#515 改完
    • 接口从 SandboxProvider / SandboxInstance trait 改成具体的 Runtime enum:Docker、MacosNative、LinuxNative、Namespaces,Windows 先占位
    • 新增 Namespaces 后端:VM 里每个 Sandbox 有独立的 namespace 和 cgroup,命令用非 root、无 capability、no-new-privs 运行,并且封掉 user namespace;Linux 上安全项全部实测通过
    • sandbox.record 格式、错误码、Docker 默认值不变;macOS / Linux 测试、SDK smoke、真实 Docker 9 个场景都和基线一致

    还想确认两点(详情在 #498 评论里):网络先和 VM 共用是否可以;镜像先用 VM 自己的系统目录,是否可以。下一步做 Microsandbox / Apple Container 的 adapter。

  4. added this to the v2.0 milestone on Oct 31, 2026
  5. added theissue type on Oct 31, 2026
  6. jiangkoumo commented on Oct 31, 2026

    @jiangkoumo
    Collaborator

    进度更新:layerfs#498 按 layerfs#515 补完 VM 部分
    • 每个 Store 一台 Linux VM,adapter 有 Microsandbox、Apple Container、SSH(Daytona 之后做)
    • Sandbox 用 bundle 带的镜像做只读根,只解压一次,每个 Sandbox 独立上层
    • 真 VM 端到端、故障场景都实测通过,真实 Docker 9 个场景和基线一致

    接口这边到此齐了,之后按 B1 / B2 / B3 拆成独立 PR。

  7. jiangkoumo commented on Oct 31, 2026

    @jiangkoumo
    Collaborator

    B1 已单独提为 Ephemeral-AI-Lab/layerfs#523:接口一次定全(含 Linux/macOS/Namespaces/VM 各变体的桩),Docker 搬到接口后面、行为不变。B2 (#524)、B3 (#525)、VM (#526) 都只依赖它,建议先合 B1。原 #498 已拆分。

  8. yifanxuaaa commented on Oct 31, 2026

    @yifanxuaaa
    ContributorAuthor

    Done: B1 (Ephemeral-AI-Lab/layerfs#523 by @jiangkoumo) is merged into layerfs_v2_0_0 (merge commit d39bb6c855).

    已完成:B1(Ephemeral-AI-Lab/layerfs#523)已合入 layerfs_v2_0_0(合并提交 d39bb6c855)。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

v2.0.0LayerFS 2.0 scope, roadmap and delivery

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions