用 Portainer 可视化管理 Docker:容器再多也不用背命令了

玩自建服务有一段时间的朋友应该都有同感:Docker 这东西装服务是方便,但管理全靠命令行。容器跑起来了想改个端口,得先停掉删掉重建;想看看哪个容器在吃内存,docker stats 刷一屏数字眼睛都花;隔几天不管,自己都忘了服务器上到底跑着些什么东西。

我之前就是这样,服务器上七八个容器,每次维护都要翻聊天记录找当初敲的命令。后来装了 Portainer,一个开源的 Docker 可视化管理面板,容器、镜像、网络、数据卷全在网页里管理,状态一目了然,这才算把服务器理顺了。今天把部署过程和日常用法分享一下。

一、准备工作

Portainer 本身非常轻量,对配置没什么要求:

项目 建议
系统 Ubuntu 22.04 LTS
CPU 1 核起步
内存 1G 起步
硬盘 20G 以上

我自己的机器是雨云rainyun-com的 2 核 2G,上面跑着 Portainer 加六七个常用服务,几个月下来很稳,注册填码:2026off,可领5折,一个月也就十几块钱。如果在大厂开同等配置的轻量服务器,价格通常要贵一些,不过大厂胜在节点多、文档全,按自己的预算和习惯选就行。

先在 Ubuntu 22.04 上装好 Docker,直接用系统仓库里的版本就可以:

bash 复制代码
sudo apt update
sudo apt install -y docker.io
sudo systemctl enable --now docker
sudo usermod -aG docker $USER

最后一条是把当前用户加进 docker 组,之后敲 docker 命令不用加 sudo。执行完退出重新登录一次才生效,用 docker version 验证一下能正常输出版本信息就行。

二、一条命令部署 Portainer

Portainer 官方就是容器分发,两条命令搞定。先建一个数据卷存它的配置:

bash 复制代码
docker volume create portainer_data

然后启动容器:

bash 复制代码
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

几个关键点说明一下:

  • 9443 是网页面板的访问端口,走的是 https 协议;8000 是它给远程 agent 预留的通信端口,只用本地管理的话不映射也可以
  • 挂载 /var/run/docker.sock 是它能管理本机 Docker 的关键,千万别漏
  • --restart=always 保证服务器重启后面板自己起来

启动后在浏览器里访问服务器 IP 的 9443 端口,注意协议选 https,浏览器提示证书不受信是正常现象,继续访问即可。第一次打开会要求设置管理员账号和密码,密码要求 12 位以上。设完进入环境选择页,选本地的 Docker 环境连上去,就能看到容器列表了。

三、日常最常用的几个功能

容器管理:Containers 页面列出所有容器,运行状态、端口映射、镜像版本一屏看全。启动、停止、重启都是界面上的按钮,不用记命令。想改配置的话用 Duplicate/Edit,改完它会自动重建容器。

看日志和进终端:每个容器详情页里有 Logs 和 Console。日志页面支持搜索和自动刷新,排查问题比在命令行里翻方便得多;Console 可以直接开一个容器内的终端,选 /bin/sh 或 /bin/bash 连进去。

镜像和卷管理:Images 页面能看到每个镜像占了多少空间,不用的旧镜像勾选删掉,能省不少硬盘。Volumes 页面同理,删容器遗留的孤儿卷前先确认没在用。

Stacks 批量部署:习惯用 docker-compose 的,可以把 compose 文件粘进 Stacks 页面统一部署,之后整组服务一起启停,还能直接在网页里改配置重新部署。比如一个网站加数据库的组合,写成一份 compose 交给 Stacks 管,以后改环境变量、升镜像版本都在一个页面里完成,比翻历史命令靠谱多了。

资源占用一目了然:首页的 Dashboard 会汇总容器、镜像、卷的数量和状态,哪个容器挂了会有明显标记。我现在的习惯是每天早上打开面板扫一眼,有异常马上能发现,不用等服务出问题用户来反馈。

四、两个安全建议

面板权限很大,等于把 Docker 的 root 级操作开到了网页上,务必上心:

  1. 管理员密码设强一点,不要用常见弱密码。
  2. 不建议把 9443 直接暴露到公网。简单做法是装个 ufw 防火墙,只允许自己的常用 IP 段访问:
bash 复制代码
sudo ufw allow from 你的IP地址 to any port 9443
sudo ufw enable

有域名的话也可以用反向代理加访问控制,这里不展开。

五、常见问题

问:打不开面板,浏览器一直转圈?

答:先确认 9443 端口在防火墙和云平台的安全组里都放行了;再确认访问时用的是 https 而不是 http。

问:Portainer 自己怎么升级?

答:停掉删掉旧容器,重新执行一遍启动命令就行,配置存在 portainer_data 卷里不会丢:

bash 复制代码
docker stop portainer && docker rm portainer
docker pull portainer/portainer-ce:latest
# 再执行一遍上面的 docker run 命令

问:学生党预算有限,想先练手怎么办?

答:雨云rainyun-com最低配的机器月付就十几块钱,先开一个月把 Docker 和面板玩熟,不合适随时退掉也不心疼。

问:面板能管多台服务器吗?

答:能。在别的服务器上装它的 agent,回到面板里添加环境就能集中管理。我只有一台机器用不上这功能,多机玩家可以研究一下,比每台机器各开一个面板省心。

六、总结

Portainer 解决的是"管理成本"问题:服务装得越多,命令行维护越乱,有个面板统一看着才不容易出岔子。它本身几乎不占资源,装一次就长期受益,算是自建服务路上的基础设施。建议刚入门 Docker 的朋友早点装上,后面再折腾别的服务会顺很多。

相关推荐
动恰客流统计4 小时前
ReID边缘计算视觉统计:餐饮店客流增长的数字化破局路径
java·大数据·运维·人工智能
张忠琳5 小时前
【NVIDIA】NVIDIA Container Toolkit v1.19.1--07-NVCDI模块:CDI Spec生成引擎深度分析之七
云原生·容器·架构·kubernetes·nvidia
沉迷学习 日益消瘦7 小时前
01-Kubernetes 入门:概念与安装
云原生·容器·kubernetes
weixin_419658317 小时前
Docker 搭建 Jenkins 服务
java·docker·jenkins
砍材农夫8 小时前
运维|devops|jenkins构建应用发布
运维·jenkins·devops
△曉風殘月〆8 小时前
如何在Linux中安装Qt开发环境
linux·运维·qt
BullSmall10 小时前
Tomcat 部署 Jenkins → Docker Jenkins 完整迁移方案
docker·tomcat·jenkins
糟糕喔10 小时前
k8s-云原生cicd
云原生·容器·kubernetes
雨的旋律209910 小时前
ubuntu2604
linux·运维·服务器