
Portainer CE(社区版)是目前最流行的 Docker 网页管理界面。它让你无需使用命令行,即可通过浏览器查看、启动、停止、删除容器,拉取镜像,以及管理数据卷和网络。无论是 Docker 初学者还是负责生产环境的团队,都能从中受益。
Portainer 的工作原理
Portainer CE 的工作方式是将 Docker 套接字(/var/run/docker.sock)挂载到自身的容器中。这样 Portainer 就能获得对 Docker API 的完整访问权限——它可以像在终端中执行命令一样创建、停止、删除和重新配置容器,但通过基于浏览器的界面,任何团队成员无需 Linux 经验即可使用。
其架构包含两个主要组件:Portainer Server(即你安装的网页界面和 API 后端),以及可选的 Portainer Agent(可连接到远程 Docker 主机或集群)。对于不使用 Swarm 或 Kubernetes 的单台自托管 VPS,仅安装 Portainer Server 即可满足需求。
VPS 最低配置要求
在安装 Docker 和 Portainer 之前,请确认你的 VPS 满足以下要求:
| 配置项 | 最低要求 | 推荐配置 |
|---|---|---|
| 内存(RAM) | 512 MB(仅 Docker + Portainer) | 1 GB 或以上(含运行应用) |
| CPU | 1 vCore | 2 vCores 或以上 |
| 磁盘 | 10 GB | 20 GB 或以上(用于镜像和数据卷) |
| 操作系统 | Ubuntu 20.04 / Debian 11 | Ubuntu 22.04 LTS 或更新版本 |
| Linux 内核 | 3.10+ | 5.x+(支持 cgroup v2) |
AsiaGB 所有 VPS 套餐均采用 KVM 虚拟化,无内核模块限制,因此 Docker 可以完整运行,不受部分基于 OpenVZ 的 VPS 服务商的功能限制。
为什么要使用 Portainer
- 可视化仪表板 — 一目了然查看所有容器的 CPU/内存使用情况
- 日志查看器 — 在浏览器中实时流式查看容器日志
- Docker Compose 堆栈 — 直接从界面部署
docker-compose.yml - 镜像仓库 — 一键从 Docker Hub 或私有仓库拉取镜像
- 免费社区版 — Portainer 社区版完全免费,无节点数限制
前提条件:必须先安装 Docker Engine。如果尚未安装,请先运行 curl -fsSL https://get.docker.com | sh 再继续操作。
安装 Portainer CE
第一步:创建持久化数据卷
docker volume create portainer_data
第二步:运行 Portainer 容器
docker run -d \
-p 8000:8000 \
-p 9443:9443 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
此命令在后台运行 Portainer(-d),在 9443 端口开启 HTTPS 网页界面,并挂载 Docker 套接字以便 Portainer 管理 Docker。
第三步:验证容器是否正在运行
docker ps | grep portainer
第四步:打开网页界面
在浏览器中访问 https://YOUR_VPS_IP:9443。首次启动时,系统会要求你创建管理员密码——请使用至少 12 位字符。
安全提示:请勿将 9443 端口直接暴露在公网上。建议配置带有有效 TLS 证书(Let's Encrypt)的 Nginx 反向代理,或通过 Cloudflare Tunnel 进行隧道转发,避免将管理界面直接对外开放。
为 Portainer 配置 Nginx 反向代理
sudo nano /etc/nginx/sites-available/portainer
server {
listen 80;
server_name portainer.yourdomain.com;
return 301 https://$host$request_uri;
}
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://localhost:9443;
proxy_ssl_verify off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
sudo ln -s /etc/nginx/sites-available/portainer /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
日常常用的核心功能
容器管理
进入 Containers 页面,可查看所有容器及其运行状态。只需单击即可执行启动、停止、重启、删除、查看日志或进入 Shell 等操作。
部署 Stack(docker-compose)
进入 Stacks → Add Stack → 粘贴 docker-compose.yml 内容 → 点击 Deploy。Portainer 会自动拉取所需镜像并按配置创建所有容器。
version: '3'
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
资源监控统计
点击任意容器 → Stats,即可查看实时 CPU 占用率、内存使用量、网络 I/O 和磁盘 I/O——无需额外监控工具即可快速诊断性能问题。
Portainer CE 与 Docker CLI 对比
| 操作 | Docker CLI | Portainer 网页界面 |
|---|---|---|
| 列出容器 | docker ps -a | 在侧边栏点击 Containers |
| 查看日志 | docker logs -f container | 点击容器 → Logs |
| 停止容器 | docker stop container | 点击该行的 Stop 按钮 |
| 部署 Stack | docker compose up -d | Stacks → Add Stack → 粘贴 YAML |
| 监控 CPU/RAM | docker stats | 点击容器 → Stats(实时图表) |
| 拉取镜像 | docker pull image:tag | Images → Pull → 输入镜像名称 |
Portainer 并非在所有场景下都能取代命令行,但它能大幅提升可见性,减少因手误引发的操作失误——尤其适合多名团队成员需要协同管理运行中容器的场景。
在公网 VPS 上保护 Portainer 的安全
由于 Portainer 对 Docker 守护进程拥有完整控制权,在开放访问之前务必做好安全防护。建议遵循以下实践:
- 切勿直接暴露 9443 端口 — 在 Nginx 反向代理(需有效 TLS 证书)后面运行 Portainer,或使用 Cloudflare Tunnel,避免将管理界面直接对外开放
- 设置强管理员密码 — 至少 16 位字符,混合大小写字母、数字和符号
- 启用双因素认证 — Portainer 在 Settings → Users 下支持 TOTP(Google Authenticator)身份验证
- 按 IP 限制访问 — 在 Nginx 或防火墙中配置,仅允许团队 IP 地址进行连接
- 创建非管理员账户 — 日常工作避免使用管理员账户,改用权限受限的普通账户
验证 Docker 套接字权限
# Check that the Docker socket has correct permissions
ls -la /var/run/docker.sock
# Expected output
# srw-rw---- 1 root docker 0 ... /var/run/docker.sock
# Add your user to the docker group to avoid using sudo every time
sudo usermod -aG docker $USER
newgrp docker
备份与恢复 Portainer 数据
所有 Portainer 配置——包括用户、环境和 Stack 设置——均存储在 portainer_data Docker 数据卷中。备份该数据卷可防止因意外删除或服务器迁移导致配置丢失:
备份 portainer_data 数据卷
# Stop Portainer first to ensure data consistency
docker stop portainer
# Export the volume to a compressed archive
docker run --rm \
-v portainer_data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/portainer_backup_$(date +%Y%m%d).tar.gz -C /data .
# Restart Portainer
docker start portainer
恢复 portainer_data 数据卷
# Create the volume if it does not exist
docker volume create portainer_data
# Restore from a backup archive
docker run --rm \
-v portainer_data:/data \
-v $(pwd):/backup \
alpine sh -c "cd /data && tar xzf /backup/portainer_backup_YYYYMMDD.tar.gz"
提示:设置每周定时任务(cron job)自动执行备份,并将归档文件上传至对象存储或云盘等异地存储。即使 VPS 本身丢失,也能保障你的配置安全。
将 Portainer 更新至最新版本
# Stop and remove the current container
docker stop portainer && docker rm portainer
# Pull the latest image
docker pull portainer/portainer-ce:latest
# Re-run (your data volume is preserved)
docker run -d \
-p 8000:8000 \
-p 9443:9443 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
需要一台运行 Docker 和 Portainer 的 VPS?
Linux VPS 月付 500 泰铢起,提供完整 Root 权限——运行 Docker、Portainer 及任意容器应用栈。
查看 VPS 方案