一、docker基本概念
1、宿主机、容器?
容器只是运行在宿主机上的一种特殊的进程
当我们所说的对象是 docker 容器时, 它所在的机器就是宿主机,
如果在虚拟机里装docker, 那么虚拟机就是容器的宿主机
如果在物理机里装docker, 那么物理机就是容器的宿主机
2、为什么用docker?
实现更轻量级的虚拟化,方便快速部署
对于部署来说可以极大的减少部署的时间成本和人力成本
1)标准化应用发布,docker容器包含了运行环境和可执行程序,可以跨平台和主机使用;
2)节约时间,快速部署和启动,VM启动一般是分钟级,docker容器启动是秒级;
3)方便构建基于SOA架构或微服务架构的系统,通过服务编排,更好的松耦合;
4)节约成本,以前一个虚拟机至少需要几个G的磁盘空间,docker容器可以减少到MB级;
5)方便持续集成,通过与代码进行关联使持续集成非常方便;
3、docker上哪些环节会影响应用性能?
CPU、内存、网络、硬盘、进程
4、一个标准的应用框架可能涉及哪些中间件?
rabbitMQ、redis、数据库
5、服务器安装docker
见Centos下安装Docker
docker基础命令:
docker images -a ### 查看所有已安装的docker
docker ps ###查看在运行的docker
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}" ###带上格式好看点
docker start dockername ###启动已有的docker
docker stop dockername ###停止在运行的docker
docker images -a
二、搭建简易docker项目
方面我们后续性能测试获取数据,见搭建简易项目
三、搭建监控平台
1、node-exporter (9100)
主要功能是监控CPU、内存、网络、磁盘
先来张集成后的效果图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fEClP52e-1645766942736)(/images/2/2126/1645666056000-image.png)]
磁盘异常:
dd if=/dev/zero of=/data/test.apk bs=1M count=1000
cpu异常:
cat /dev/urandom | md5sum
内存异常:
stress --vm 2 --vm-bytes 600M --vm-keep
网络异常:
安装iperf
yum install iperf
更多异常推荐这篇文章stress使用教程
把监控容器装上
docker run -itd --name node-exporter -p 9100:9100 \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
prom/node-exporter
2、mysqld-exporter(9104)
查数据库
docker pull registry.cn-hangzhou.aliyuncs.com/sqqdcl/db:v5
docker run -itd --name mysql -p 3306:3306 \
-v /opt/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=sq \
registry.cn-hangzhou.aliyuncs.com/sqqdcl/db:v5
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z4lfJXni-1645766942738)(/images/2/2126/1645687918000-image.png)]
3、prometheus (9090)
收集数据,1、2、4、5服务的数据
3.1首先指定服务器路径生成一个prometheus.yml配置文件
global:
scrape_interval: 60s
evaluation_interval: 60s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['172.17.0.1:9090']
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['172.17.0.1:9100']
- job_name: mysql
static_configs:
- targets: ['172.17.0.1:9104']
- job_name: 'cadvisor'
static_configs:
- targets: ['172.17.0.1:8081']
- job_name: 'redis_exporter'
static_configs:
- targets: ['172.17.0.1:9121']
- job_name: 'rabbitmq'
static_configs:
- targets: ['172.17.0.1:15692']
3.2创建容器
docker run -itd --name prometheus -p 9090:9090 \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /etc/localtime:/etc/localtime:ro \
prom/prometheus
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zVDGYXQx-1645766942739)(/images/2/2126/1645688115000-image.png)]
4、grafana(3000)
展示数据,数据来源prometheus
4.1建好文件夹
mkdir -p /opt/grafana/data
chmod 777 /opt/grafana/data
4.2创建容器
docker run -itd --name=grafana -p 3000:3000 \
-v /opt/grafana/data:/var/lib/grafana \
-v /etc/localtime:/etc/localtime:ro \
grafana/grafana
5、cAdvisor(8081)
容器监控
创建容器
docker run -itd --name sysdig --privileged=true \
--volume=/var/run/docker.sock:/host/var/run/docker.sock \
--volume=/dev:/host/dev \
--volume=/proc:/host/proc:ro \
--volume=/boot:/host/boot:ro \
--volume=/lib/modules:/host/lib/modules:ro \
--volume=/usr:/host/usr:ro sysdig/sysdig
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1PPf8EUq-1645766942740)(/images/2/2126/1645688233000-image.png)]
更多推荐