一、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)]

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐