跳转至

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 部署
# - 查看资源使用情况

常见报错

报错信息原因解决方案
无法连接到 DockerDocker socket 未挂载确保 -v /var/run/docker.sock:/var/run/docker.sock
Admin password expired首次安装5分钟内未设置密码重新创建容器
Port 9443 already in use端口被占用改用其他端口 -p 9444:9443
Agent not reachableAgent 未启动或网络不通检查防火墙和 Agent 容器状态
Stack deploy faileddocker-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 CEPortainer BEYachtDockge
价格免费付费免费免费
Docker 管理全面全面+企业基础Stack 专注
K8s 支持基础完整不支持不支持
多主机AgentAgent+Edge不支持不支持
RBAC基础完整不支持不支持
审计日志不支持支持不支持不支持
资源占用轻量轻量极轻极轻
适合场景通用企业家庭实验室Compose管理

选型建议:Docker 可视化管理首选 Portainer CE(功能全面、生态成熟);只需要管理 docker-compose 选 Dockge(更简单);企业需要审计和 RBAC 选 Portainer BE。