沙盒快速入门
一个安全、可插拔的代码执行后端,专为RAGFlow和其他需要隔离代码执行环境的应用程序设计。
功能:
- 无缝集成RAGFlow——开箱即用支持RAGFlow的代码组件。
- 高安全性——使用gVisor进行系统调用级别的沙盒隔离以实现独立执行。
- 可定制化沙盒——轻松修改seccomp配置文件,以便根据需要限制系统调用。
- 可插拔运行时支持——可扩展以支持任何编程语言的运行环境。
- 开发者友好——通过方便的Makefile快速设置。
架构
架构由每种受支持语言运行环境的隔离Docker基础镜像组成,这些镜像由执行管理器服务进行管理。执行管理器使用gVisor拦截系统调用,并可选地使用seccomp配置文件增强系统调用过滤来组织沙盒代码执行。
先决条件
- 与gVisor兼容的Linux发行版。
- 安装并配置好gVisor。
- Docker版本24.0.0或更高。
- Docker Compose版本2.26.1或更高(类似于RAGFlow的要求)。
- 安装uv包和项目管理工具。
- (可选)安装GNU Make以简化命令行管理。
构建Docker基础镜像
沙盒使用隔离的基础镜像为安全容器化执行环境提供支持。
手动构建基础镜像:
docker build -t sandbox-base-python:latest ./sandbox_base_image/python
docker build -t sandbox-base-nodejs:latest ./sandbox_base_image/nodejs
或者,一次性使用Makefile构建所有基础镜像:
make build
接下来,构建执行管理器图像:
docker build -t sandbox-executor-manager:latest ./executor_manager
与RAGFlow一起运行
-
验证gVisor已正确安装并正常工作。
-
配置位于
docker/.env
的.env
文件:
- 解注释沙盒相关的环境变量。
- 在文件底部启用沙盒配置文件。
- 将以下条目添加到你的
/etc/hosts
文件中,以解析执行管理器服务:
127.0.0.1 es01 infinity mysql minio redis sandbox-executor-manager
- 如常启动RAGFlow服务。
单独运行
手动设置
- 初始化环境变量:
cp .env.example .env
- 使用Docker Compose启动沙盒服务:
docker compose -f docker-compose.yml up
- 测试沙盒设置:
source .venv/bin/activate
export PYTHONPATH=$(pwd)
uv pip install -r executor_manager/requirements.txt
uv run tests/sandbox_security_tests_full.py
使用Makefile
使用单个命令执行所有设置、构建、启动和测试操作:
make
监控
要跟踪执行管理器容器的日志,请运行:
docker logs -f sandbox-executor-manager
或者,使用Makefile快捷方式:
make logs