Files
compose-anything/builds/microsandbox/README.zh.md
2026-01-20 13:10:28 +08:00

199 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MicroSandbox
[English Documentation](README.md)
MicroSandbox 是由 Zerocore AI 开发的基于 KVM 的安全沙箱环境。它使用硬件级虚拟化技术提供隔离的轻量级虚拟机,用于安全地运行不受信任的代码。
## 特性
- **基于 KVM 的虚拟化**:利用硬件虚拟化实现强隔离
- **轻量级**:相比传统虚拟机开销更小
- **安全**:硬件级隔离保护宿主系统
- **快速启动**:虚拟机初始化快速,便于快速测试
- **多架构支持**:支持 x86_64amd64和 ARM64aarch64平台
## 前置要求
- 已安装 Docker 和 Docker Compose
- 硬件虚拟化支持KVM
- 在 BIOS 中启用 Intel VT-x 或 AMD-V
- 宿主机上可用 `/dev/kvm` 设备
- Linux 宿主系统KVM 是 Linux 特有的)
- 特权容器访问权限KVM 需要)
### 检查 KVM 支持
在运行 MicroSandbox 之前,请验证您的系统支持 KVM
```bash
# 检查 KVM 设备是否存在
ls -l /dev/kvm
# 检查 CPU 虚拟化支持
grep -E 'vmx|svm' /proc/cpuinfo
```
如果 `/dev/kvm` 不存在,请确保在 BIOS 中启用了虚拟化,并加载了 KVM 内核模块:
```bash
# 加载 KVM 模块Intel
sudo modprobe kvm_intel
# 或者 AMD
sudo modprobe kvm_amd
```
## 快速开始
1. 复制示例环境文件:
```bash
cp .env.example .env
```
2. (可选)编辑 `.env` 以自定义资源限制:
```bash
# 根据需要调整 CPU 和内存
MICROSANDBOX_CPU_LIMIT=4.00
MICROSANDBOX_MEMORY_LIMIT=4G
```
3. 构建 Docker 镜像:
```bash
docker compose build
```
4. 运行 MicroSandbox
```bash
docker compose run --rm microsandbox
```
## 使用示例
### 交互式会话
启动 MicroSandbox 交互式会话:
```bash
docker compose run --rm microsandbox
```
### 在沙箱中运行命令
在沙箱内执行特定命令:
```bash
docker compose run --rm microsandbox run "echo Hello from sandbox"
```
### 获取帮助
查看可用命令和选项:
```bash
docker compose run --rm microsandbox --help
```
## 配置
### 环境变量
| 变量 | 描述 | 默认值 |
| --------------------------------- | ----------------------------- | ----------- |
| `MICROSANDBOX_VERSION` | MicroSandbox 版本 | `latest` |
| `DEBIAN_VERSION` | Debian 基础镜像版本 | `13.2-slim` |
| `MICROSANDBOX_AUTO_PULL_IMAGES` | 构建时自动拉取基础镜像 | `true` |
| `MICROSANDBOX_DEV_MODE` | 启用开发模式(无需 API 密钥) | `true` |
| `MICROSANDBOX_PORT` | 容器内部端口 | `5555` |
| `MICROSANDBOX_PORT_OVERRIDE` | 外部主机端口映射 | `5555` |
| `TZ` | 容器时区 | `UTC` |
| `MICROSANDBOX_CPU_LIMIT` | CPU 核心数上限 | `4` |
| `MICROSANDBOX_CPU_RESERVATION` | CPU 核心数预留 | `1` |
| `MICROSANDBOX_MEMORY_LIMIT` | 最大内存分配 | `4G` |
| `MICROSANDBOX_MEMORY_RESERVATION` | 内存预留 | `1G` |
### 卷挂载
- `microsandbox_namespaces`MicroSandbox 命名空间配置和虚拟机状态
- `microsandbox_workspace`:沙箱操作的工作目录
## 安全注意事项
### 特权模式
MicroSandbox 需要 `privileged: true` 以访问 KVM 设备。这对于硬件虚拟化是必需的,但会授予容器提升的权限。请考虑以下事项:
- 仅在受信任的系统上运行 MicroSandbox
- 审查您计划在沙箱中执行的代码
- 保持 MicroSandbox 镜像更新以获取安全补丁
- 如果运行不受信任的代码,请使用网络隔离
- 在生产环境中,通过设置 `MICROSANDBOX_DEV_MODE=false` 禁用开发模式
**为什么需要特权模式?**
MicroSandbox 使用 KVM基于内核的虚拟机来提供硬件级隔离。与共享主机内核的 Docker 容器不同MicroSandbox 创建具有自己内核的真实虚拟机。这提供了更强的安全边界,即使 Docker 容器本身以特权模式运行。
特权容器只是协调器——实际的不受信任代码在具有硬件强制边界的隔离虚拟机内运行。此架构专门设计用于安全地运行不受信任的代码。
### KVM 设备访问
容器需要访问 `/dev/kvm` 以进行硬件虚拟化。映射方式如下:
```yaml
devices:
- /dev/kvm:/dev/kvm
```
确保宿主系统的 KVM 设备具有适当的权限。
## 架构支持
MicroSandbox 支持两种主要架构:
- **amd64**x86_64Intel 和 AMD 处理器
- **arm64**aarch64基于 ARM 的处理器(例如 AWS Graviton、通过 Linux VM 的 Apple Silicon
在构建过程中会根据目标平台自动选择正确的二进制文件。
## 故障排除
### KVM 不可用
如果您看到关于 KVM 不可用的错误:
1. 验证在 BIOS 中启用了硬件虚拟化
2. 检查是否加载了 KVM 内核模块:`lsmod | grep kvm`
3. 确保 `/dev/kvm` 存在并具有正确的权限
4. 确认您在 Linux 宿主机上运行(而不是 WSL2 或 macOS
### /dev/kvm 权限被拒绝
```bash
# 将您的用户添加到 kvm 组
sudo usermod -aG kvm $USER
# 或使用 sudo 运行
sudo docker compose run --rm microsandbox
```
### 性能问题
如果您遇到性能缓慢的问题:
- 在 `.env` 中增加 CPU 和内存限制
- 验证 KVM 加速是否正常工作:`dmesg | grep kvm`
- 检查宿主系统资源可用性
## 参考资料
- [MicroSandbox GitHub 仓库](https://github.com/zerocore-ai/microsandbox)
- [Zerocore AI](https://zerocore.ai/)
- [KVM 文档](https://www.linux-kvm.org/)
## 许可证
MicroSandbox 是 Zerocore AI 的开源项目。有关许可证信息,请参阅[上游仓库](https://github.com/zerocore-ai/microsandbox)。