这是一个异步Flask服务器,通过暴露Docker管理端点来实现与Claude Desktop和Claude Code的MCP(模型上下文协议)集成。该服务器通过挂载Docker套接字与Docker守护进程通信,从而通过AI助手实现全面的容器管理。
在Windows上使用WSL2和Docker Desktop运行Gnosis Docker效果最佳,因为它提供了原生的Docker套接字访问:
# 在PowerShell中以管理员身份运行
wsl --install
# 重新启动计算机
# 运行设置辅助脚本
.\setup-docker-desktop.ps1
或者手动配置:
在WSL2中:
# 检查Docker套接字是否可访问
ls -la /var/run/docker.sock
# 应显示:srw-rw---- 1 root docker 0 [日期] /var/run/docker.sock
# 测试Docker连接
docker version
对于没有WSL2的开发,可以使用Docker Desktop的TCP端点:
$env:DOCKER_HOST = "tcp://localhost:2375".\setup-docker-desktop.ps1以验证设置注意:此方法存在限制和安全考虑。强烈推荐使用WSL2。
Gnosis Docker通过挂载Docker套接字与Docker守护进程通信:
/var/run/docker.sock(挂载到容器中)tcp://localhost:2375(仅用于开发)gnosis-docker/
├── deploy.ps1 # 适用于所有环境的单个部署脚本
├── deploy-wsl2.sh # WSL2部署脚本
├── requirements.txt # Python依赖项
├── setup.ps1 # 初始设置脚本
├── setup-docker-desktop.ps1 # Docker Desktop配置辅助脚本
├── Dockerfile # Docker配置
├── docker-compose.yml # 使用Redis的本地开发
├── .env.example # 环境变量模板
├── .gitignore # Git忽略文件
├── README.md # 本文件
├── WSL2_README.md # WSL2特定文档
├── app.py # 主Flask应用程序
├── core/ # 核心应用程序模块
│ ├── __init__.py
│ ├── docker_manager.py # Docker操作处理器
│ ├── auth.py # 认证中间件
│ ├── config.py # 配置管理
│ ├── validation.py # 容器安全验证
│ └── utils.py # 工具函数
├── tests/ # 测试套件
│ ├── __init__.py
│ └── test_docker_api.py
├── mcp/ # MCP工具目录
│ ├── README.md # MCP工具文档
│ ├── requirements.txt # MCP特定依赖项
│ ├── setup.py # MCP工具设置脚本
│ ├── gnosis_docker_mcp.py # Docker管理MCP工具
│ ├── file_manager_mcp.py # 文件操作MCP工具
│ └── example_utilities_mcp.py # 示例MCP工具
└── cleanup_*.py|ps1|sh # 仓库清理脚本
# 从WSL2终端
cd /mnt/c/Users/kord/Code/gnosis/gnosis-docker
# 使脚本可执行
chmod +x deploy-wsl2.sh
# 本地部署
./deploy-wsl2.sh
# 初始设置(只需运行一次)
.\setup.ps1
# Windows - 本地部署
.\deploy.ps1 -Target local
# Windows - 部署到预发布环境
.\deploy.ps1 -Target staging
# Windows - 部署到生产环境
.\deploy.ps1 -Target production
# Windows - 从头开始重建
.\deploy.ps1 -Target local -Rebuild
# Windows - 干运行(查看会发生什么)
.\deploy.ps1 -Target production -WhatIf
/mcp目录包含可用于与Claude Code和Claude Desktop集成的MCP工具:
# 导航到MCP工具
cd mcp
# 安装依赖项
pip install -r requirements.txt
# 运行设置和验证
python setup.py
# 与Claude Code配置
claude mcp add gnosis-docker python3 gnosis_docker_mcp.py
# 测试集成
claude
# 然后尝试:"列出Docker容器","检查Docker健康"
请参阅mcp/README.md获取完整的MCP设置说明。
GET /health - 健康检查GET /api/containers - 列出所有容器GET /api/containers/<id> - 获取容器详情POST /api/containers/<id>/start - 启动容器POST /api/containers/<id>/stop - 停止容器POST /api/containers/<id>/restart - 重启容器DELETE /api/containers/<id> - 删除容器GET /api/containers/<id>/logs - 获取容器日志GET /api/containers/<id>/stats - 获取容器状态GET /api/images - 列出所有镜像POST /api/images/pull - 拉取一个镜像DELETE /api/images/<id> - 删除一个镜像POST /api/build - 构建一个Gnosis项目POST /api/projects/<name>/deploy - 部署一个项目此服务器通过MCP工具提供Docker管理功能给AI助手:
Gnosis Docker MCP (mcp/gnosis_docker_mcp.py)
文件管理MCP (mcp/file_manager_mcp.py)
示例实用程序MCP (mcp/example_utilities_mcp.py)
Claude Code(推荐):
claude mcp add gnosis-docker python3 /path/to/gnosis-docker/mcp/gnosis_d
ocker_mcp.py
Claude Desktop:
添加到claude_desktop_config.json:
{
"mcpServers": {
"gnosis-docker-mcp": {
"command": "python",
"args": ["C:\\path\\to\\gnosis-docker\\mcp\\gnosis_docker_mcp.py"]
}
}
}
此仓库包括清理脚本以移除不需要的版本控制目录和Python缓存文件:
# Python脚本(跨平台)
python cleanup_comprehensive.py
# PowerShell脚本(Windows)
.\cleanup_comprehensive.ps1
# Bash脚本(Linux/WSL2)
./cleanup_quick.sh
这些脚本将移除:
*_versions/目录__pycache__/目录*.pyc文件.gitignore以包含正确模式FLASK_ENV - 环境(开发/预发布/生产)
DOCKER_HOST - Docker守护进程URL(默认:unix:///var/run/docker.sock,或Windows上的tcp://localhost:2375)
API_KEY - 生产认证密钥
REDIS_URL - 缓存的Redis URL(可选)
GNOSIS_DOCKER_URL - API端点URL(默认:http://localhost:5680)
# 安装依赖项
pip install -r requirements.txt
# 或使用设置脚本
.\setup.ps1
# 在开发模式下运行
python app.py
# 运行测试
python -m pytest tests/
# 测试API端点
python test_api.py
# 构建容器
docker build -t gnosis-docker .
# 或使用部署脚本
.\deploy.ps1 -Target local
# 使用Docker Compose运行
docker-compose up -d
# 查看日志
docker-compose logs -f gnosis-docker
此Docker控制器设计用于与其他Gnosis组件协同工作:
MCP工具提供统一接口,使AI助手能够通过Docker容器管理整个Gnosis生态系统。
curl http://localhost:5680/api/containers
curl -X POST http://localhost:5680/api/containers/mycontainer/start
curl http://localhost:5680/api/containers/mycontainer/logs?tail=100
curl -X POST http://localhost:5680/api/build \
-H "Content-Type: application/json" \
-d '{"project": "gnosis-wraith", "tag": "latest"}'
在WSL2中无法访问Docker守护进程
ls -la /var/run/docker.sock在Windows中无法访问Docker守护进程
DOCKER_HOST环境变量.\setup-docker-desktop.ps1“无法连接到Docker守护进程”的错误
docker versioncurl http://localhost:2375/version容器无法启动
docker-compose logs gnosis-dockernetstat -an | findstr 5680端口5680已被占用
MCP工具无法连接
路径问题双斜杠
/mnt/c/前缀# 检查API服务器日志
docker-compose logs gnosis-docker
# 启用调试日志
export FLASK_ENV=development # WSL2
$env:FLASK_ENV = "development" # PowerShell
python app.py
# 测试API健康状况
curl http://localhost:5680/health
# 测试Docker套接字访问(WSL2)
docker version
ls -la /var/run/docker.sock
此项目是Gnosis生态系统的一部分,并遵循相同的许可条款。