跳到主要内容

沙盒快速入门

一个安全、可插拔的代码执行后端,专为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一起运行

  1. 验证gVisor已正确安装并正常工作。

  2. 配置位于docker/.env.env文件:

  • 解注释沙盒相关的环境变量。
  • 在文件底部启用沙盒配置文件。
  1. 将以下条目添加到你的 /etc/hosts 文件中,以解析执行管理器服务:
127.0.0.1 es01 infinity mysql minio redis sandbox-executor-manager
  1. 如常启动RAGFlow服务。

单独运行

手动设置

  1. 初始化环境变量:
cp .env.example .env
  1. 使用Docker Compose启动沙盒服务:
docker compose -f docker-compose.yml up
  1. 测试沙盒设置:
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