上一篇文章介绍了如何通过docker的基本操作命令搭建运行一个zabbix系统,搭建运行zabbix涉及到了多个容器组成。操作起来相对繁琐,并且每次运行都要来一遍,很是不方便。

使用Docker Compose,不再需要使用shell脚本来启动容器。在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器。Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。[39]它使用YAML文件配置应用程序的服务,并使用单个命令执行所有容器的创建和启动过程。该docker-composeCLI工具允许用户同时运行多个集装箱的命令。

一、安装docker-compose工具

1、快速安装docker

curl -fsSL https://get.docker.com/ | sh

2、启动docker

systemctl enable docker

systemctl start docker

3、安装docker-compose工具

如果系统中已经安装了docker则不需要再执行前两步,docker-compose需要单独安装。

yum install docker-compose -y

安装完毕后使用docker-compose version验证安装

二、规划设计zabbix系统环境依赖配置文件

1、主机安装目录规划

目录结构如上图,在/home下设置一个zabbix目录,然后在zabbix目录下创建三个环境依赖文件即可

.env_db_mysql   #数据库运行依赖环境文件

.env_srv  #zabbix-server运行依赖环境变量文件

.env_web  #zabbix前端web运行依赖文件

2、.env_db_mysql文件内容

[root@localhost zabbix]# cat .env_db_mysql  # DB_SERVER_HOST=mysql-server # DB_SERVER_PORT=3306 # MYSQL_USER=zabbix MYSQL_USER=zabbix # MYSQL_PASSWORD=zabbix MYSQL_PASSWORD=zabbix # MYSQL_ROOT_PASSWORD= MYSQL_ROOT_PASSWORD=zabbix # MYSQL_ALLOW_EMPTY_PASSWORD=false # MYSQL_DATABASE=zabbix MYSQL_DATABASE=zabbix

3、.env_srv文件内容如下

[root@localhost zabbix]# cat .env_srv # ZBX_LISTENIP= # ZBX_HISTORYSTORAGEURL=http://elasticsearch:9200/ # Available since 3.4.5 # ZBX_HISTORYSTORAGETYPES=uint,dbl,str,log,text # Available since 3.4.5 # ZBX_HISTORYSTORAGEDATEINDEX=0 # Available since 4.0.0 # ZBX_DEBUGLEVEL=3                  #定义zabbix-server启动时的输出日志模式 # ZBX_STARTPOLLERS=5 # ZBX_IPMIPOLLERS=0 # ZBX_STARTPREPROCESSORS=3 # Available since 3.4.0 # ZBX_STARTPOLLERSUNREACHABLE=1 # ZBX_STARTTRAPPERS=5 # ZBX_STARTPINGERS=1 # ZBX_STARTDISCOVERERS=1 # ZBX_STARTHTTPPOLLERS=1 # ZBX_STARTTIMERS=1 # ZBX_STARTESCALATORS=1 # ZBX_STARTALERTERS=3 # Available since 3.4.0 ZBX_JAVAGATEWAY_ENABLE=false              #在这里设置为true 可以支撑JAVA网关 # ZBX_JAVAGATEWAY=zabbix-java-gateway # ZBX_JAVAGATEWAYPORT=10052 ZBX_STARTJAVAPOLLERS=5 # ZBX_STARTVMWARECOLLECTORS=0 # ZBX_VMWAREFREQUENCY=60 # ZBX_VMWAREPERFFREQUENCY=60 # ZBX_VMWARECACHESIZE=8M # ZBX_VMWARETIMEOUT=10 ZBX_ENABLE_SNMP_TRAPS=false            #在这里设置为true 可以支持snmp的traps # ZBX_SOURCEIP= # ZBX_HOUSEKEEPINGFREQUENCY=1 # ZBX_MAXHOUSEKEEPERDELETE=5000 # ZBX_SENDERFREQUENCY=30 # ZBX_CACHESIZE=8M # ZBX_CACHEUPDATEFREQUENCY=60 # ZBX_STARTDBSYNCERS=4 # ZBX_HISTORYCACHESIZE=16M # ZBX_HISTORYINDEXCACHESIZE=4M # ZBX_TRENDCACHESIZE=4M # ZBX_VALUECACHESIZE=8M # ZBX_TIMEOUT=4 # ZBX_TRAPPERIMEOUT=300 # ZBX_UNREACHABLEPERIOD=45 # ZBX_UNAVAILABLEDELAY=60 # ZBX_UNREACHABLEDELAY=15 # ZBX_LOGSLOWQUERIES=3000 # ZBX_STARTPROXYPOLLERS=1 # ZBX_PROXYCONFIGFREQUENCY=3600 # ZBX_PROXYDATAFREQUENCY=1 # ZBX_LOADMODULE="dummy1.so,dummy2.so,dummy10.so" # ZBX_TLSCAFILE= # ZBX_TLSCRLFILE= # ZBX_TLSCERTFILE= # ZBX_TLSKEYFILE=

4、.env_web 文件内容

# ZBX_SERVER_HOST=zabbix-server       # ZBX_SERVER_PORT=10051 ZBX_SERVER_NAME=My Zabbix-Server   #定义启动web页面后的TITLE # ZBX_HISTORYSTORAGEURL=http://elasticsearch:9200/ # Available since 3.4.5 # ZBX_HISTORYSTORAGETYPES=['uint', 'dbl', 'str', 'text', 'log'] # Available since 3.4.5 # ZBX_MAXEXECUTIONTIME=600 # ZBX_MEMORYLIMIT=128M # ZBX_POSTMAXSIZE=16M # ZBX_UPLOADMAXFILESIZE=2M # ZBX_MAXINPUTTIME=300 # Timezone one of: http://php.net/manual/en/timezones.php  PHP_TZ=Asia/Shanghai

三、规划设计zabbix系统compose的yaml配置文件

cat docker-compose.yaml

version: '3.5' services:  zabbix-server:   image: zabbix/zabbix-server-mysql:centos-4.0-latest   ports:    - "10051:10051"   volumes:    - /etc/localtime:/etc/localtime:ro    - /etc/timezone:/etc/timezone:ro     - ./home/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro    - ./home/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro    - ./home/zabbix/modules:/var/lib/zabbix/modules:ro    - ./home/zabbix/enc:/var/lib/zabbix/enc:ro    - ./home/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro    - ./home/zabbix/mibs:/var/lib/zabbix/mibs:ro    - ./home/zabbix/snmptraps:/var/lib/zabbix/snmptraps:ro   links:    - mysql-server:mysql-server   ulimits:    nproc: 65535    nofile:     soft: 20000     hard: 40000   deploy:    resources:     limits:       cpus: '0.70'       memory: 1G     reservations:       cpus: '0.5'       memory: 512M   env_file:    - .env_db_mysql    - .env_srv   user: root   depends_on:    - mysql-server   networks:    zbx_net_backend:      aliases:       - zabbix-server       - zabbix-server-mysql       - zabbix-server-centos-mysql       - zabbix-server-mysql-centos    zbx_net_frontend: #  devices: #   - "/dev/ttyUSB0:/dev/ttyUSB0"   stop_grace_period: 30s   sysctls:    - net.ipv4.ip_local_port_range=1024 65000    - net.ipv4.conf.all.accept_redirects=0    - net.ipv4.conf.all.secure_redirects=0    - net.ipv4.conf.all.send_redirects=0   labels:    com.zabbix.description: "Zabbix server with MySQL database support"    com.zabbix.company: "Zabbix SIA"    com.zabbix.component: "zabbix-server"    com.zabbix.dbtype: "mysql"    com.zabbix.os: "centos"

zabbix-web-nginx-mysql:   image: zabbix/zabbix-web-nginx-mysql   ports:    - "8080:80"    - "8443:443"   links:    - mysql-server:mysql-server    - zabbix-server:zabbix-server   volumes:    - /etc/localtime:/etc/localtime:ro    - /etc/timezone:/etc/timezone:ro    - ./home/zabbix/ssl/nginx:/etc/ssl/nginx:ro   deploy:    resources:     limits:       cpus: '0.70'       memory: 512M     reservations:       cpus: '0.5'       memory: 256M   env_file:    - .env_db_mysql    - .env_web   user: root   depends_on:    - mysql-server    - zabbix-server   healthcheck:    test: ["CMD", "curl", "-f", "http://localhost"]    interval: 10s    timeout: 5s    retries: 3    start_period: 30s   networks:    zbx_net_backend:     aliases:      - zabbix-web-nginx-mysql      - zabbix-web-nginx-centos-mysql      - zabbix-web-nginx-mysql-centos    zbx_net_frontend:   stop_grace_period: 10s   sysctls:    - net.core.somaxconn=65535   labels:    com.zabbix.description: "Zabbix frontend on Nginx web-server with MySQL database support"    com.zabbix.company: "Zabbix SIA"    com.zabbix.component: "zabbix-frontend"    com.zabbix.webserver: "nginx"    com.zabbix.dbtype: "mysql"    com.zabbix.os: "centos"

mysql-server:   image: mysql:5.7   command: [mysqld, --character-set-server=utf8, --collation-server=utf8_bin]   volumes:    - ./home/zabbix/mysql:/var/lib/mysql:rw   env_file:    - .env_db_mysql   user: root   stop_grace_period: 1m   networks:    zbx_net_backend:     aliases:      - mysql-server      - zabbix-database      - mysql-database

db_data_mysql:   image: busybox   volumes:    - ./home/zabbix/mysql:/var/lib/mysql:rw

# elasticsearch: #  image: elasticsearch #  environment: #   - transport.host=0.0.0.0 #   - discovery.zen.minimum_master_nodes=1 #  networks: #   zbx_net_backend: #    aliases: #     - elasticsearch

networks:   zbx_net_frontend:     driver: bridge     driver_opts:       com.docker.network.enable_ipv6: "false"     ipam:       driver: default       config:       - subnet: 172.16.238.0/24   zbx_net_backend:     driver: bridge     driver_opts:       com.docker.network.enable_ipv6: "false"     internal: true     ipam:       driver: default       config:       - subnet: 172.16.239.0/24

配置文件内容介绍:

a、定义zabbix-server服务

zabbix-server服务只连通后端网络zbx_net_backend

b、定义zabbix-web-nginx-mysql服务

zabbix-web-nginx-mysql服务连接前后端两个网络,zbx_net_backend和zbx_net_frontend

c、定义mysql-server服务

mysql-server服务连接后端网络zbx_net_backend

d、定义db_data_mysql服务

e、定义了两个网络桥接服务

zbx_net_frontend 定义的ip范围是172.16.238.0/24

zbx_net_backend 定义的ip范围是172.16.239.0/24

四、一键启动zabbix服务

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

或者 docker-compose up -d 也可以

使用docker ps 查看已经启动的三个服务 ,mysql5.7 zabbix-server-mysql zabbix-web-nginx-mysql

五、验证zabbix启动效果

在地址栏输入http://133.3.103.2地址后查看登陆界面

登陆后的界面如下

六、一键关停zabbix服务

通过docker-compose down命令一键关停前面部署的多个docker服务及网络环境

总结:

compose会保留所有服务的volume data,这个volume data,我理解的是对容器做的所有修改。当再次运行docker-compose run这条命令的时候,compose会找到之前运行过的所有容器,然后把它们的volumes,也就是修改后的容器状态,从老的容器中,拷贝到新的容器中,在这个过程中新老容器的CONTAINER ID不会变化。

Compose 文件是一个 YAML , 主要定义了 services , networks 和 volumes , 其默认路径是 ./docker-compose.yml 。service 定义包含了应用与每个容器的配置,很像给 docker run 传参,同样, network 和 volume 对于 docker network create 和 docker volume create 也类似

jtm 一键安装mysql_通过docker-compose配置快速实现zabbix安装相关推荐

  1. Docker Compose配置springboot微服务项目

    [Docker那些事]系列文章 docker 安装 与 卸载 centos Dockerfile 文件结构.docker镜像构建过程详细介绍 Dockerfile文件中CMD指令与ENTRYPOINT ...

  2. 如何在 CentOS 7上安装和使用 Docker Compose

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 介绍 Docker是一个很好的工具,但要真正充分利用它的潜力,最好是应用程序的每个组件都在它自己的容 ...

  3. 腾讯云yum安装mysql_腾讯云CentOS7.0使用yum安装mysql_MySQL

    背景: 今天才申请了腾讯云+校园计划的1元服务器,(http://www.qcloud.com/event/qcloudSchool)安装了Centos7.0,在安装mysql的时候,使用yum li ...

  4. docker 使用tar安装mysql_使用docker安装mysql服务

    转载:https://www.cnblogs.com/notejava/p/7124189.html 使用docker官方镜像安装mysql服务 1 拉取mysql镜像,采用网易加速地址 docker ...

  5. nas4free 安装mysql_[转]Docker学习之四:使用docker安装mysql

    Docker学习之一:注册Docker Hub账号 Docker学习之二:Docker基本简单操作命令 Docker学习之三:Docker在linux下简单安装使用 Docker学习之四:使用dock ...

  6. 17.04安装mysql_【17-04-11】 【求助】在线安装mysql时出现问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 [root@localhost 桌面]# yum list | grep mysql One of the configured repositories ...

  7. 笔记本安装centos7.6网络的配置_大学生需要安装哪些专业软件,又应该配置什么样的笔记本呢?...

    导读:新的学弟学妹们入学了,该谈恋爱的谈恋爱,但也别忘了学习!我们每个人都有自己的课程,那我们准备买电脑的话,应该怎么挑选呢?我的专业需要哪些软件?需要什么样的配置呢? 请看看过来人的经验吧! 我先把 ...

  8. 安装ug要java许可怎么弄_为什么安装ug许可证会失败?快速解决ug安装许可证会失败问题...

    为何ug 安装许可证失败?小编认为有以下几点一.首先确定你的电脑是否装有JAVA9.0.二.查看安装步骤是否正确?在安装许可证之前一定要先修改许可文件里的配置.三.确认电脑之前是否安装过UG的其它版本 ...

  9. 安装ug时提示java出错_为什么安装ug许可证会失败?快速解决ug安装许可证会失败问题...

    为何ug 安装许可证失败?小编认为有以下几点一.首先确定你的电脑是否装有JAVA9.0.二.查看安装步骤是否正确?在安装许可证之前一定要先修改许可文件里的配置.三.确认电脑之前是否安装过UG的其它版本 ...

  10. Docker Compose方式安装GitLab

    文章目录 用Docker Compose方式安装GitLab 前提条件 一键自动化以Docker Compose方式安装GitLab GitLab Docker Compose文件 安装和运行GitL ...

最新文章

  1. SASS 和 SCSS 的区别
  2. 集群环境下,你不得不注意的ASP.NET Core Data Protection 机制
  3. 红橙Darren视频笔记 RecyclerView基本使用
  4. ArcGis api配合vue开发入门系列(二)距离以及面积的测量
  5. 长时间使用s档有危害吗_空调长时间不清洗竟有这么多危害 你知道吗?
  6. MOSS Visual How To 系列
  7. Oracle数据库练习题及答案(个人总结)
  8. redis问题及答案
  9. 第三方接入-飞猪酒店商品发布流程
  10. reflections歌词翻译_Reflections歌词
  11. 第一种单击事件方法 onCreate 1、先在按钮中添加onCreate单击事件 android:onClick=wlj/ 2、再在主函数MainActivity中添加自定义方法
  12. 使用JS监听键盘按下事件
  13. 重庆php就业前景,重庆就业前景最好的十大专业是哪些_中职中专网
  14. 耦合式无线充电系统设计记录_3
  15. 童鞋想盗取我十几个G的“种子”,看我是用python来层层加锁!!!
  16. 1477_AURIX TC275 iLLD中看门狗密码获取接口分析
  17. nb移动udp_NB-IOT联网及模块UDP数据传输过程
  18. 华为校招前端开发一面
  19. 大学计算机课试题答案,大学计算机基础试题及答案课件.doc
  20. Java分割字符串、拼接字符串

热门文章

  1. 38译码器verilog代码_Verilog设计实例(2)一步一步实现一个多功能通用计数器
  2. easyui 隐藏input_Easyui-Datebox设置隐藏或者不可用如何解决
  3. mysql 全文所有_MySQL中的全文搜索
  4. python 操作psd_python psd
  5. MyBatis(七)------MyBatis映射器(resultMap元素)
  6. Objective-C中ORM的运用:实体对象和字典的相互自动转换
  7. Path.Combine 合并两个路径字符串,会出现的问题
  8. 第十五章笔记 虚拟机管理
  9. IPhone在横屏字体变大解决办法-webkit-text-size-adjust
  10. 1489 数据结构:矩阵鞍点