Portainer:给 Docker 装个网页管理面板

记不住 docker 命令?Portainer 给 Docker 套了个网页面板:看容器、看日志、启停删点鼠标就行,还能管理 compose 项目(Stacks)。小够教你装上,并提醒安全注意事项。

我是小够,只推够用的 VPS。

docker ps、docker logs 敲多了,总有人问:有没有网页点一点就能管 Docker 的?有,Portainer,社区版免费,个人用完全够。

安装(一行 compose)

services:
  portainer:
    image: portainer/portainer-ce:2
    restart: unless-stopped
    ports:
      - "9000:9000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer-data:/data

volumes:
  portainer-data:
docker compose up -d

打开 http://服务器IP:9000,设个管理员密码就能用。注意:第一次打开必须在几分钟内设置密码,超时了要重启容器重来。这是为了防止别人抢注你的管理员账号——公网 IP 的机器,这几分钟都有人扫。

tag 用 portainer-ce:2 钉死大版本,别用 latest,省得哪天大版本升级界面全变了你还不知道。

功能巡礼:它能干嘛

容器管理:所有容器列表,状态一目了然,点一下启停删。比 docker ps -a 直观得多,尤其容器多的时候。还能看每个容器的资源占用曲线,docker stats 的图形版。

日志和终端:在网页里看日志、进容器的终端(console),应急改个配置很方便,不用 ssh 上去敲命令。终端功能在手机上也能用,出门在外救急神器。

Stacks:Portainer 里可以直接粘贴 compose 文件创建项目(叫 Stack),效果和 docker compose up 一样,还能在线编辑。适合"我就想在网页里管一切"的人。但小够建议:重要的项目还是把 compose 文件存在主机目录用命令行管,Portainer 当查看器——网页里改的东西不好版本管理,改崩了都不知道改了啥。

镜像和数据卷:镜像列表、数据卷列表,一键清理没用的。docker system prune 的图形版,点鼠标就行,还能看到每个镜像占了多少空间。

应用模板:内置了一些常用应用的一键部署模板,点几下就跑起来。新手可以先从模板体验"容器跑起来"的感觉,再回头学手写 compose, learning curve 平滑很多。

安全警告(重要)

/var/run/docker.sock 这个挂载,等于把 Docker 的控制权交给了 Portainer 容器。Portainer 的 9000 端口绝对不能直接暴露到公网,谁打开谁就能接管你的整台机器。正确做法三选一:

  1. 只监听内网:ports 改成 "127.0.0.1:9000:9000",用 SSH 端口转发访问:
ssh -L 9000:localhost:9000 用户@服务器IP

然后浏览器开 localhost:9000,安全又省事,小够自己就用这个。手机上用 Termius 之类的 SSH 客户端也能做端口转发。

  1. 前面加反代 + HTTPS + 强密码:Nginx 反代,配 Let’s Encrypt 证书,密码用密码管理器生成 20 位以上。再加个 IP 白名单更好。
  2. 用完就停:不看的时候 docker compose down,需要再起。简单粗暴但有效,适合"我一个月就看两次"的人。

另外 Portainer 自己的数据在 portainer-data 卷里,记得备份——重装丢了配置,所有 Stack 得重建。备份方法看本月数据卷那篇。

替代品

  • Yacht:更轻量的网页管理,功能比 Portainer 少,但 1 核小机器更友好,界面也简单。
  • Dockge:专注管理 compose 项目,界面清爽,适合"只用 compose、一个项目一个文件"的人,和 Portainer 的 Stack 理念接近但更轻。
  • 1Panel:国产面板,应用商店+容器管理+建站一条龙,本月后面会单开一篇讲它和 Docker 的配合。如果你已经在用 1Panel,可能不需要再装 Portainer。

选哪个看需求:要全功能选 Portainer,要轻量选 Dockge,已经在用面板就别重复装。小够自己是 Portainer + 命令行混用。

够用吗

Portainer 本身很轻,1 核 1G 的机器跑它没压力。但它只是"遥控器",Docker 命令还是建议学——面板挂了的时候,命令行是最后的救命绳。这个月的内容就是干这个的,两者都会,才算真会。