Docker学习笔记---day013
文章目录
一、Docker轻量级可视化工具Portainer
Portainer官网是Docker镜像容器的一个轻量级可视化管理工具
1. 安装命令:
powershell
# --restrat: 当docker重启的时候,portainer也会重启(进一步保证同时在线)
# 将宿主机的Docker守护进程套接字挂载到容器内,使Portainer能够与宿主机的Docker引擎通信
# 端口映射。将宿主机的8000和9000端口分别映射到容器的相同端口。9000端口是Web UI的主要访问端口
# 创建命名卷portainer_data并挂载到容器的/data路径,用于持久化保存Portainer的配置数据
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
2. 第一次登录需要创建admin,访问地址:ip+9000端口号
powershell
# 我的访问地址 linux系统的IP192.168.17.131 + 端口号
http://192.168.17.131:9000/
3. 设置admin用户和密码后首次登陆

4、选择local选项卡后本地docker详细信息展示
其实质就是对应的命令:
powershell
docker system df

5、常用操作
进入容器内部的bash进行操作(有时候因为版本问题进不去命令界面--参考)

使用界面进行拉取镜像并实例化容器

二、Docker容器监控之CAdvisor+InFluxDb+Granfana (重量级)
Cadvisor 监控收集 + InfluxDB 存储数据 + Grantfana展示图标
查看各容器实例的资源占用状态:
powershell
docker stats

注:docker stats命令可以很清楚的查看当前宿主机上所有容器CPU,内存以及网络流量等数据。但是该命令统计结果只是当前宿主机的全部容器,数据资料是实时的,没有地方存储、没有健康指标过线预警等功能
2.1、CAdvisor
CAdvisor功能主要有两点: 展示Host和容器两个层面的监控数据、展示历史变化数据
CAdvisor是一个容器资源监控工具, 包括容器的内存、网络IO、磁盘IO等监控,同时提供了一个WEB页面用于查看容器实时运行状态。
CAdvisor默认存储2分钟的数据,而且只是针对单物理机。此外,CAdvisor提供了很多数据集成接口,支持InfluxDB、Redis、Kafka、Elasticsearch等集成,可以加上对应配置将监控数据发往这些数据库存储起来。
2.2、InFluxDB
InfluxDB是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。
CAdvisor默认只在本机保存最近2分钟的数据 ,为了持久化存储数据和统一收集展示监控数据 ,需要将数据存储到InfluxDB中。InfluxDB是一个时序数据库 ,专门用于存储时序相关数据 ,很适合存储CAdvisor的数据。而且,CAdvisor本身已经提供了InfluxDB的集成方法,在启动容器时指定配置即可。
2.3、Granfana
Grafana 是一个强大的数据可视化与分析平台,可以从包括 InfluxDB 在内的多种数据源读取数据,并生成图表、仪表盘。
2.4、CAdvisor+InFluxDb+Granfana结合Compose一键搭建监控平台
- 新建目录:mkdir cig
- 新建3件套组合的docker-compse.yml文件
powershell
# 编写yml文件
vi docker-compose.yml
# 编写好后检查语法是否正确
docker-compose config -q
具体的yml文件
yml
version: "3.1" # 指定Docker Compose文件格式版本
volumes:
grafana_data: {}
services:
influxdb:
image: tutum/influxdb:0.9
restart: always
ports:
- "8003:8003" # 对外暴露的web端口
- "8086:8086"
volumes:
- ./data/influxdb:/data # 数据卷挂载:将主机目录挂载到容器
cadvisor:
image: google/cadvisor
links:
- influxdb:influxsrc
command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_drive r_host=influxrv:8086
restart: always
ports:
- "8080:8080" # Redis默认端口映射
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
grafana:
user: "104"
image: grafana/grafana
user: "104"
restart: always
links:
- influxdb:influxsrv
ports:
- "3000:3000" # MySQL默认端口映射
volumes:
- /grafana_data:/var/lib/grafana
environment:
- HTTP_USER=admin
- HTTP_PASS=admin
- INFLUXDB_HOST=influxsrv
- INFLUXDB_PORT=8086
- 启动docker-compose文件
powershell
# 拉取镜像
docker pull tutum/influxdb
docker pull grafana/grafana
docker pull google/cadvisor
# 启动yml文件
docker-compose up
- 查看三个服务容器是否启动成功

注意:每次启动后修改yml文件后需要清理,再重新启动
powershell
docker-compose down
docker-compose up -d
- 测试
浏览CAdvisor收集服务:http://ip:8080

浏览influxdb存储服务:http://ip:8083

浏览grafana展现服务:http://ip:3000

2.4、CAdvisor+InFluxDb+Granfana监控详细配置
2.4.1、浏览grafana展现服务并配置
- 配置数据源

配置调用数据库服务
在grafana中配置InfluxDB连接信息

在grafana中配置新面板




新建一个查询

查询结果分析

注:本次只是对本机的docker进行的一个管理,但如果对远程服务器的docker进行管理了,就得使用k8s了。