一、Portainer 简介
1.1 Portainer 是什么
Portainer 是一款开源的轻量级 Docker 管理工具,它通过直观的 Web 界面,让用户无需复杂的命令行操作,即可轻松管理 Docker 容器、镜像、网络、卷等资源。它的设计理念是"部署和使用一样简单",只需一个容器即可快速部署,支持所有主流的 Docker 环境,包括独立 Docker 引擎和 Docker Swarm 集群。
1.2 Portainer 的核心价值
在 Docker 技术日益普及的今天,虽然 Docker 命令行工具功能强大,但对于初学者和非专业运维人员来说,学习成本较高。Portainer 解决了这一痛点,它提供了以下核心价值:
-
简化 Docker 管理:通过图形化界面,让 Docker 管理变得直观易用,降低了技术门槛
-
提高工作效率:自动化重复性操作,减少手动输入命令的时间和错误
-
增强可视化能力:实时监控容器运行状态、资源使用情况和系统事件
-
强化安全性:提供用户权限管理,实现细粒度的访问控制
-
扩展性强:支持多环境管理和插件扩展,满足不同场景需求
1.3 Portainer 最新版本特性(2.33 LTS)
Portainer 2.33 LTS 是 2025 年 8 月发布的长期支持版本,主要包含以下新功能和改进:
-
全新界面设计:采用了现代化的品牌形象和用户界面
-
实验性观测功能:支持通过 Slack、电子邮件或 Webhook 发送事件通知
-
Helm 部署优化:提供全新的 Helm 部署详情页面,支持版本对比和回滚
-
OCI 格式 Helm 图表支持:支持通过 OCI 注册表部署 Helm 图表
-
Namespace Operator 角色:新增 Kubernetes 权限角色,实现命名空间级别的权限控制
-
Edge 设备更新优化:改进了边缘设备更新和回滚功能的 UI 和状态报告
-
mTLS 改进:增强了 mTLS 功能的可视化和管理能力
-
Docker Compose 代码补全:Web 编辑器中支持 Docker Compose 代码自动补全和验证
-
Kerberos 身份验证支持:集成 Kerberos 用于 Active Directory 身份验证
-
性能优化:大幅提升页面加载速度和系统响应性能
二、Portainer 的安装与配置
2.1 环境准备
在安装 Portainer 之前,需要确保你的系统满足以下基本要求:
-
Linux、Windows 或 macOS 操作系统
-
已安装 Docker(建议版本 19.03.0+)
-
至少 2GB 内存(推荐 4GB 以上)
-
至少 10GB 可用磁盘空间
-
开放 9000 和 8000 端口(默认配置)
2.2 安装 Portainer
2.2.1 使用 Docker 命令安装
这是最常用的安装方式,首先拉取Portainer镜像:
# 拉取Portainer镜像(注意:该仓库已废弃,推荐使用portainer/portainer-ce)
docker pull portainer/portainer
# 或使用推荐的社区版镜像(推荐)
docker pull portainer/portainer-ce:latest
注意:官方已废弃
portainer/portainer仓库,从2022年1月开始,建议使用portainer/portainer-ce社区版镜像。
然后创建数据卷并运行容器:
# 创建数据卷用于持久化 Portainer 数据
docker volume create portainer_data
# 运行 Portainer 容器
docker run -d -p 8000:8000 -p 9000:9000 \
--name=portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce
参数说明:
-
-d: 后台运行容器 -
-p 8000:8000: 映射 Edge agent 通信端口 -
-p 9000:9000: 映射 Web 管理界面端口 -
--name=portainer: 为容器命名 -
--restart=always: 自动重启容器 -
-v /var/run/docker.sock:/var/run/docker.sock: 挂载 Docker 套接字,允许 Portainer 管理本地 Docker 环境 -
-v portainer_data:/data: 挂载数据卷,用于存储 Portainer 配置和数据
2.2.2 使用 Docker Compose 安装(推荐)
对于生产环境,推荐使用 Docker Compose 进行部署,创建 docker-compose.yml 文件:
version: '3.8'
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
ports:
- "8000:8000"
- "9000:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
environment:
- TZ=Asia/Shanghai
volumes:
portainer_data:
然后执行以下命令启动:
docker-compose up -d
2.3 验证安装
执行以下命令检查 Portainer 容器是否正常运行:
docker ps | grep portainer
如果看到类似以下输出,说明安装成功:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abc123def456 portainer/portainer-ce "/portainer" 5 minutes ago Up 5 minutes 0.0.0.0:8000->8000/tcp, 0.0.0.0:9000->9000/tcp portainer
2.4 初始配置
- 访问 Web 界面:在浏览器中输入
http://<服务器IP>:9000,首次访问会进入初始化界面
创建管理员账户:设置用户名和密码(密码至少 8 位

-
选择管理环境:
-
Local:管理本地 Docker 环境(推荐新手使用)
-
Remote:通过 Docker API 管理远程 Docker 环境
-
Agent:使用 Portainer Agent 进行更安全的远程管理
-
Azure:连接到 Microsoft Azure ACI
-
选择"Local"后,即可进入 Portainer 主界面。


三、Portainer 核心功能详解
3.1 仪表盘(Dashboard)
3.2 容器管理(Containers)
容器管理是 Portainer 最核心的功能之一,提供了对容器生命周期的全面管理:
3.2.1 基本操作
-
查看容器列表:显示所有容器及其状态(运行中/已停止)
-
启动/停止/重启容器:通过按钮直接控制容器状态
-
进入容器终端:通过 Web 终端访问容器内部
-
查看容器日志:实时查看容器输出日志,支持搜索和筛选
-
删除容器:一键删除不需要的容器(需谨慎操作)
3.2.2 创建容器
Portainer 提供了直观的容器创建表单,支持以下配置项:
-
容器名称:为容器指定唯一名称
-
镜像:选择或输入要使用的镜像名称
-
端口映射:配置容器端口与主机端口的映射
-
环境变量:设置容器运行所需的环境变量
-
卷挂载:配置数据卷或主机目录的挂载
-
网络配置:选择容器使用的网络
-
资源限制:设置 CPU 和内存使用限制
-
启动命令:自定义容器启动命令
3.3 镜像管理(Images)
镜像管理模块允许用户管理本地和远程的 Docker 镜像:
3.3.1 基本操作
-
查看镜像列表:显示所有本地镜像及其基本信息
-
拉取镜像:从 Docker Hub 或其他镜像仓库拉取最新镜像
-
删除镜像:清理不需要的镜像以释放存储空间
-
构建镜像:通过 Dockerfile 自定义构建镜像
3.3.2 导入/导出镜像
-
导入镜像:从本地文件或 URL 导入镜像
-
导出镜像:将本地镜像保存为 tar 格式文件,便于迁移和备份
3.8 主机信息(Host)
主机信息模块提供了主机系统的详细信息:

-
系统信息:显示主机名称、操作系统版本、内核版本
-
资源使用:实时显示CPU、内存、存储和网络使用情况
-
Docker引擎信息:显示Docker版本、存储驱动、日志驱动等
3.4.2 操作功能
-
创建网络:根据需求创建不同类型的网络
-
查看网络详情:显示网络连接的容器和配置信息
-
删除网络:清理不再使用的网络
3.5 卷管理(Volumes)
卷是 Docker 中用于持久化数据的重要机制,Portainer 提供了全面的卷管理功能:
3.5.1 卷类型
-
命名卷:由 Docker 管理的持久化存储
-
绑定挂载:直接挂载主机目录到容器
3.5.2 操作功能
-
创建卷:创建新的命名卷或绑定挂载
-
查看卷详情:显示卷挂载的容器和使用情况
-
删除卷:清理不再使用的卷
-
备份卷:将卷内容导出为备份文件
3.6 堆栈管理(Stacks)
堆栈(Stacks)是 Portainer 中用于管理多容器应用的功能,基于 Docker Compose 格式:
3.6.1 堆栈创建方式
-
Web 编辑器:直接在 Portainer 中编写 Docker Compose 文件
-
上传文件:上传本地的 Docker Compose 文件
-
Git 仓库:从 Git 仓库拉取 Compose 文件进行部署
3.6.2 堆栈操作
-
查看堆栈列表:显示所有已部署的堆栈及其状态
-
部署堆栈:一键部署多容器应用
-
更新堆栈:修改 Compose 文件后重新部署
-
回滚堆栈:回滚到之前的部署版本
-
删除堆栈:停止并删除整个堆栈
3.7 应用模板(App Templates)
Portainer 提供了内置的应用模板,让用户可以快速部署常见应用,如 WordPress、MySQL、Redis 等:
3.7.1 内置模板
-
Web 应用:如 WordPress、Nginx、Apache 等
-
数据库:如 MySQL、PostgreSQL、MongoDB 等
-
缓存系统:如 Redis、Memcached 等
-
监控工具:如 Prometheus、Grafana 等
3.7.2 自定义模板
用户也可以创建自己的应用模板,方便团队内部共享和重复部署:
-
进入"App Templates"页面
-
点击"Custom templates"标签
-
点击"Add template"添加新模板
-
填写模板名称、描述、Docker Compose 配置等信息
四、Portainer 高级功能
4.1 多环境管理
Portainer 支持同时管理多个 Docker 环境,包括本地环境和远程环境:
4.1.1 添加新环境
-
进入"Endpoints"页面
-
点击"Add endpoint"按钮
-
选择环境类型:
-
Standalone Docker:连接到独立的 Docker 引擎
-
Swarm:连接到 Docker Swarm 集群
-
Kubernetes:连接到 Kubernetes 集群
-
Edge:连接到边缘设备
-
-
填写环境配置信息(IP 地址、端口、认证信息等)
4.1.2 环境切换
在管理多个环境时,用户可以通过顶部的环境选择器快速切换不同的管理环境。
4.2 用户与权限管理
Portainer 提供了完善的用户和权限管理系统,支持多团队协作:
4.2.1 用户角色
-
管理员:拥有完整的系统管理权限
-
普通用户:仅能访问授权的资源
-
只读用户:只能查看资源,不能进行修改操作
4.2.2 团队管理
-
创建团队:将用户分组管理,便于权限分配
-
团队权限:为不同团队设置不同的资源访问权限
-
资源控制:对容器、镜像、网络等资源设置细粒度的访问控制
4.3 GitOps 集成
Portainer 支持 GitOps 工作流,允许用户将应用配置存储在 Git 仓库中,实现版本控制和自动化部署:
4.3.1 GitOps 工作流
-
在 Git 仓库中保存 Docker Compose 文件或 Kubernetes 清单
-
在 Portainer 中配置 Git 仓库信息
-
部署应用时选择从 Git 仓库拉取配置
-
当 Git 仓库中的配置发生变化时,Portainer 自动触发应用更新
4.3.2 优势与价值
-
版本控制:所有配置变更都有完整的历史记录
-
协作开发:团队成员可以共同编辑和审核配置
-
自动化部署:配置变更自动触发应用更新
-
回滚机制:出现问题时可以快速回滚到之前的稳定版本
4.4 边缘计算管理
Portainer 提供了强大的边缘计算管理功能,支持远程管理边缘设备上的容器:
4.4.1 Edge 设备架构
-
Portainer Server:部署在中心管理节点
-
Portainer Agent:部署在每个边缘设备上
-
安全通信:通过 mTLS 加密确保通信安全
4.4.2 边缘计算优势
-
低延迟:应用运行在边缘设备,减少数据传输延迟
-
离线工作:支持边缘设备在断网情况下继续运行
-
集中管理:统一管理分布在不同地理位置的边缘设备
五、Portainer 常见问题与解决方案
5.1 安装与启动问题
5.1.1 无法访问 Portainer Web 界面
可能原因:
-
9000 端口被其他服务占用
-
防火墙或安全组阻止了端口访问
-
Portainer 容器未正常运行
解决方案:
-
检查端口占用情况:
netstat -tulpn | grep :9000 -
开放防火墙端口:
ufw allow 9000(Ubuntu)或firewall-cmd --add-port=9000/tcp --permanent(CentOS) -
查看容器运行状态:
docker ps | grep portainer -
查看容器日志:
docker logs portainer
5.1.2 Portainer 容器反复重启
可能原因:
- Docker 套接字权限问题
- 数据卷挂载失败
- 系统资源不足
解决方案:
-
检查 Docker 套接字权限:
ls -l /var/run/docker.sock(应该显示属于 docker 组) -
将当前用户加入 docker 组:
usermod -aG docker $USER -
重启 Docker 服务:
systemctl restart docker -
重新创建数据卷:
docker volume rm portainer_data && docker volume create portainer_data
5.2 权限问题
5.2.1 无法拉取镜像或创建容器
可能原因
- 用户权限不足
- 镜像仓库认证失败
- Docker 引擎权限配置问题
解决方案
- 确保当前用户具有 Docker 管理权限
- 检查镜像仓库认证信息是否正确
- 尝试使用 sudo 执行 Docker 命令测试
5.2.2 数据卷挂载权限问题
可能原因:
- 主机目录权限不足
- SELinux 或 AppArmor 阻止了访问
- 卷挂载路径不存在
解决方案:
- 设置主机目录权限:
chmod 755 /path/to/directory - 在 SELinux 环境中添加卷标签:
-v /host/path:/container/path:z - 确保挂载路径存在:
mkdir -p /path/to/directory
5.3 性能问题
5.3.1 Portainer 界面响应缓慢
可能原因:
- 系统资源不足
- Docker 引擎负载过高
- Portainer 版本较旧
解决方案:
- 增加系统资源(CPU、内存)
- 优化 Docker 引擎配置,减少不必要的容器运行
- 更新 Portainer 到最新版本
5.3.2 容器启动缓慢
可能原因:
- 镜像体积过大
- 磁盘 I/O 性能低下
- 网络连接问题
解决方案:
- 使用轻量化基础镜像(如 Alpine 版本)
- 优化磁盘性能,考虑使用 SSD 存储
- 检查网络连接,确保可以正常拉取镜像
六、Portainer 与其他容器管理工具对比
6.1 Portainer vs Rancher
| 特性 | Portainer | Rancher |
|---|---|---|
| 用户界面 | 简洁直观,学习曲线低 | 功能丰富,但学习曲线较陡 |
| 部署难度 | 非常简单,适合个人和小团队快速搭建 | 需要一定的基础设施配置和 Kubernetes 知识 |
| 适用场景 | 适合小型团队、单节点 Docker 容器管理 | 适合企业级多集群 Kubernetes 的全面管理需求 |
| 多租户支持 | 基础的用户和团队管理 | 提供细粒度的 RBAC(基于角色的访问控制)权限管理,支持多租户 |
| 监控功能 | 提供基本的容器运行状态可视化和日志功能 | 集成 Prometheus、Grafana,用于集群监控、日志管理和性能分析 |
| 扩展性 | 功能扩展有限,适合小规模部署和简单需求 | 高度可扩展,支持丰富的插件和第三方工具集成 |
6.2 Portainer vs KubeSphere
| 特性 | Portainer | KubeSphere |
|---|---|---|
| 部署复杂度 | 简单,单容器即可部署 | 复杂,需要部署多个组件 |
| 学习曲线 | 低,Docker 用户上手快 | 高,需要 Kubernetes 基础知识 |
| 主要功能 | 专注于 Docker 和轻量级 Kubernetes 管理 | 提供完整的 Kubernetes 容器平台,包括监控、日志、CI/CD 等 |
| 资源占用 | 低资源占用,适合资源有限的环境 | 较高的资源占用,需要更强大的基础设施 |
| 适用场景 | 小型团队、开发测试环境 | 中大型企业、生产环境 |
6.3 选择建议
-
如果你是 Docker 初学者:选择 Portainer,它简单易用,学习成本低
-
如果你需要管理 Kubernetes 集群:Rancher 或 KubeSphere 可能更适合,它们提供更全面的 Kubernetes 管理功能
-
如果你需要轻量级管理工具:Portainer 是最佳选择,它占用资源少,部署和维护简单
-
如果你需要企业级多租户管理:Rancher 或 KubeSphere 更适合,它们提供更完善的权限管理和多租户支持
七、Portainer API 使用教程
7.1 API 访问基础
Portainer 提供了 RESTful API,允许用户通过编程方式管理 Docker 资源。要访问 API,需要:
-
一个 Portainer 用户账户
-
用户的 API 访问令牌
-
能够向 Portainer 服务器发送 HTTPS 请求(默认端口 9443)
7.2 创建 API 访问令牌
-
登录 Portainer 后,点击右上角的用户名,选择"My account"
-
滚动到"Access tokens"部分
-
点击"Add access token"按钮
-
为令牌添加描述(便于后续识别)
-
输入密码进行身份验证
-
复制生成的访问令牌(注意:令牌只会显示一次,请妥善保存)
7.3 API 示例
7.3.1 列出所有容器
使用 HTTPie 发送请求:
http GET https://portainer-url:9443/api/stacks X-API-Key:your_api_key_here
7.3.2 创建容器
http POST https://portainer-url:9443/api/endpoints/1/docker/containers/create \
X-API-Key:your_api_key_here \
name=="web01" Image="nginx:latest" \
ExposedPorts:='{ "80/tcp": {} }' \
HostConfig:='{ "PortBindings": { "80/tcp": [{ "HostPort": "8080" }] } }'
7.3.3 启动容器
http POST https://portainer-url:9443/api/endpoints/1/docker/containers/<CONTAINER_ID>/start \
X-API-Key:your_api_key_here
八、Portainer 最佳实践
8.1 安全性最佳实践
-
使用强密码:为 Portainer 管理员账户设置复杂密码
-
限制访问 IP:通过防火墙或安全组限制仅允许信任的 IP 访问 Portainer
-
启用 HTTPS:配置 SSL 证书,使用 HTTPS 加密通信
-
定期更新:及时更新 Portainer 到最新版本,修复安全漏洞
-
最小权限原则:为普通用户分配必要的最小权限,避免过度授权
8.2 性能最佳实践
-
资源限制:为 Portainer 容器设置合理的 CPU 和内存限制
-
定期清理:定期清理不再使用的容器、镜像和卷,释放系统资源
-
数据卷优化:使用命名卷替代绑定挂载,减少权限问题和数据丢失风险
-
监控配置:启用 Portainer 监控功能,及时发现性能瓶颈
8.3 团队协作最佳实践
-
团队角色划分:根据职责划分不同的团队和权限
-
标准化操作流程:制定统一的容器部署和管理流程
-
文档共享:将常用的配置和操作文档进行共享,便于团队协作
-
定期培训:为团队成员提供 Portainer 使用培训,提高操作熟练度
九、总结
Portainer 作为一款轻量级的 Docker 管理工具,以其简洁的界面、强大的功能和易用性,成为了 Docker 爱好者和开发者的首选工具之一。它不仅降低了 Docker 技术的学习门槛,还提高了 Docker 管理的效率和安全性。
通过本文的学习,相信你已经掌握了 Portainer 的安装、配置和使用方法,了解了它的核心功能和高级特性。在实际使用中,建议结合自身需求,选择合适的部署方式和管理策略,充分发挥 Portainer 的优势,提升 Docker 管理的效率和质量。

260

被折叠的 条评论
为什么被折叠?



