文章目录
[0. 老男孩核心思想-人性思维方式](#0. 老男孩核心思想-人性思维方式)
[1. docker常见面试题](#1. docker常见面试题)
[1.1 docker单机网络类型](#1.1 docker单机网络类型)
[1.1.1 桥接模式](#1.1.1 桥接模式)
[1.1.2 Host主机模式](#1.1.2 Host主机模式)
[1.1.3 container容器模式](#1.1.3 container容器模式)
[1.2 docker跨主机网络类型](#1.2 docker跨主机网络类型)
[1.3 docker的底层原理](#1.3 docker的底层原理)
[2. zabbix](#2. zabbix)
[2.1 监控服务](#2.1 监控服务)
[2.2 zabbix架构](#2.2 zabbix架构)
[2.3 部署zabbix服务端](#2.3 部署zabbix服务端)
[2.3.1 导入镜像](#2.3.1 导入镜像)
[2.3.2 配置docker-compose文件](#2.3.2 配置docker-compose文件)
[2.3.3 浏览器访问web页面](#2.3.3 浏览器访问web页面)
[2.4 部署zabbix客户端](#2.4 部署zabbix客户端)
[2.4.1 官方下载客户端](#2.4.1 官方下载客户端)
[2.4.2 阿里云下载客户端](#2.4.2 阿里云下载客户端)
[2.4.3 修改配置文件](#2.4.3 修改配置文件)
[2.5 前端页面配置服务端主机](#2.5 前端页面配置服务端主机)
[2.6 监控主机流程](#2.6 监控主机流程)
[2.6.1 客户端配置](#2.6.1 客户端配置)
[2.6.2 前端添加客户端主机](#2.6.2 前端添加客户端主机)
[3. 思维导图](#3. 思维导图)
0. 老男孩核心思想-人性思维方式
1. docker常见面试题
1.1 docker单机网络类型
docker单机网络类型
说明
bridge桥接
默认网络类型; 类似于虚拟机的NAT模式
自定网络
自定义网络网段,一般与桥接搭配
host模式
与宿主机共用网卡,优势:性能好; 缺点:ip都一样,端口不能冲突
container模式
多个容器同用一个ip
none
无网络
1.1.1 桥接模式
1.1.2 Host主机模式
1.1.3 container容器模式
Container模式是Docker的一种特殊网络模式,它允许一个容器共享另一个容器的网络命名空间 ,而不是使用独立的网络栈。这种模式适用于需要紧密网络耦合 的场景,例如日志收集、Sidecar代理等。
主容器 (如 nginx
)拥有自己的网络命名空间(IP、端口、路由等)。
副容器 (如 log-collector
)共享主容器的网络栈,没有独立的IP ,直接使用主容器的网络接口。
1.2 docker跨主机网络类型
跨主机的网络类型
特点
macvlan
(1)docker原⽣⽀持,⽆需安装额外插件,配置起来相对简单。 (2)适合⼩规模docker环境,例如只有1-3台,如果服务器过多, ⼿动分配IP地址可能会⽆形之间增加⼯作量; 缺点: 需要⼿动分配IP地址,容器⽆⽹络。
overlay
⼀般给docker swarm集群使⽤. 早期20.10overlay可以直接使⽤. 23,24版本只能搭配swarm使⽤.
fannel
k8s编排容器的时候使⽤的⽹络结构
calico
k8s编排容器的时候使⽤的⽹络结构
1.3 docker的底层原理
容器是隔离环境中运行的一个进程;如果进程结束,容器就会停止
容器的隔离环境,拥有自己的IP地址,系统文件,主机名,进程管理,相当于一个mini系统
容器技术是基于Linux内核技术实现的
namespace:命名空间,资源隔离
cgroup:资源控制/限制
overlayfs:文件系统
chroot:切换根目录
namespace分类:
namespace分类
说明
net
网络资源隔离
user
用户id,信息隔离
mnt
磁盘资源隔离
ipc
进程通讯资源格式
pid
进程id隔离
uts
系统资源,比如主机名隔离
2. zabbix
2.1 监控服务
监控服务
说明
zabbix
监控系统底层环境;有模板,上手简单(前端是php页面)
Prometheus
通过各种客户端(exporter监控),性能高(golang),适用于docker、k8s容器监控
grafana
优雅显示,监控大屏(获取zabbix或Prometheus数据)
open falcon
小米
n9e(夜莺 Nighngale)
滴滴
云监控(CMS)
云产品
skywalking监控
链路监控(apm)
2.2 zabbix架构
2.3 部署zabbix服务端
镜像与docker-compose文件:docker-compose.yml等4个文件 链接: https://pan.baidu.com/s/1-ZvhlB1JwvLpXQkhWQqnWg?pwd=vf2k 提取码: vf2k
基础环境:docker、docker-compose
2.3.1 导入镜像
shell
复制代码
[root@m03 ~]# ll
-rw-r--r-- 1 root root 1607 7月 18 08:11 docker-compose.yml # docker-compose文件:自动化启动zabbix服务端容器
-rw-r--r-- 1 root root 615832064 7月 18 12:16 mysql-8.0.tar # 数据库容器
-rw-r--r-- 1 root root 334369792 7月 18 12:16 zbx-server-mysql-7.0.9.tar # zabbix服务端容器
-rw-r--r-- 1 root root 464802304 7月 18 12:16 zbx-web-ngx-mysql-7.0.9.tar # zabbix前端容器
# 导入镜像
[root@m03 ~]# for i in `ls *.tar` ;do docker load -i $i ;done
......
[root@m03 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zabbix/zabbix-web-nginx-mysql 7.0.9-ubuntu b5019f1efaa9 5 months ago 455MB
zabbix/zabbix-server-mysql 7.0.9-ubuntu 77801f625b74 5 months ago 327MB
mysql 8.0-debian 44a5ac32be1d 12 months ago 611MB
2.3.2 配置docker-compose文件
zabbix-server、zabbix前端页面以及Mysql都需要数据库变量,可以将数据库变量写入文件,统一调用
shell
复制代码
# docker-compose变量
[root@m03 /app/tools/zbx]# cat .env
ROOT_PASS="Root123"
ZBX_DB="zabbix"
ZBX_USER="zabbix"
ZBX_PASS="pwd"
# docker-compose文件
[root@m03 /app/tools/zbx]# cat docker-compose.yml
#version: "3.8"
services:
db:
image: mysql:8.0-debian
container_name: zbx_db
networks:
- oldboy_zbx_net
restart: always
volumes:
- ./zbx_db/:/var/lib/mysql/
environment:
MYSQL_ROOT_PASSWORD: "${ROOT_PASS}"
MYSQL_DATABASE: "${ZBX_DB}"
MYSQL_USER: "${ZBX_USER}"
MYSQL_PASSWORD: "${ZBX_PASS}"
command:
- --character-set-server=utf8
- --collation-server=utf8_bin
- --default-authentication-plugin=mysql_native_password
zbx_server:
image: zabbix/zabbix-server-mysql:7.0.9-ubuntu
container_name: zabbix-server-mysql-7.0
networks:
- oldboy_zbx_net
restart: always
ports:
- 10051:10051
depends_on:
- db
environment:
DB_SERVER_HOST: "db"
MYSQL_ROOT_PASSWORD: "${ROOT_PASS}"
MYSQL_DATABASE: "${ZBX_DB}"
MYSQL_USER: "${ZBX_USER}"
MYSQL_PASSWORD: "${ZBX_PASS}"
zbx_web:
image: zabbix/zabbix-web-nginx-mysql:7.0.9-ubuntu
container_name: zabbix-web-nginx-mysql
networks:
- oldboy_zbx_net
restart: always
ports:
- 80:8080
depends_on:
- db
- zbx_server
environment:
ZBX_SERVER_HOST: "zbx_server"
DB_SERVER_HOST: "db"
MYSQL_ROOT_PASSWORD: "${ROOT_PASS}"
MYSQL_DATABASE: "${ZBX_DB}"
MYSQL_USER: "${ZBX_USER}"
MYSQL_PASSWORD: "${ZBX_PASS}"
networks:
oldboy_zbx_net:
driver: bridge
ipam:
config:
- subnet: 172.100.0.0/16
ip_range: 172.100.1.0/24
gateway: 172.100.1.1
# 启动容器
[root@m03 /app/tools/zbx]# docker-compose up -d
[+] Running 3/3
✔ Container zbx_db Started 1.7s
✔ Container zabbix-server-mysql-7.0 Started 1.6s
✔ Container zabbix-web-nginx-mysql Started 1.8s
[root@m03 /app/tools/zbx]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a7db1b841689 zabbix/zabbix-web-nginx-mysql:7.0.9-ubuntu "docker-entrypoint.sh" 10 seconds ago Up 8 seconds (health: starting) 8443/tcp, 0.0.0.0:80->8080/tcp, :::80->8080/tcp zabbix-web-nginx-mysql
925d50fe425e zabbix/zabbix-server-mysql:7.0.9-ubuntu "/usr/bin/docker-ent..." 11 seconds ago Up 9 seconds 0.0.0.0:10051->10051/tcp, :::10051->10051/tcp zabbix-server-mysql-7.0
9efc68ea5d19 mysql:8.0-debian "docker-entrypoint.s..." 11 seconds ago Up 10 seconds 3306/tcp, 33060/tcp zbx_db
2.3.3 浏览器访问web页面
2.4 部署zabbix客户端
zabbix服务端需要自我监控,所以需要安装zabbix-agent2
2.4.1 官方下载客户端
[下载Zabbix 7.0 LTS for Red Hat Enterprise Linux 7](https://www.zabbix.com/cn/download?zabbix=7.0&os_distribution=red_hat_enterprise_linux&os_version=7&components=agent_2&db=&ws=)
2.4.2 阿里云下载客户端
[zabbix-zabbix-7.0-rhel-7-x86_64安装包下载_开源镜像站-阿里云](https://mirrors.aliyun.com/zabbix/zabbix/7.0/rhel/7/x86_64/?spm=a2c6h.25603864.0.0.45f246a3iL3tFU)
shell
复制代码
[root@m03 ~]# yum install -y https://mirrors.aliyun.com/zabbix/zabbix/7.0/rhel/7/x86_64/zabbix-agent2-7.0.0-release1.el7.x86_64.rpm
......
2.4.3 修改配置文件
zabbix-agent2配置文件路径:/etc/zabbix/zabbix_agent2.conf
shell
复制代码
[root@m03 ~]# grep -E '^Server=' /etc/zabbix/zabbix_agent2.conf
Server=172.16.1.63,172.100.1.0/16 # zabbix服务端地址,docker容器网段;其他客户端只写服务端IP即可
[root@m03 ~]# systemctl enable --now zabbix-agent2.service
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent2.service → /usr/lib/systemd/system/zabbix-agent2.service.
2.5 前端页面配置服务端主机
2.6 监控主机流程
2.6.1 客户端配置
shell
复制代码
[root@web01.oldboy.cn ~]# yum install -y https://mirrors.aliyun.com/zabbix/zabbix/7.0/rhel/7/x86_64/zabbix-agent2-7.0.0-release1.el7.x86_64.rpm
[root@web01.oldboy.cn ~]# vim /etc/zabbix/zabbix_agent2.conf
[root@web01.oldboy.cn ~]# grep '^Server=' /etc/zabbix/zabbix_agent2.conf
Server=172.16.1.63
[root@web01.oldboy.cn ~]# systemctl enable --now zabbix-agent2.service
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent2.service → /usr/lib/systemd/system/zabbix-agent2.service.
2.6.2 前端添加客户端主机
3. 思维导图
https://kdocs.cn/join/gpuxq6r?f=101\r\n邀请你加入共享群「老男孩教育Linux运维99期-孙克旭」一起进行文档协作