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值得一试。它会让你的容器管理工作变得更加简单和高效。
界面虽然不如Portainer那么精致,但该有的功能都有。重点是轻量,部署起来很快。资源占用也不高,适合放在测试环境用。
The API integration is well designed. I integrated Haven with our Jenkins pipeline. After each build, it automatically pushes the image to the built-in registry and updates the application.
297个星确实有点少,但用下来感觉功能很完整。可能是推广不够吧。希望更多人发现这个好工具。对于中小团队来说,功能完全够用了。
I love that it includes a private registry. No need to set up a separate Harbor or Nexus. Everything is integrated. Pushing and pulling custom images is seamless.
集群管理功能做得不错,添加节点很方便。可以直观看到每个节点的资源使用情况,容器调度也支持自动分配。对于管理多台服务器的场景很实用。