581_Portainer容器管理
一句话概述:Portainer 是 Docker/Kubernetes 的可视化管理工具,通过 Web 界面点点鼠标就能管理容器、镜像、网络、卷,不用记复杂的 Docker 命令。
核心知识点表
| 概念 | 白话解释 |
|---|
| Portainer CE | 社区版,免费开源,个人和小团队够用 |
| Portainer BE | 商业版,多了 RBAC 权限、审计日志等企业功能 |
| Stack | 一组相关容器的集合,相当于 docker-compose 的可视化版 |
| Agent | 安装在远程服务器上的代理,让 Portainer 能管理远程 Docker |
| Edge Agent | 用于管理防火墙后面的远程服务器(反向连接) |
| Environment | 一个 Docker 主机或 K8s 集群,Portainer 可管理多个环境 |
安装配置
Docker 安装(推荐)
# 创建数据卷(持久化 Portainer 数据)
docker volume create portainer_data # 创建命名卷
# 运行 Portainer CE(社区版)
docker run -d \
--name portainer \ # 容器名
--restart=always \ # 自动重启
-p 8000:8000 \ # TCP 隧道端口(Agent 通信用)
-p 9443:9443 \ # HTTPS Web 管理界面端口
-v /var/run/docker.sock:/var/run/docker.sock \ # 挂载 Docker socket(核心!)
-v portainer_data:/data \ # 持久化数据
portainer/portainer-ce:lts # 使用长期支持版
Docker Compose 安装
# docker-compose.yml
services:
portainer:
image: portainer/portainer-ce:lts # 社区版长期支持
container_name: portainer # 容器名
restart: always # 自动重启
ports:
- "9443:9443" # HTTPS 管理面板
- "8000:8000" # Agent 通信端口
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Docker socket
- portainer_data:/data # 数据持久化
volumes:
portainer_data: # 命名卷
docker compose up -d # 启动
首次访问
# 浏览器打开:https://你的IP:9443
# 注意是 HTTPS(Portainer 2.9+ 默认启用 HTTPS)
# 首次访问设置管理员密码(至少12位)
# 选择 "Local" 管理本地 Docker 环境
基本使用
管理容器
# 在 Web 面板中(不用记命令!):
#
# 查看容器列表:Home → Local → Containers
# 每个容器显示:名称、状态、镜像、端口、创建时间
#
# 常用操作(点击按钮):
# - Start / Stop / Restart → 启动/停止/重启容器
# - Logs → 查看容器日志(实时滚动)
# - Console → 进入容器命令行(相当于 docker exec -it)
# - Stats → 查看 CPU/内存/网络使用率
# - Inspect → 查看容器详细配置
创建容器
# Containers → Add Container
# 填写配置:
# - Name:容器名称
# - Image:镜像名(如 nginx:latest)
# - Port mapping:端口映射(如 8080→80)
# - Volumes:卷挂载
# - Env:环境变量
# - Restart policy:重启策略
# - Deploy the container → 创建并启动
部署 Stack(docker-compose)
# Stacks → Add Stack
# 方式1:Web editor → 直接粘贴 docker-compose.yml 内容
# 方式2:Upload → 上传 docker-compose.yml 文件
# 方式3:Git Repository → 从 Git 仓库拉取
# 示例(在 Web editor 中粘贴):
services:
web:
image: nginx:alpine # Nginx 镜像
ports:
- "8080:80" # 端口映射
volumes:
- ./html:/usr/share/nginx/html # 挂载网页目录
db:
image: postgres:16-alpine # PostgreSQL
environment:
POSTGRES_PASSWORD: mypassword # 设置密码
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
管理镜像
# Images → 查看本地所有镜像
# - Pull Image → 输入镜像名拉取(如 redis:7)
# - Build Image → 从 Dockerfile 构建
# - Remove → 删除不用的镜像
# - 显示镜像大小、标签、创建时间
管理网络和卷
# Networks → 查看/创建 Docker 网络
# - 创建自定义网络让容器之间通信
# - 支持 bridge / overlay / macvlan 等驱动
# Volumes → 查看/创建数据卷
# - 创建命名卷用于数据持久化
# - 查看卷的使用情况
# - 删除未使用的卷
高级用法
多主机管理
# 方法1:通过 Agent 管理远程 Docker
# 在远程服务器上运行 Agent:
docker run -d \
-p 9001:9001 \ # Agent 端口
--name portainer_agent \ # 容器名
--restart=always \ # 自动重启
-v /var/run/docker.sock:/var/run/docker.sock \ # 挂载 Docker socket
-v /var/lib/docker/volumes:/var/lib/docker/volumes \ # 卷目录
portainer/agent:lts # Agent 镜像
# 在 Portainer 中:
# Settings → Environments → Add Environment
# 选择 Agent → 填入远程IP:9001
# 方法2:Edge Agent(适合有防火墙的远程服务器)
# Environments → Add Environment → Edge Agent
# 复制生成的安装命令到远程服务器运行
模板管理
# App Templates → 预配置的应用模板
# 一键部署常用服务:
# - WordPress + MySQL
# - Redis
# - GitLab CE
# - Elasticsearch
# - RabbitMQ
# - 更多...
# 也可以添加自定义模板仓库
# Settings → App Templates → 添加模板 URL
访问控制(BE 版)
# Portainer Business Edition 支持:
# - RBAC(基于角色的访问控制)
# - LDAP / AD / OAuth / OIDC 集成
# - 团队管理和权限分配
# - 审计日志(记录谁做了什么操作)
# 角色示例:
# - Admin:完全管理权限
# - Helpdesk:只读 + 重启容器
# - Standard user:管理分配的资源
Kubernetes 管理
# Portainer 也支持管理 K8s 集群:
# Environments → Add Environment → Kubernetes
#
# 支持的功能:
# - 查看/管理 Pods、Deployments、Services
# - 通过 GUI 部署应用(不用写 YAML)
# - 查看日志和终端
# - Helm Chart 部署
# - 查看资源使用情况
常见报错
| 报错信息 | 原因 | 解决方案 |
|---|
无法连接到 Docker | Docker socket 未挂载 | 确保 -v /var/run/docker.sock:/var/run/docker.sock |
Admin password expired | 首次安装5分钟内未设置密码 | 重新创建容器 |
Port 9443 already in use | 端口被占用 | 改用其他端口 -p 9444:9443 |
Agent not reachable | Agent 未启动或网络不通 | 检查防火墙和 Agent 容器状态 |
Stack deploy failed | docker-compose 语法错误 | 检查 YAML 格式和缩进 |
Image pull failed | 镜像名错误或网络问题 | 检查镜像名和 Docker Hub 连接 |
速查表
# === 安装 Portainer CE ===
docker volume create portainer_data
docker run -d --name portainer --restart=always \
-p 9443:9443 -p 8000:8000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data portainer/portainer-ce:lts
# === 安装 Agent(远程管理) ===
docker run -d --name portainer_agent --restart=always \
-p 9001:9001 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
portainer/agent:lts
# === 更新 Portainer ===
docker stop portainer && docker rm portainer # 停止并删除旧容器
docker pull portainer/portainer-ce:lts # 拉取最新镜像
# 重新运行上面的 docker run 命令 # 数据在 volume 中不会丢
# === 默认端口 ===
# 9443 → HTTPS Web UI(推荐)
# 9000 → HTTP Web UI(需手动启用)
# 8000 → TCP 隧道(Agent 通信)
# 9001 → Agent 端口
# === 面板导航 ===
# Home → 所有环境概览
# Containers → 容器管理
# Images → 镜像管理
# Networks → 网络管理
# Volumes → 卷管理
# Stacks → Stack(Compose)管理
# App Templates → 应用模板
同类对比
| 特性 | Portainer CE | Portainer BE | Yacht | Dockge |
|---|
| 价格 | 免费 | 付费 | 免费 | 免费 |
| Docker 管理 | 全面 | 全面+企业 | 基础 | Stack 专注 |
| K8s 支持 | 基础 | 完整 | 不支持 | 不支持 |
| 多主机 | Agent | Agent+Edge | 不支持 | 不支持 |
| RBAC | 基础 | 完整 | 不支持 | 不支持 |
| 审计日志 | 不支持 | 支持 | 不支持 | 不支持 |
| 资源占用 | 轻量 | 轻量 | 极轻 | 极轻 |
| 适合场景 | 通用 | 企业 | 家庭实验室 | Compose管理 |
选型建议:Docker 可视化管理首选 Portainer CE(功能全面、生态成熟);只需要管理 docker-compose 选 Dockge(更简单);企业需要审计和 RBAC 选 Portainer BE。