命令行的 docker ps、docker logs 用得再熟,新人 onboard 时一句"这容器跑哪了"还是能把人问住。Portainer 就是一个"看得见的 Docker 管理面板"——容器、镜像、网络、存储卷、用户、权限,一站式在 Web 界面操作,特别适合给非运维同学用。这篇文章讲清楚容器化部署、Socket 挂载、初始账号、单 Docker / 集群模式选择。
阅读对象:想给团队/客户提供一个"点开就能用"的 Docker 管理界面的同学
覆盖范围:Portainer CE 容器化部署、Docker Socket 挂载、初始账号、单 Docker 模式 / Swarm 模式 / K8s 模式差异
一、为什么是 Portainer
容器管理工具不少,但定位不同:
| 工具 | 定位 | 适用场景 |
|---|---|---|
| Portainer CE | 通用、轻量、社区版 | 单 Docker / 小团队 / 给非运维用 |
| Rancher | 重量级、企业 K8s 管理 | 多 K8s 集群管理(已转型到 Rancher Prime) |
| Docker Desktop | 本地开发 | macOS / Windows 上单机使用 |
| Lazydocker | TUI | 命令行党、SSH 远程 |
| Cockpit + podman | 系统管理 | RHEL 系 |
Portainer 的"杀手锏"是零学习成本——只要能开浏览器就能用 docker,比着文档点点鼠标就能拉镜像、起容器、看日志。
When to use:当你的团队里有人不熟 docker 命令行,或者要给客户演示/验收容器部署,Portainer 几乎是不二之选。如果只是个人开发用,且只需要起一两个容器,Portainer 会"杀鸡用牛刀"。
二、容器化部署
2.1 单 Docker 模式(最常见)
| |
挂载说明:
| 挂载点 | 作用 |
|---|---|
/var/run/docker.sock:/var/run/docker.sock | 接管宿主机 Docker Daemon,让 Portainer 能 list/start/stop 容器 |
/home/docker/portainer/data:/data | Portainer 自己的数据(账号、配置、堆栈)持久化 |
访问 http://{{HOST}}:9900:
- 首次进入会要求设置
admin账号(不是默认账号!) - 然后选择 “Get started” / “Local” 进入单 Docker 模式
2.2 初始账号
重要:新版本 Portainer 不再有默认账号,首次启动强制让你创建 admin 账号(最少 12 位密码)。网上很多老教程说"admin/admin123456789"那是过期文档。
2.3 Community Edition vs Business Edition
Portainer 有两个版本:
- CE(Community Edition):免费,单一环境(单 Docker / 单 Swarm / 单 K8s),基础 RBAC
- BE(Business Edition):商业授权,多环境管理、LDAP/AD 集成、细粒度 RBAC、合规审计
绝大多数中小团队用 CE 足够。如果企业有合规、审计、SSO 需求,再考虑 BE。
三、核心功能
进入 Portainer 后,左侧导航是核心功能区:
3.1 Stacks(Compose 一键部署)
Stacks → Add stack,把 docker-compose.yml 内容贴进去(支持 Git 仓库、Web editor、Upload),点 Deploy 就能拉起一整套服务。
| |
变量插值:Portainer 支持
{{VAR}}占位符,在 Stack 部署时填入。不要把明文密码写进 yaml 文件,用环境变量注入。
3.2 Containers / Images / Volumes / Networks
点进去就能 list、inspect、start、stop、kill、remove、exec。Container logs 还支持 tail -f 实时跟随——比 SSH 进去 docker logs -f 还方便。
3.3 Swarm 模式(多节点)
如果宿主机是 Docker Swarm 集群,Portainer 能识别并显示所有 worker 节点,统一管理。前提是 Swarm 集群已经初始化:
| |
集群里其它节点执行 docker swarm join --token ... 加入后,Portainer 自动发现。
3.4 K8s 模式
Add Environment → Kubernetes,填 kubeconfig 或者 service account,就能把 Portainer 接到 K8s 集群。但 K8s 模式功能比 CE 版还基础(命名空间、Deployment、Service、Pod 管理),复杂场景推荐用 Rancher / Lens / Octant。
四、生产环境建议
- 不要把 Portainer 暴露到公网——9000 端口直接对外是"裸奔",
docker.sock挂载意味着谁拿到 Portainer 就能控制宿主机所有容器 - 用 Nginx / Caddy 反向代理——加 HTTPS、加 basic auth、加 IP 白名单
- 管理员账号——设置复杂的 12+ 位密码
- 数据备份——
/home/docker/portainer/data整个目录定期tar备份 - 升级——
docker pull portainer/portainer && docker restart portainer,但要看 release notes 注意破坏性变更
五、踩坑清单
- 看不到容器——
/var/run/docker.sock没挂载,Portainer 只是空壳。检查挂载路径 - Stacks 部署失败不报错——看
Events标签页,docker daemon 的报错会写在那里 - Container 控制台中文乱码——容器本身的 locale 问题,进
Exec之前先export LANG=C.UTF-8 - Image 拉取超时——Portainer 不会自动用 daemon.json 里的 mirror,但 docker daemon 会(继承宿主配置),所以本质上不影响
- 多用户场景——CE 版的 RBAC 很基础(只支持 owner / administrator / operator / viewer 四种角色),复杂权限需要 BE
六、2024+ 视角补充
本文写于 2023-03,2024-2026 期间 Portainer 有几个显著演进:
Portainer CE 2.20+(2024 主流版本):
- Edge Agent 模式强化:分布式 IoT / 多机房场景下,Edge Agent 可以主动连中心 Portainer(出站 NAT 友好)
- GitOps 集成:Stack 支持从 Git 仓库自动同步(Git pull = 自动 deploy),2024 起成为 CE 版的内置能力(之前是 BE 专属)
- RBAC 增强:CE 版 RBAC 从 4 个角色(owner / administrator / operator / viewer)扩展到可自定义团队 + 资源访问控制(Namespace 级 / Stack 级 / Container 级)
- K8s 体验大幅提升:之前 CE 版 K8s 模式功能很基础,2.20+ 加入 Helm chart 部署、ConfigMap / Secret 管理、Ingress 编辑
Container Management 之外的扩展:
- Homepage / Dashboard 定制:每个用户可设自己的首页(“我关心的容器”)
- 通知集成扩展:Slack / Microsoft Teams / Email / webhook / PagerDuty / Opsgenie——alert rule 可直接推 oncall
- 审计日志:CE 2.21+ 内置审计日志(之前是 BE 专属),合规场景可用
- 备份 / 恢复:Stack 级别的"Export / Import"——开发→测试→生产用同一份 stack 配置
Portainer 替代品(2024 视野):
- Rancher Prime(2024 改名,原 Rancher):SUSE 把 Rancher 商业化转型,企业 K8s 多集群管理首选
- Lens:IDE 风格的 K8s 管理工具,免费,桌面应用
- OpenLens:Lens 6 后部分闭源,OpenLens 是 fork 继续开源
- Headlamp:Kubernetes 官方推荐的 Web UI(取代老旧的 Dashboard)
- LazyDocker:终端党 2024 仍活跃
- CasaOS / Cosmos:家用 NAS / 小团队 2024+ 更推荐(Portainer 偏运维,CasaOS 偏普通人)
安全更新:
- Portainer 2024 年修复过几个严重 RCE(CVE-2024-21xxx),必须升 2.20.3+ 才是安全版本
- Docker socket 挂载是核心风险:2024 起官方推荐用 Docker Socket Proxy(tecnativa/docker-socket-proxy)做"最小权限代理",避免 Portainer 一旦被攻破就拿整个宿主机
- 2FA 强制开启:CE 2.18+ 强制所有 admin 必须配 2FA(之前是可选)
实战用法变化(2024 视角):
- + Diun 自动检测镜像更新 → Portainer 推送通知
- + Watchtower 自动升级非关键容器
- + Traefik / Caddy 自动 HTTPS 终结(Portainer 仍主攻容器编排,HTTPS 让专门的反向代理做)
- + Headlamp 管理 K8s 集群(Portainer 主攻 Docker,K8s 用专门工具)
经验法则更新:
- Docker 单机 / 小团队 → Portainer CE 2.20+ 仍是 2024+ 首选
- K8s 集群 → 优先 Rancher Prime / Lens / Headlamp,Portainer K8s 模式为辅
- 家用 / 个人 → CasaOS 更轻量更易用
- 大企业 / 合规 → Portainer BE 仍是合规审计好选择
七、参考资料
- Portainer 官方文档:https://docs.portainer.io/
- 社区版 vs 商业版:https://www.portainer.io/products
- Docker Compose 规范:https://docs.docker.com/compose/compose-file/
- Portainer 安全公告:https://github.com/portainer/portainer/security/advisories
- Docker Socket Proxy:github.com/tecnativa/docker-socket-proxy
- Headlamp K8s UI:headlamp.io
下一步
- 想管 K8s 集群?→ 看 Prometheus 监控告警体系 一文
- 一站式监控+告警?→ HertzBeat 轻量监控告警
- 想用 PaaS?→ Erda 云原生 PaaS 一文
