Portainer Community Edition:轻量级容器化应用交付与管理平台
Portainer Community Edition(CE)是一个轻量级服务交付平台,用于管理 Docker、Swarm、Kubernetes 和 ACI 环境。它以单个容器形式部署,可在任意集群运行,支持 Linux 容器或 Windows 原生容器,通过“智能”图形界面和完整的 API 管理容器、镜像、卷、网络等编排资源。项目以 zlib 许可证开源,社区提供支持,商业版在此开源基础之上提供 RBAC、官方支持等企业功能。
社区作者 · zZz
它解决什么问题
项目定位
Portainer Community Edition 是一个轻量级服务交付平台,面向容器化应用,可用于管理 Docker、Swarm、Kubernetes 和 ACI 环境。其设计目标是部署简单、使用同样简单,允许用户通过“智能”GUI 和/或功能完善的 API 管理全部编排资源(容器、镜像、卷、网络等)。
配图 1 为 Portainer 官方 GitHub 仓库的横幅图,用于标识该项目。
架构与部署形态
- 由单个容器组成,可运行在任意集群上。
- 可部署为 Linux 容器,也可部署为 Windows 原生容器。
版本差异
- Portainer Business Edition(BE)在开源基础之上构建,包含面向企业用户需求的高级功能(例如 RBAC 与官方支持)。
- 来源提供 CE 与 BE 的对比入口,以及 Take3 活动(可免费获得 3 个 Portainer Business 节点,时长不限)和 BE 安装指南。
版本更新节奏
Portainer CE 定期更新,目标约每几个月发布一次更新版本。
社区与支持
- CE 是开源项目,由社区提供支持;如需受支持版本可在 portainer.io 购买。
- 问题反馈:https://github.com/portainer/portainer/issues
- Slack 聊天:https://portainer.io/slack
- 可通过 https://www.portainer.io/join-our-community 加入社区,提前获取活动、内容及相关信息。
贡献方式
- 提交缺陷或功能请求请开 issue。
- 想参与构建 Portainer,可遵循贡献指南在本地构建并提交 pull request。
API 类型生成机制
前端使用一个由 Go API 的 Swagger 注解生成的 TypeScript API 客户端(SDK 函数与请求/响应类型)。任何 API 变更——新增端点、修改请求/响应结构或移除端点——之后都需要重新生成:
make generate-api该命令执行以下流水线:
Go Swagger 注解
→ dist/docs/swagger.yaml(make docs-build,通过 swaggo/swag)
→ dist/docs/openapi.yaml(swagger2openapi + 校验)
→ app/react/portainer/generated-api/portainer/(hey-api/openapi-ts)生成器配置位于 openapi-ts.config.ts,用于控制输出路径、插件和标签过滤器(例如已废弃端点与 edge_agent 标签路由会被排除)。生成文件位于 app/react/portainer/generated-api/portainer/,禁止手工编辑——下一次运行会覆盖改动。应导入生成的 SDK 函数与类型,而不是直接写 HTTP 调用:
- @api/sdk.gen —— SDK 函数
- @api/types.gen —— 请求/响应类型
关于如何为 handler 添加注解以便被生成器识别,参见 “Adding api docs”。
安全与隐私
- 安全漏洞上报方式见项目的 Security Policy。
- 为了把开发精力放在正确的地方,项目需要了解哪些功能使用最频繁,因此使用 Matomo Analytics,托管于德国并完全符合 GDPR。
- Portainer 首次启动时会提供禁用分析的选项。如果用户未选择禁用,则按隐私政策收集匿名使用数据。来源明确说明:任何时候都不会发送或存储个人可识别信息,数据仅用于帮助改进 Portainer。
限制
Portainer 仅支持 “Current - 2” 的 Docker 版本,即当前版本及此前两个版本;更早版本可能可用,但不受支持。
许可证
Portainer 采用 zlib 许可证,详见 LICENSE。项目还包含来自其他开源项目的代码,清单见 ATTRIBUTIONS.md。
适用对象
适合需要以图形界面与 API 统一管理 Docker、Swarm、Kubernetes、ACI 环境的运维人员、开发者和平台团队;需要 RBAC、官方支持等企业能力的用户可考虑商业版。
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
以下步骤严格依据来源正文整理;来源未给出的具体命令一律标注“待核验”,请以官方 Deploy Portainer 与 Documentation 页面为准。
一、准备环境
- 需要可用的容器运行环境:Portainer 支持 Docker、Swarm、Kubernetes 和 ACI 环境。
步骤 2
Docker 版本要求:来源明确说明 Portainer 仅支持 “Current - 2” 的 Docker 版本(当前版本及此前两个版本);更早版本可能可以运行,但不受官方支持。
- 部署形态二选一:Linux 容器或 Windows 原生容器。
- Portainer 本身由单个容器组成,可运行在任意集群上。
二、部署步骤
- 按官方部署入口部署 Portainer:来源给出的入口为 “Deploy Portainer”。
- 具体部署命令(如容器镜像拉取与启动参数)来源未提供:待核验,请参见官方 Documentation。
- 部署完成后通过 GUI 与/或 API 管理编排资源:容器、镜像、卷、网络等。
三、首次运行
- Portainer 首次启动时,会提示是否禁用分析统计。
- 如果选择禁用,则不收集使用数据;如果未选择禁用,则按隐私政策收集匿名使用数据(使用 Matomo Analytics,托管于德国,符合 GDPR)。
- 来源强调:任何时候都不会发送或存储个人可识别信息,数据仅用于改进 Portainer。
- 首次运行后的初始化配置(如管理员账号创建)步骤来源未提供:待核验。
四、本地构建与贡献
- 如需参与开发,遵循官方 contribution guidelines 在本地构建 Portainer,并提交 pull request。
- 本地构建的具体命令与依赖来源未提供:待核验。
- 提交缺陷或功能请求:在 https://github.com/portainer/portainer/issues 开 issue。
五、生成 API 类型(修改 API 后必须执行)
- 适用场景:任何 API 变更之后——新增端点、修改请求/响应结构、移除端点。
- 执行命令:
make generate-api- 该命令依次执行以下流水线:
Go Swagger 注解 → dist/docs/swagger.yaml(make docs-build,通过 swaggo/swag)
- dist/docs/swagger.yaml → dist/docs/openapi.yaml(swagger2openapi + 校验)
- dist/docs/openapi.yaml → app/react/portainer/generated-api/portainer/(hey-api/openapi-ts)
- 生成器配置在 openapi-ts.config.ts 中,可控制输出路径、插件与标签过滤器(例如排除已废弃端点与 edge_agent 标签路由)。
- 使用生成结果:导入 @api/sdk.gen(SDK 函数)与 @api/types.gen(请求/响应类型),不要手写直接 HTTP 调用。
- 为新增 handler 添加 Swagger 注解的方法见 “Adding api docs” 文档。
六、常见问题
- 为什么生成文件不能手改?生成文件位于 app/react/portainer/generated-api/portainer/,任何手工修改都会在下一次运行生成器时被覆盖。
- 新端点没有被生成出来?检查 handler 是否按 “Adding api docs” 添加了注解,以及是否被 openapi-ts.config.ts 中的标签过滤器排除(如 deprecated、edge_agent)。
- 支持哪些 Docker 版本?仅当前版本及此前两个版本受支持。
- 有没有企业级支持与 RBAC?这些属于 Portainer Business Edition(BE)能力,来源提供 BE 安装指南与 Take3 免费 3 节点活动入口。
- 遇到问题去哪里求助?可查社区支持渠道、开 issue 或加入 Slack。