Docker 容器指南
其他语言
Symbi 提供了一个统一的 Docker 容器,包含所有功能,可通过 GitHub Container Registry 获取。
可用镜像
统一 Symbi 容器
- 镜像:
ghcr.io/thirdkeyai/symbi:latest - 用途:包含 DSL 解析、智能体运行时和 MCP 服务器的一体化容器
- 大小:约 80MB(包含向量数据库和 HTTP API 支持)
- CLI:统一的
symbi命令,带有不同操作的子命令
快速开始
使用预构建镜像
# Pull latest image
docker pull ghcr.io/thirdkeyai/symbi:latest
# Parse a DSL file
docker run --rm -v $(pwd):/workspace \
ghcr.io/thirdkeyai/symbi:latest \
dsl --file /workspace/agent.dsl
# Run MCP server (stdio-based, no port needed)
docker run --rm -i \
ghcr.io/thirdkeyai/symbi:latest \
mcp
# Run with HTTP API
docker run --rm -p 8080:8080 \
ghcr.io/thirdkeyai/symbi:latest \
up --http-bind 0.0.0.0:8080
开发工作流
# Interactive development
docker run --rm -it -v $(pwd):/workspace \
ghcr.io/thirdkeyai/symbi:latest bash
# Development with volume mounts and ports
docker run --rm -it \
-v $(pwd):/workspace \
-p 8080:8080 \
-p 3000:3000 \
ghcr.io/thirdkeyai/symbi:latest bash
可用标签
latest- 最新稳定版本main- 最新开发构建v1.0.0- 特定版本发布sha-<commit>- 特定提交构建
本地构建
统一 Symbi 容器
# From project root
docker build -t symbi:latest .
# Test the build
docker run --rm symbi:latest --version
# Test DSL parsing
docker run --rm -v $(pwd):/workspace symbi:latest dsl --help
# Test MCP server
docker run --rm symbi:latest mcp
多架构支持
镜像构建支持以下架构:
linux/amd64(x86_64)linux/arm64(ARM64/Apple Silicon)
Docker 会自动为您的平台拉取正确的架构。
安全特性
非 Root 执行
- 容器以非 root 用户
symbi(UID 1000)运行 - 使用安全加固的基础镜像,攻击面最小化
漏洞扫描
- 所有镜像自动使用 Trivy 扫描
- 安全公告发布到 GitHub Security 标签页
- 提供 SARIF 报告用于详细的漏洞分析
配置
环境变量
Symbi 容器:
RUST_LOG- 设置日志级别(debug、info、warn、error)SYMBIONT_VECTOR_BACKEND- 向量后端:lancedb(默认)或qdrantQDRANT_URL- Qdrant 向量数据库 URL(仅在使用可选的 Qdrant 后端时需要)
卷挂载
# Mount agent definitions
-v $(pwd)/agents:/var/lib/symbi/agents
# Mount configuration
-v $(pwd)/config:/etc/symbi
# Mount data directory
-v symbi-data:/var/lib/symbi/data
Docker Compose 示例
默认情况下,Symbiont 使用 LanceDB 作为嵌入式向量数据库——不需要外部服务。如果您需要分布式向量后端用于规模化部署,可以选择添加 Qdrant。
最小配置(LanceDB 默认——不需要 Qdrant)
version: '3.8'
services:
symbi:
image: ghcr.io/thirdkeyai/symbi:latest
ports:
- "8080:8080"
- "3000:3000"
volumes:
- ./agents:/var/lib/symbi/agents
- ./config:/etc/symbi
- symbi-data:/var/lib/symbi/data
environment:
- RUST_LOG=info
command: ["up", "--http-bind", "0.0.0.0:8080"]
volumes:
symbi-data:
带可选 Qdrant 后端
version: '3.8'
services:
symbi:
image: ghcr.io/thirdkeyai/symbi:latest
ports:
- "8080:8080"
- "3000:3000"
volumes:
- ./agents:/var/lib/symbi/agents
- ./config:/etc/symbi
- symbi-data:/var/lib/symbi/data
environment:
- RUST_LOG=info
- SYMBIONT_VECTOR_BACKEND=qdrant
- QDRANT_URL=http://qdrant:6334
depends_on:
- qdrant
command: ["up", "--http-bind", "0.0.0.0:8080"]
qdrant:
image: qdrant/qdrant:latest
ports:
- "6333:6333"
- "6334:6334"
volumes:
- qdrant-data:/qdrant/storage
volumes:
symbi-data:
qdrant-data:
故障排除
常见问题
权限被拒绝:
# Ensure correct ownership
sudo chown -R 1000:1000 ./data
# Or use different user
docker run --user $(id -u):$(id -g) ...
端口冲突:
# Use different ports
docker run -p 8081:8080 ghcr.io/thirdkeyai/symbi:latest
构建失败:
# Clear Docker cache
docker builder prune -a
# Rebuild without cache
docker build --no-cache -f runtime/Dockerfile .
健康检查
# Check container health
docker run --name symbi-test -d ghcr.io/thirdkeyai/symbi:latest up --http-bind 0.0.0.0:8080
docker exec symbi-test /usr/local/bin/symbi --version
docker rm -f symbi-test
性能优化
资源限制
# Set memory and CPU limits
docker run --memory=512m --cpus=1.0 \
ghcr.io/thirdkeyai/symbi:latest mcp
构建优化
# Use BuildKit for faster builds
DOCKER_BUILDKIT=1 docker build .
# Multi-stage caching
docker build --target builder -t symbi-builder .
docker build --cache-from symbi-builder .
CI/CD 集成
GitHub Actions 在以下情况自动构建和发布容器:
- 推送到
main分支 - 新版本标签 (
v*) - Pull request(仅构建)
镜像包含以下元数据:
- Git 提交 SHA
- 构建时间戳
- 漏洞扫描结果
- SBOM(软件物料清单)