容器运维面板 - Rabbit Panel
容器运维面板 - Rabbit Panel
一个极致轻量化的容器运维面板,专为 4GB 内存设备设计,支持 ARM64/armv7l/x86_64 架构。
仓库地址: Rabbit Panel
特性
- 🚀 极致轻量: 运行时内存 ≤30MB,部署包 ≤10MB
- 🐳 容器管理: 启动/停止/重启/删除容器,实时查看日志
- 📦 镜像管理: 查看和删除镜像
- 📊 系统监控: 实时 CPU/内存/磁盘使用率监控
- 🌐 响应式设计: 支持 PC/平板/手机浏览器
- 🔧 无依赖: 单二进制文件,无需数据库,无需额外安装
- 🎯 多节点管理: 支持 Master/Worker 模式,统一管理多服务器节点
- 🔒 安全认证: 用户登录认证和节点间通信加密
系统要求
- Docker 20.10+ 已安装并运行
- Linux 系统 (Armbian/Ubuntu/Debian)
- 4GB+ 内存设备
- Go 1.22+ (仅编译时需要)
快速开始
1. 安装 Docker (如果未安装)
1 | # Ubuntu/Debian |
2. 下载编译好的二进制文件
根据你的系统架构下载对应的版本:
1 | # x86_64 |
3. 从源码编译
1 | # 克隆代码 |
4. 运行面板
1 | # 确保 static 目录存在 |
5. 访问面板
- 本地访问:
http://localhost:9999 - 外网访问:
http://<服务器IP>:9999 - 默认账户:
admin/admin
注意: 首次登录必须修改密码。默认监听
0.0.0.0:9999,可以从外网访问。
功能说明
容器管理
- 列表展示: 显示容器 ID、名称、镜像、状态、端口映射、内存占用、创建时间
- 操作功能: 启动、停止、重启、删除、查看日志(实时流式输出)
- 自动刷新: 容器列表每 5 秒自动刷新
镜像管理
- 列表展示: 显示镜像 ID、名称、标签、大小、创建时间
- 操作功能: 删除镜像(如果被容器使用会提示先删除容器)
系统监控
- 实时监控: CPU 使用率、内存使用率、磁盘使用率
- 自动刷新: 每 5 秒自动刷新
- 时间显示: 显示服务器当前时间
多节点管理
Rabbit Panel 支持多节点容器管理,类似 Kubernetes 但更轻量化。
启动 Master 节点(控制节点)
1 | # 方法 1: 使用启动脚本 |
启动 Worker 节点(工作节点)
1 | # 方法 1: 使用启动脚本 |
多节点功能
- ✅ 统一管理: 在 Master 节点查看和管理所有 Worker 节点的容器
- ✅ 智能调度: 自动选择最佳节点部署容器
- ✅ 节点监控: 实时监控所有节点的资源使用情况
- ✅ 跨节点操作: 在 Master 节点操作任意 Worker 节点的容器
详细文档请参考: MULTI-NODE.md
快速测试
创建测试容器来验证面板功能:
1 | # 方法1: 一键创建测试容器(推荐) |
开发模式(热重载)
项目支持热重载开发模式,修改代码后自动重新编译并重启。
1 | # 使用 Air(推荐) |
常见问题
1. 无法连接到 Docker
错误信息: 无法连接到 Docker: ...
解决方法:
1 | # 检查 Docker 服务状态 |
2. 端口被占用
错误信息: listen tcp :9999: bind: address already in use
解决方法:
1 | # 使用其他端口 |
3. 容器日志无法查看
可能原因: 容器已停止、容器 ID 错误、Docker API 权限不足
解决方法:
1 | # 检查容器状态 |
4. 内存占用过高
优化建议:
- 确保使用编译优化版本 (已启用
-ldflags="-s -w") - 定期清理无用的容器和镜像
- 关闭不需要的容器日志流
5. 编译失败
错误信息: cannot find package "github.com/docker/docker/client"
解决方法:
1 | # 初始化 Go 模块 |
6. 网络问题 - 无法下载依赖
错误信息: dial tcp 142.250.196.209:443: i/o timeout
解决方法:
方法 1: 使用提供的脚本(推荐)
1 | chmod +x setup-deps.sh |
方法 2: 手动设置 Go 代理
1 | # 设置 Go 代理为国内镜像 |
方法 3: 永久设置 Go 代理
1 | # 将代理设置写入 ~/.bashrc |
安全说明
用户认证
所有 Web UI 访问的 API 都需要用户登录认证:
- 默认账户:
admin/admin - 首次登录: 必须修改密码
- 密码要求: 至少 8 位,包含大小写字母、数字和特殊字符
节点间认证
Master 和 Worker 节点之间的通信使用 HMAC-SHA256 认证机制。
生产环境必须设置节点密钥:
1 | NODE_SECRET=your-secret-key-here ./rabbit-panel-linux-amd64 |
生产环境建议
- 使用 HTTPS: 通过 Nginx/Caddy 配置 HTTPS 反向代理
- 防火墙配置: 限制访问端口
- 定期更新密钥: 定期更换
NODE_SECRET和JWT_SECRET
详细文档请参考: SECURITY.md
性能优化
资源占用
- 运行时内存: ≤30MB
- 二进制文件大小: ≤10MB
- 静态资源: ≤100KB (Tailwind CSS 通过 CDN 加载)
优化措施
- 编译优化: 使用
-ldflags="-s -w"去除符号表和调试信息 - 无数据库: 所有数据直接从 Docker API 获取,无持久化存储
- 连接管理: 容器日志流关闭后立即释放连接
- 内存管理: 定期清理无用协程,避免内存泄漏
- 数据缓存: 容器和镜像列表使用内存缓存,减少 Docker API 调用
项目结构
1 | rabbit-panel/ |
API 接口
单节点 API
GET /api/system/stats- 获取系统监控数据GET /api/containers- 获取容器列表POST /api/containers/action- 容器操作 (start/stop/restart/remove)GET /api/containers/logs?id=<container-id>- 获取容器日志 (SSE 流式)GET /api/images- 获取镜像列表POST /api/images/remove- 删除镜像GET /api/health- 健康检查
多节点 API (Master)
GET /api/nodes- 获取所有节点列表POST /api/containers/schedule- 跨节点调度容器GET /api/containers/all- 获取所有节点的容器
认证 API
POST /api/auth/login- 用户登录POST /api/auth/logout- 用户登出POST /api/auth/change-password- 修改密码
扩展开发
如需添加新功能,请遵循以下原则:
- 保持轻量化: 新增功能不应显著增加内存占用
- 无数据库: 如需缓存,使用内存临时存储
- 单文件后端: 尽量将代码集中在主文件中
- 原生前端: 使用原生 HTML/CSS/JS,避免引入框架
许可证
MIT License


