Portainer 是最受欢迎的 Docker 图形化管理工具,通过浏览器即可可视化管理容器、镜像、数据卷、网络和 Stack(Compose),极大地降低了 Docker 的操作门槛。无论是新手入门还是日常运维,Portainer 都能显著提升效率。

本文要点

  • Docker 部署 Portainer CE(社区免费版)
  • 首次登录与安全配置
  • 管理容器、镜像、数据卷的常用操作
  • 用 Stacks 部署 Compose 应用
  • Nginx 反代 + SSL 保护管理界面

部署 Portainer CE

Portainer 本身也是一个 Docker 容器,通过挂载 Docker Socket 与宿主机 Docker 通信:

# 创建数据卷
docker volume create portainer_data

# 启动 Portainer
docker run -d \
  --name portainer \
  -p 8000:8000 \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  --restart unless-stopped \
  portainer/portainer-ce:latest

或使用 docker-compose.yml:

# /opt/portainer/docker-compose.yml
services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    ports:
      - "8000:8000"
      - "9443:9443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
    restart: unless-stopped

volumes:
  portainer_data:

Docker Socket 权限极高

挂载 /var/run/docker.sock 等同于给 Portainer 完整的宿主机 Docker 控制权,请确保 Portainer 界面不暴露在公网,或至少通过强密码和 HTTPS 保护。

首次登录与安全配置

Portainer 部署后访问 https://服务器IP:9443(自签名证书,浏览器提示安全警告属正常,点击继续):

  1. 设置管理员用户名与密码(密码至少 12 位,包含字母数字与符号)
  2. 选择"Local"连接本地 Docker 环境
  3. 进入主界面,即可看到当前所有容器

5 分钟超时

Portainer 首次访问后有 5 分钟的初始化窗口,超时需重启容器:docker restart portainer

主要功能模块

模块功能说明常见操作
Containers管理所有容器启停、查看日志、进入终端、查看统计
Images管理镜像拉取、删除、查看层级
Volumes管理数据卷创建、删除、浏览内容
Networks管理网络创建自定义网络、查看容器网络
Stacks管理 Compose 应用粘贴或上传 compose.yml 一键部署

用 Stacks 部署 Compose 应用

在 Portainer 中点击 Stacks → Add Stack,将 docker-compose.yml 内容粘贴到编辑框,填写 Stack 名称后点击"Deploy the stack",即可在界面上完成 Compose 应用的部署,后续可直接在界面修改配置并更新。

Nginx 反向代理 + SSL(可选)

如果希望用域名访问 Portainer 并避免浏览器证书警告,可配置 Nginx 反代:

certbot --nginx -d portainer.yourdomain.com
server {
    listen 443 ssl;
    server_name portainer.yourdomain.com;
    ssl_certificate     /etc/letsencrypt/live/portainer.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/portainer.yourdomain.com/privkey.pem;
    location / {
        proxy_pass https://127.0.0.1:9443;
        proxy_ssl_verify off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

限制访问 IP

如果 Portainer 不需要从任意位置访问,可在 Nginx 中添加 allow 你的IP; deny all; 限制只有你自己的 IP 能访问管理界面,安全性大幅提升。

更新 Portainer

docker stop portainer
docker rm portainer
docker pull portainer/portainer-ce:latest
# 重新执行启动命令(数据卷 portainer_data 中的配置保留)

小结

  • Portainer CE 免费、功能完整,适合个人与小团队
  • Docker Socket 权限极高,务必配置强密码和 HTTPS
  • Stacks 功能让 Compose 部署可在界面上完成,无需 SSH
  • 限制访问 IP 是比密码更有效的安全措施

常见问题

Portainer 免费版够用吗?

对于个人和小团队完全够用。CE 版支持完整的容器管理、Stacks、日志、终端等核心功能;Business 版增加了 RBAC 权限、审计日志等企业特性。

Portainer 支持管理远程 Docker 吗?

支持。可以添加多个 Environment,通过 Agent 或 Docker API 管理远程服务器上的 Docker 环境,适合多台 VPS 统一管理。

忘记 Portainer 管理员密码怎么办?

需要重置数据卷:停止并删除容器,删除 portainer_data 卷(会清除所有 Portainer 配置),重新启动后重新初始化。重要配置请事先在界面导出或记录。