Portainer:开源 Docker 容器管理神器,打造可视化的容器运维平台

背景

Docker 的命令行操作对很多用户来说不够直观:

  • 命令行操作繁琐,难以记忆
  • 容器、镜像、网络、卷管理分散
  • 无法直观查看容器状态和日志
  • 多主机管理需要分别登录
  • 权限管理不够灵活
  • 排查问题需要手动 grep 日志
  • docker-compose 编排不够直观
  • 团队协作缺乏统一平台

今天介绍一款开源 Docker 管理利器——Portainer,它是 Docker 可视化管理的最佳开源方案。

什么是 Portainer?

Portainer 是一款开源的 Docker 容器管理平台,采用 Go 语言开发,提供直观的 Web 界面来管理 Docker 环境。

核心理念: “Making Docker and Kubernetes management easy”——让 Docker 和 Kubernetes 管理变得简单。

核心特性:

特性 说明
图形界面 直观的 Web 管理界面
多主机管理 统一管理多个 Docker 主机
镜像管理 可视化镜像管理
容器编排 docker-compose 可视化
权限管理 灵活的团队和权限控制
日志查看 实时容器日志
告警系统 事件告警通知
开源免费 zlib 许可证

GitHub 地址: https://github.com/portainer/portainer

Star 数量: 30K+

Portainer vs 命令行 vs Rancher

对比项 Portainer Docker CLI Rancher
界面 现代美观 无界面 功能丰富
学习曲线 中等
功能复杂度 简单 复杂 复杂
多主机 ✅ 支持 ❌ 不支持 ✅ 支持
权限管理 ✅ 灵活 ❌ 不支持 ✅ 支持
资源占用 极低 较高
部署难度 简单 不适用 复杂

Portainer 的独特优势:

  • 安装简单,一个容器即可运行
  • 界面直观,小白也能管理 Docker
  • 资源占用极低,不影响主机
  • 支持多主机集中管理
  • 权限控制灵活细致
  • 团队协作更加便捷

快速上手

Docker 部署(推荐)

创建目录:

mkdir -p ~/portainer && cd ~/portainer

创建 docker-compose.yml:

version: '3'

services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: unless-stopped
    ports:
      - "9000:9000"
      - "9443:9443"
    volumes:
      - ./data:/data
      - /var/run/docker.sock:/var/run/docker.sock
    command: --http-enabled

启动服务:

# 启动服务
docker-compose up -d

# 查看运行状态
docker-compose ps

# 查看日志
docker-compose logs -f

访问 Web 界面:

http://your-server-ip:9000

首次访问需要创建管理员账号

快速安装

# 一条命令安装
docker run -d \
  -p 9000:9000 \
  -p 9443:9443 \
  --name portainer \
  --restart=unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/portainer/data:/data \
  portainer/portainer-ce:latest

核心功能详解

1. 仪表盘

Dashboard 功能:

显示内容:
- 运行中的容器数量
- 镜像数量
- 网络数量
- 卷数量
- 环境信息
- 容器状态概览

2. 容器管理

容器操作:

可视化管理:
- 创建容器(支持所有选项)
- 启动/停止/重启容器
- 查看容器日志
- 进入容器终端
- 查看容器资源使用
- 端口映射配置
- 卷挂载配置
- 环境变量配置
- 网络配置

创建容器配置示例:

容器配置:
- 镜像:nginx:latest
- 容器名称:my-nginx
- 端口映射:8080:80
- 卷挂载:./html:/usr/share/nginx/html
- 环境变量:ENV=value
- 重启策略:unless-stopped
- 网络:bridge

3. 镜像管理

镜像操作:

功能:
- 拉取镜像
- 查看镜像列表
- 查看镜像层信息
- 删除镜像
- 构建镜像(Dockerfile)
- 导入/导出镜像
- 镜像安全扫描

4. 网络管理

网络操作:

支持的网络类型:
- bridge
- host
- overlay
- macvlan
- 自定义网络

功能:
- 创建网络
- 查看网络详情
- 删除网络
- 连接/断开容器

5. 卷管理

卷操作:

功能:
- 创建卷
- 查看卷列表
- 查看卷使用情况
- 删除卷
- 挂载到容器

6. 编排管理

Stack 管理(docker-compose):

功能:
- 创建 Stack
- 编辑 Stack 配置
- 部署/更新 Stack
- 查看 Stack 日志
- 回滚 Stack
- 删除 Stack

docker-compose 可视化编辑:

编辑器功能:
- YAML 语法高亮
- 模板选择
- 验证检查
- 版本选择
- 环境变量配置

7. 用户和权限

用户管理:

用户类型:
- 管理员:完全控制
- 标准用户:有限权限
- 访客:只读访问

权限控制:
- 控制台访问权限
- 容器管理权限
- 镜像管理权限
- 网络管理权限
- 卷管理权限

高级配置

多主机管理

添加远程主机:

步骤:
1. 在远程主机安装 Docker
2. 配置 Docker API 访问
3. 在 Portainer 添加端点
4. 填写主机信息
5. 测试连接

Docker API 配置(Linux):

# 编辑 docker 服务配置
sudo systemctl edit docker

# 添加以下内容
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

# 重启 Docker
sudo systemctl restart docker

SSL 配置

使用自带 SSL:

volumes:
  - ~/portainer/data:/data
  - /var/run/docker.sock:/var/run/docker.sock
ports:
  - "9000:9000"
  - "9443:9443"
command: --http-enabled

使用 Nginx 反向代理:

server {
    listen 443 ssl;
    server_name portainer.example.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://localhost:9000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

权限配置

创建团队:

1. 进入 Settings → Teams
2. 点击 Add Team
3. 填写团队名称
4. 添加团队成员

团队权限:
- 环境选择
- 容器权限
- 镜像权限
- 网络权限
- 卷权限

常见问题

Q:Portainer 和 Rancher 有什么区别?

A:

  • Portainer 更轻量,安装更简单
  • Portainer 主要针对单机/小规模
  • Rancher 支持 Kubernetes,功能更全面
  • Rancher 学习曲线更陡峭
  • Portainer 适合 Docker 可视化管理

Q:数据存储在哪里?

A:

  • 配置文件存储在 ~/portainer/data
  • SQLite 数据库存储于此
  • 镜像文件仍然在 Docker 本地存储

Q:支持 Kubernetes 吗?

A:

  • Portainer Business 版本支持 K8s
  • CE 版本主要支持 Docker
  • 可通过插件扩展 K8s 支持

Q:如何更新 Portainer?

A:

# 停止并删除旧容器
docker stop portainer
docker rm portainer

# 拉取新镜像
docker pull portainer/portainer-ce:latest

# 重新运行(保留数据)
docker run -d \
  -p 9000:9000 \
  -p 9443:9443 \
  --name portainer \
  --restart=unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/portainer/data:/data \
  portainer/portainer-ce:latest

Q:忘记密码怎么办?

A:

# 重置管理员密码
docker exec portainer portainer --reset-admin-password

适用场景

推荐使用:

  • Docker 可视化管理
  • 小规模容器运维
  • 团队协作管理
  • 开发测试环境
  • 快速容器部署
  • 替代命令行操作

不推荐使用:

  • 超大规模 Kubernetes 集群
  • 需要 CI/CD 集成
  • 需要复杂微服务编排

总结

Portainer 以"简单部署 + 直观界面 + 轻量高效 + 多主机管理"的组合,成为了 Docker 可视化管理的最佳开源选择。

核心优势回顾:

  • 安装简单:一个容器即可运行
  • 界面直观:小白也能管理 Docker
  • 资源占用低:不影响主机性能
  • 多主机管理:统一管理多个环境
  • 权限控制:灵活的团队和权限管理
  • 开源免费:zlib 许可证

对于需要 Docker 可视化管理、快速部署容器、团队协作运维的用户,Portainer 是最佳选择。


© 版权归无边界科技所有,版权所有。

更多推荐