haven-platform - 一体化Docker容器管理平台,用于整合容器、应用、集群和镜像管理
随着Docker技术的普及,越来越多的开发者和企业开始使用容器化方式部署应用。然而,当容器数量增多、需要跨多台服务器管理、或者需要关注应用层面的部署时,单一的工具往往难以满足需求。你可能需要在不同工具之间切换:用Portainer看容器状态,用私有镜像仓库管理镜像,用Kubernetes或Swarm管理集群。这种碎片化的管理方式不仅效率低下,还容易出错。
Haven Platform正是为了解决这一痛点而生的。它是一个开源的Docker容器管理系统,将容器、应用、集群、镜像和镜像仓库的管理功能整合在一个统一的平台中。通过Haven,你可以一站式完成从镜像构建、应用部署到集群管理的全流程操作,让容器管理变得简单高效。
项目基本信息
| 信息项 | 详情 |
|---|---|
| 项目名称 | haven-platform |
| GitHub地址 | https://github.com/codeabovelab/haven-platform |
| 项目描述 | Haven is an open source Docker container management system. It integrates container, application, cluster, image, and registry management in one single place. |
| 作者 | codeabovelab |
| 开源协议 | Apache License 2.0 |
| Stars | 297 |
| Forks | 41 |
| 支持平台 | Linux |
| 最后更新 | 2026-02-28 |
一、项目介绍
Haven Platform是一个由codeabovelab团队开发的开源Docker容器管理系统。与传统的容器管理工具不同,Haven不仅仅关注容器本身,而是从更宏观的视角出发,将容器技术生态中的多个关键环节整合在一起。
Haven的核心设计理念是“一体化”。它提供了以下五大核心管理功能:
- 容器管理:查看和管理所有容器,包括启动、停止、重启、删除等基本操作,以及查看容器日志、资源占用等详细信息。
- 应用管理:将多个容器组合成应用,实现批量部署和管理。你可以定义应用的配置,一键部署整套服务。
- 集群管理:支持多台Docker主机组成集群,在集群层面统一调度和管理容器,实现负载均衡和高可用。
- 镜像管理:查看本地镜像,拉取新镜像,构建自定义镜像,管理镜像的标签和版本。
- 镜像仓库管理:集成私有镜像仓库功能,可以创建、管理自己的镜像仓库,方便团队共享和分发镜像。
Haven采用现代化的Web界面,操作直观,同时提供了RESTful API,方便与其他系统集成。对于需要管理多个Docker主机、多套应用的团队来说,Haven提供了一个统一的操作入口。
二、核心优势
Haven Platform在众多Docker管理工具中拥有独特的定位,主要体现在以下方面:
- 一体化整合:Haven最大的亮点是将容器、应用、集群、镜像、仓库五个维度的管理功能整合在一个平台上。你不需要在多个工具之间切换,一个平台就能完成从镜像构建到应用部署的全流程。
- 应用级抽象:大多数Docker管理工具都以容器为管理单元,而Haven引入了“应用”的概念。你可以将WordPress、MySQL、Redis等一组相关的容器定义为一个应用,批量部署和管理。这种抽象更贴近实际业务场景。
- 集群管理能力:Haven内置了集群管理功能,支持将多个Docker主机组成一个集群。在集群模式下,容器可以调度到不同的节点上运行,实现资源的充分利用和故障的自动迁移。
- 私有镜像仓库:Haven集成了私有镜像仓库功能,你可以轻松搭建自己的镜像存储服务。这对于团队内部共享镜像、构建私有化部署方案非常有价值。
- 开源与可扩展:基于Apache 2.0开源协议,代码完全开放。同时,Haven提供了完善的API接口,方便开发者根据自身需求进行扩展和集成。
- 轻量级架构:相比Kubernetes等重量级容器编排平台,Haven的设计更加轻量,部署和维护成本更低,适合中小规模的应用场景。
三、适用场景
Haven Platform特别适合以下使用场景:
- 中小型团队开发测试环境:如果你的团队需要管理多台Docker主机、多个应用环境,但又不想引入Kubernetes这样复杂的系统,Haven提供了一个恰到好处的中间方案。
- 私有化部署方案:对于需要向客户交付私有化部署产品的团队,Haven可以作为容器管理层的核心组件,提供镜像管理、应用部署、集群管理的一体化能力。
- DevOps流程整合:在CI/CD流程中,Haven可以作为部署环节的目标平台。通过其API,你可以实现自动化的镜像推送、应用更新和集群调度。
- 容器技术学习平台:对于想要系统学习Docker容器生态的开发者,Haven提供了一个很好的学习环境。你可以通过它理解容器、镜像、仓库、集群之间的关系,以及它们如何协同工作。
- 边缘计算场景:在资源受限的边缘计算节点上,Haven的轻量级特性使其成为一个可行的容器管理方案。
四、安装教程
系统要求
| 工具 | 用途 | 下载/安装方式 |
|---|---|---|
| Docker | 容器运行环境 | [https://docs.docker.com/get-docker/] |
| Docker Compose | 编排工具 | Docker Desktop自带,或单独安装 |
Haven Platform推荐使用Docker Compose进行部署,以下是详细的安装步骤。
详细安装步骤
克隆项目仓库
git clone https://github.com/codeabovelab/haven-platform.git cd haven-platform查看部署文件
进入项目目录后,你会看到
docker-compose.yml文件,这是部署Haven的核心配置文件。修改配置(可选)
如果需要自定义端口或存储路径,可以编辑
docker-compose.yml文件。默认配置通常可以直接使用。启动Haven
执行以下命令启动所有服务:
docker-compose up -d这个过程会拉取Haven所需的多个镜像(包括核心服务、数据库、镜像仓库等),并启动相应的容器。
等待服务就绪
启动过程可能需要几分钟,取决于网络速度。可以通过以下命令查看启动日志:
docker-compose logs -f访问Haven界面
服务启动完成后,打开浏览器访问
http://你的服务器IP:8080(默认端口为8080)。首次登录
- 首次访问时,系统会引导你创建管理员账号。
- 按照提示设置用户名、密码和邮箱。
- 完成设置后,使用刚创建的账号登录。
验证安装
登录成功后,你会看到Haven的主界面,包含以下主要模块:
- Dashboard:系统概览,显示容器数量、节点状态等
- Containers:容器管理
- Applications:应用管理
- Clusters:集群管理
- Images:镜像管理
- Registry:镜像仓库管理
五、使用示例
下面通过几个实际操作示例,展示如何使用Haven Platform完成常见的容器管理任务。
示例1:添加Docker主机到集群
Haven支持管理多个Docker主机。以下是将一个新的Docker节点添加到集群的步骤:
- 在Haven界面中,点击左侧导航栏的“Clusters”。
- 点击“Add Node”按钮。
在弹出的对话框中,输入节点的信息:
- 节点名称:例如“node-2”
- 节点地址:Docker主机的IP地址和端口(默认2375)
- 连接方式:选择TLS或非TLS(生产环境建议使用TLS)
- 点击“Test Connection”测试连接是否正常。
- 确认无误后,点击“Add”完成添加。
添加完成后,你可以在集群节点列表中看到新加入的节点,并查看其资源使用情况。
示例2:创建一个应用并部署
应用是Haven的核心概念之一。下面我们创建一个包含Nginx和MySQL的应用:
- 点击左侧导航栏的“Applications”。
- 点击“Create Application”按钮。
填写应用基本信息:
- 应用名称:my-web-app
- 描述:一个示例Web应用
点击“Add Service”添加服务:
添加Nginx服务:
- 服务名称:web
- 镜像:nginx:latest
- 端口映射:主机8080映射到容器80
添加MySQL服务:
- 服务名称:db
- 镜像:mysql:8.0
- 环境变量:MYSQL_ROOT_PASSWORD=root123
- 点击“Save”保存应用配置。
- 在应用列表中找到“my-web-app”,点击“Deploy”按钮。
- 选择部署的目标集群(或单机),点击“Confirm”。
Haven会自动拉取所需的镜像,并在目标节点上启动所有服务。部署完成后,你可以在“Containers”中看到新创建的容器,并访问Nginx服务(http://节点IP:8080)。
示例3:构建和推送自定义镜像
假设你需要构建一个自定义的Python应用镜像:
- 准备一个包含
Dockerfile的项目目录。 - 在Haven界面中,点击“Images”。
- 点击“Build Image”按钮。
填写构建信息:
- 镜像名称:my-python-app
- 标签:v1.0
- Dockerfile路径:选择你的项目目录
- 点击“Build”,Haven会在指定的节点上执行
docker build命令。 - 构建完成后,镜像会出现在本地镜像列表中。
- 要将镜像推送到Haven集成的私有仓库,点击镜像右侧的“Push”按钮。
- 在推送对话框中,选择目标仓库和标签,点击“Push”。
推送成功后,团队成员就可以通过私有仓库拉取这个镜像,实现镜像的共享和分发。
示例4:查看容器日志和监控
当容器出现问题时,查看日志和监控是排查问题的重要手段:
- 点击“Containers”,进入容器列表。
- 找到需要排查的容器,点击其名称进入详情页面。
- 查看“Logs”标签页,可以看到容器的标准输出日志,支持实时刷新。
- 查看“Stats”标签页,可以看到CPU、内存、网络IO的实时图表。
- 如果需要查看多个容器的日志,可以在应用层面点击“View Logs”,一次性查看应用中所有容器的日志。
示例5:通过API进行自动化部署
Haven提供了RESTful API,方便与其他系统集成。以下是一个通过API部署应用的示例:
# 首先获取API Token(在Haven界面中生成)
API_TOKEN="your-api-token-here"
HAVEN_URL="http://localhost:8080/api"
# 列出所有应用
curl -H "Authorization: Bearer $API_TOKEN" \
$HAVEN_URL/applications
# 部署指定应用
curl -X POST \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"cluster_id": "cluster-1"}' \
$HAVEN_URL/applications/my-web-app/deploy通过API,你可以将Haven集成到Jenkins、GitLab CI等持续集成流水线中,实现自动化的应用部署。
六、常见问题
问题1:安装后无法访问Haven界面
检查以下几点:
- 确认所有容器正常运行:
docker-compose ps,所有服务应该显示“Up”状态。 - 检查端口映射是否正确:
docker-compose port haven 8080。 - 确认防火墙开放了8080端口。
- 查看服务日志:
docker-compose logs haven,查找错误信息。
- 确认所有容器正常运行:
问题2:添加Docker节点时连接失败
可能的原因和解决方案:
- 目标Docker主机的API端口未开放(默认2375)。编辑
/lib/systemd/system/docker.service,添加-H tcp://0.0.0.0:2375,然后重启Docker。 - 防火墙阻止了端口访问,需要开放2375端口。
- 如果使用TLS连接,确保证书配置正确。
- 目标Docker主机的API端口未开放(默认2375)。编辑
问题3:应用部署后容器无法启动
查看容器日志定位问题:
- 在“Containers”中找到失败的容器,查看状态(通常显示为“Exited”)。
- 进入容器详情,查看“Logs”标签页。
- 常见问题包括:端口冲突、环境变量缺失、镜像不存在等。
- 修改应用配置后,重新部署。
问题4:私有镜像仓库如何配置认证
Haven集成的私有镜像仓库支持认证功能。在“Registry”设置中,可以:
- 开启认证选项。
- 设置用户名和密码。
- 配置完成后,推送和拉取镜像时需要提供认证信息。
问题5:Haven与Kubernetes的关系
Haven是一个独立的容器管理系统,不是Kubernetes的替代品。它适合中小规模、轻量级的场景,而Kubernetes适合大规模、复杂的容器编排需求。Haven的设计更加简单,部署和维护成本更低。
问题6:数据持久化如何配置
Haven使用Docker Compose管理数据卷。在
docker-compose.yml中,你可以看到以下卷配置:haven-data:存储Haven的配置数据registry-data:存储私有镜像仓库的数据
这些卷会持久化在主机上,容器重启或升级后数据不会丢失。
七、总结
Haven Platform是一个设计理念独特的Docker容器管理系统。它打破了传统容器管理工具只关注容器的局限,将容器、应用、集群、镜像、仓库五个维度整合在一起,提供了一站式的管理体验。
对于需要管理多台Docker主机、多个应用的团队来说,Haven提供了一个比单一工具更全面、比Kubernetes更轻量的选择。它通过“应用”这一层抽象,让部署和管理多容器应用变得更加直观。内置的集群管理功能,让资源调度和负载均衡不再是难题。而集成的私有镜像仓库,则为团队内部的镜像共享提供了便利。
当然,Haven也有其局限性。相比Portainer,它的社区规模和插件生态还有差距;相比Kubernetes,它在复杂场景下的编排能力也有所不足。但正是这种“恰到好处”的定位,让Haven在特定场景下成为理想的选择。
如果你正在寻找一个轻量级、一体化、易于部署的容器管理平台,Haven Platform值得一试。它会让你的容器管理工作变得更加简单和高效。
The application deployment history is very useful. I can see when each application was deployed, who deployed it, and roll back to previous versions if needed.
数据持久化做得很好,容器重启配置不会丢失。数据卷的管理也很直观,能清楚看到每个容器挂载了哪些卷。
This platform is underrated. The integration of registry with container management is something other tools don't do well. Haven nails it.
Haven的REST API很完整,几乎界面能做的操作都能通过API完成。我把一些日常运维任务写成了脚本,自动化程度提高了不少。
The statistics dashboard shows historical data, not just real-time. I can see how resource usage changed over the past week. Helps with capacity planning and identifying trends.