跳转至

Portainer 管理docker服务

概要: Portainer是用于管理Dcoker应用/服务的web可视化工具。支持多个服务器节点。

创建时间: 2023.08.03 00:06:40

更新时间: 2023.08.03 00:16:09

准备工作

确保运行portainer的机器上已经具备了Docker环境

安装portainer-server

首先,在安装/运行portainer之前,需要创建docker卷:

Bash
docker volume create portainer_data

以普通Docker容器方式安装

Bash
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

完成后,使用浏览器打开本机的9000端口即可进行创建用户和管理等操作。

以docker-compose方式安装

docker-compose.yaml文件如下

YAML
version: '2'
services:
  portainer:
    image: portainer/portainer-ce
    restart: always
    container_name: lzwang_portainer_server
    ports:
      - "8000:8000"
      - "9000:9000"
    volumes:
      - portainer_data:/data
      - /var/run/docker.sock:/var/run/docker.sock

volumes:
  portainer_data:
    external: true

然后在文件所在目录执行

Bash
docker-compose -f docker-compose.yaml up -d

完成安装

添加其它运行Docker服务的机器

警告

以下操作仅针对Linux服务器,其它系统请参考官方文档

三种监控方式的对比如下

方式 优点 缺点
修改Docker启动参数 不用在监控机器上额外部署服务 (1)需要开放2375端口; (2)需要重启docker服务
使用portainer-agent 无需重启docker服务 (1)需要开放9001端口; (2)部署额外容器
使用portainer-edge-agent 无需重启docker服务和开放端口,以心跳方式通信 不能在UI上直观看到agent机器硬件配置参数

方式一:直接修改Docker启动参数

警告

此方式会暴露2375端口给所有portainer-server,请务必设置好防火墙,目前不建议使用此方式连接portainer的server,可能存在安全隐患

修改Docker服务配置

首先编辑Docker服务文件的启动参数

Bash
vim /usr/lib/systemd/system/docker.service

找到ExecStart=.....字段,追加-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock,修改后的文件内容如下

Bash
ExecStart=...... -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

然后重启系统守护进程和Docker服务

Bash
systemctl daemon-reload
systemctl restart docker

如果Linux服务器有防火墙,则需要打开2375端口给部署了portainer的主机,以CentOS的防火墙工具firewalld为例:

Bash
1
2
3
4
5
# 开放端口给部署portainer的机器
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="{your_ip}" port protocol="tcp" port="2357" accept"

# 刷新防火墙
firewall-cmd --reload

添加endpoint

进入portainer的web管理主页,点击SETTING下的Endpoints,点击Add endpoint:

然后在Environment type中选择Docker,再填入Name(随便填)和Endpoint URL(要管理的服务器IP,端口默认2375),局域网中上述两项足以。如果有公网IP或域名也可以填入Public IP内。

然后点击Add endpoint即可管理新节点的Docker服务。

方式二:使用portainer-agent

提示

请确保portainer-agent所在的对应服务器上端口9001不被占用(或映射到其它端口),并配置好防火墙

使用docker直接部署agent

一行命令即可

Bash
docker run -d -p 9001:9001 --name portainer_agent --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes cr.portainer.io/portainer/agent

使用docker-compose部署agent

docker-compose.yaml如下

YAML
version: "3"
services:
  portainer_agent:
    container_name: lzwang_portainer_agent
    image: cr.portainer.io/portainer/agent
    restart: always
    ports:
      - "9001:9001"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes

方式三:使用portainer-edge-agent

提示

请将portainer-server版本升级到2.9+

点击Environments --> Add environment,然后选择Edge Agent

接下来设置好portainer-server的地址,点击添加

以使用docker直接部署edge-agent为例,在下图中portainer自动生成部署命令,在agent机器上执行即可

监控页面概览

使用不同方式监控的机器在Web上显示如下

参考