在 VPS 上安装 Portainer,通过网页界面管理 Docker

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 或以上(含运行应用)
CPU1 vCore2 vCores 或以上
磁盘10 GB20 GB 或以上(用于镜像和数据卷)
操作系统Ubuntu 20.04 / Debian 11Ubuntu 22.04 LTS 或更新版本
Linux 内核3.10+5.x+(支持 cgroup v2)

AsiaGB 所有 VPS 套餐均采用 KVM 虚拟化,无内核模块限制,因此 Docker 可以完整运行,不受部分基于 OpenVZ 的 VPS 服务商的功能限制。

为什么要使用 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 CLIPortainer 网页界面
列出容器docker ps -a在侧边栏点击 Containers
查看日志docker logs -f container点击容器 → Logs
停止容器docker stop container点击该行的 Stop 按钮
部署 Stackdocker compose up -dStacks → Add Stack → 粘贴 YAML
监控 CPU/RAMdocker stats点击容器 → Stats(实时图表)
拉取镜像docker pull image:tagImages → Pull → 输入镜像名称

Portainer 并非在所有场景下都能取代命令行,但它能大幅提升可见性,减少因手误引发的操作失误——尤其适合多名团队成员需要协同管理运行中容器的场景。

在公网 VPS 上保护 Portainer 的安全

由于 Portainer 对 Docker 守护进程拥有完整控制权,在开放访问之前务必做好安全防护。建议遵循以下实践:

验证 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 方案

查看泰国VPS主机全部套餐 →