Featured image of post 好物推荐 - Portainer

好物推荐 - Portainer

web端好看又好用的Docker管理工具

背景

上一期,我们介绍了服务器web管理工具 - cockpit,它不但可以管理物理服务器,还可通过插件管理虚拟机。但是它也有一个致命的缺陷,那就是缺少Docker管理工具(旧版的cockpit-docer已经不再兼容新版的cockpit)。

这一期,我们介绍一个web端的Docker管理工具 - Portainer

介绍

之前在某处看到PortainerDocker官方出品的,没有去考证。不管怎么样,Portainer作为一个Docker管理工具,其不仅具有界面美观、易用等特点,而且相关功能齐全,能够满足个人与企业不同的需求。

其主要功能包含:

  1. 从镜像拉取到容器创建、运行等一系列操作;
  2. 容器控制台,提供容器管理、监控等操作;
  3. 定制模板与快速部署;
  4. 事件日志;
  5. 登陆用户管理;
  6. 集中/集群管理;
  7. ……

安装

Portainer分为CEBE两个版本,前者为社区免费版本。但作为个人使用,CE社区版本已经足够了。如果是企业,可以选择BE版本,毕竟人家也要挣钱的嘛。

首先,我们要选择一台主机作为中心节点安装Portainer。既然是Docker管理工具,首先是用Docker把自己管理起来:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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端口。

IMG_20231212_205459

Nginx反向代理

作为一个web端管理工具,这一步好像是不能少的。如果你像我这样拥有公网ip,你还能够随时随地的访问和管理你的Docker容器。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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

IMG_20231212_204146

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

IMG_20231212_204246

当然由于我们很可能是在受限的环境运行Docker,比如群晖 NAS,这样一来使用compose.yaml来安装Agent就更合适了:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
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就安装完成了,最终的效果就是这样子的:

IMG_20231212_204632

是不是很方便、很直观?

结束语

Portainer作为Docker的web管理工具,是非常合格的,不但界面美观,操作也很方便、直观。但是其也有一些缺点这里需要特别提及:

  1. 没有多国语言支持。对于使用Docker的人来说,这虽然不是什么大问题,但是,多数人对母语的反应速度肯定是要快一些嘛;
  2. 在创建容器方面,Portainer非常繁琐与复杂,还不如直接使用命令行。好在上一期我们介绍了cockpit,就用它吧。

最后更新于 2023-12-14
小酌怡情
Built with Hugo
主题 StackJimmy 设计
访问量 -    访客数 - 人次