
本文永久链接:https://www.xy1413.com/p/goodthings_portainer/
背景
上一期,我们介绍了服务器web管理工具 - cockpit,它不但可以管理物理服务器,还可通过插件管理虚拟机。但是它也有一个致命的缺陷,那就是缺少Docker管理工具(旧版的cockpit-docer已经不再兼容新版的cockpit)。
这一期,我们介绍一个web端的Docker管理工具 - Portainer。
介绍
之前在某处看到Portainer是Docker官方出品的,没有去考证。不管怎么样,Portainer作为一个Docker管理工具,其不仅具有界面美观、易用等特点,而且相关功能齐全,能够满足个人与企业不同的需求。
其主要功能包含:
- 从镜像拉取到容器创建、运行等一系列操作;
- 容器控制台,提供容器管理、监控等操作;
- 定制模板与快速部署;
- 事件日志;
- 登陆用户管理;
- 集中/集群管理;
- ……
安装
Portainer分为CE和BE两个版本,前者为社区免费版本。但作为个人使用,CE社区版本已经足够了。如果是企业,可以选择BE版本,毕竟人家也要挣钱的嘛。
首先,我们要选择一台主机作为中心节点安装Portainer。既然是Docker管理工具,首先是用Docker把自己管理起来:
docker volume create portainer
docker run -d \
--name portainer \
--restart=always \
-v portainer:/data \
-p 8000:8000 \
-p 9000:9000 \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
portainer/portainer-ce:latest
现在我们就可以通过<your ip>:9000访问Portainer了。另忘了设置端口规则,放行9000端口。

Nginx反向代理
作为一个web端管理工具,这一步好像是不能少的。如果你像我这样拥有公网ip,你还能够随时随地的访问和管理你的Docker容器。
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name <your domain>;
# ssl设置
...
location / {
proxy_pass http://127.0.0.1:9000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
从现在起,我们就可以通过域名访问Portainer。
集中管理
如果你有多台机器运行Docker,以往的经验是在各个机器上对Docker及其容器进行操作。但是有了Portainer之后,我们只需要在一个web页面里就可以实现对运行在不同主机上的Docker进行管理,这一点很像cockpit。

Portainer将各主机上的Docker称为环境(Environment),我们可添加新的环境到中心节点上,以实现统一管理。当然这还需要事先安装一个称之为Agent的容器。在安装配置方面,Portainer做的还是非常到位的,直接就在web 页面上提供了Agent类型选择与安装说明。

当然由于我们很可能是在受限的环境运行Docker,比如群晖 NAS,这样一来使用compose.yaml来安装Agent就更合适了:
version: "3"
services:
server:
image: portainer/agent:2.19.3
container_name: portainer-agent
network_mode: bridge
restart: always
volumes:
- .:/var/lib/docker/volumes:rw
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "9001:9001"
至此,我们的Portainer就安装完成了,最终的效果就是这样子的:

是不是很方便、很直观?
结束语
Portainer作为Docker的web管理工具,是非常合格的,不但界面美观,操作也很方便、直观。但是其也有一些缺点这里需要特别提及:
- 没有多国语言支持。对于使用Docker的人来说,这虽然不是什么大问题,但是,多数人对母语的反应速度肯定是要快一些嘛;
- 在创建容器方面,Portainer非常繁琐与复杂,还不如直接使用命令行。好在上一期我们介绍了cockpit,就用它吧。
版权声明 ©
