docker (十一)-进阶篇-docker-compos最佳实践部署zabbix

news2025/3/3 10:36:10

一 部署docker环境

关闭防火墙、selinux、开启docker,并设置开机自启动

注意点:docker部署的时候,bip要指定,不然会导致虚拟机ip和容器ip冲突,ssh连不上虚拟机

部署请参考   docker (二)-yum&二进制部署-CSDN博客

二 docker-compose的安装----github下载

curl -SL https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
 
##测试
docker-compose version

三 编写docker-compose.yml文件 

##yml文件,缩进表示层级关系
 
 
##指定版本号
version: '3'
 
##配置服务
services:
##容器1
  zabbix-web-nginx-mysql:
##镜像:从中拉取镜像
    image: zabbix/zabbix-web-nginx-mysql:centos-5.2-latest
    restart: always
    environment:
      - DB_SERVER_HOST=zabbix-mysql
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix
      - MYSQL_ROOT_PASSWORD=123qwe
      - ZBX_SERVER_HOST=zabbix-server-mysql
    ports:
##端口映射 主机:容器
      - 8080:8080
    volumes:
      - /etc/localtime:/etc/localtime
      - /data2/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf
    networks:
      - zbx_net
    depends_on:
      - zabbix-server-mysql
      - zabbix-mysql
##容器2
  zabbix-mysql:
    image: mysql:8.0.23
    restart: always
    ports:
      - 3306:3306
    environment:
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix
      - MYSQL_ROOT_PASSWORD=123qwe
##容器启动的默认命令
    command:
      - mysqld
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8
      - --collation-server=utf8_bin
    volumes:
##将容器中的数据或文件挂载到主机上,实现数据的持久化
      - /etc/localtime:/etc/localtime
      - /data2/zabbix/db:/var/lib/mysql
    networks:
      - zbx_net
##容器3
  zabbix-java-gateway:
    image: zabbix/zabbix-java-gateway:centos-5.2-latest
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime
    networks:
      - zbx_net
##容器4
  zabbix-server-mysql:
    image: zabbix/zabbix-server-mysql:centos-5.2-latest
    restart: always
    volumes:
      -  /data/zabbix/zabbix-server:/etc/zabbix
      - /data2/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
      - /etc/localtime:/etc/localtime
    ports:
      - 10052:10051
    environment:
      - DB_SERVER_HOST=zabbix-mysql
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix
      - MYSQL_ROOT_PASSWORD=123qwe
      - ZBX_JAVAGATEWAY=zabbix-java-gateway
      - ZBX_JAVAGATEWAY_ENABLE=true
      - ZBX_JAVAGATEWAYPORT=10052
    depends_on:
      - zabbix-mysql
    networks:
      - zbx_net
##容器5
  zabbix-agent:
    image: zabbix/zabbix-agent:centos-5.2-latest
    restart: always
    ports:
      - 10050:10050
    environment:
      - ZBX_HOSTNAME=Zabbix server
      - ZBX_SERVER_HOST=zabbix-server-mysql
      - ZBX_SERVER_PORT=10051
    networks:
      - zbx_net
 
##网络
networks:
##网络名
  zbx_net:
##指定驱动用于这个网络
    driver: bridge

创建相应映射目录
/data2/zabbix/zabbix-server                       用于存储 Zabbix 服务器容器的配置文件等相关数据
/data2/zabbix/alertscripts                           用于存储 Zabbix 服务器容器中的告警脚本
/data2/zabbix/fonts                                      用于存储 Zabbix Web 容器中的字体文件
/data2/zabbix/db                                          用于存储 MySQL 数据库容器的数据文件

中文简体文件添加
从主机(C:\Windows\Fonts)上传一个.ttf的字体文件到/data2/zabbix/fonts目录

可使用rz命令,或者ftp,或远程传输工具(如:xftp)

并将文件名称改成DejaVuSans.ttf(yml文件中有指明)

四 一键启动(注:在docker-compose.yml文件目录下启动)

 docker-compose up -d  # -d 后台运行

检验  在浏览器输入ip地址和映射的端口号(192.168.10.131:8080)即可到web界面,则安装完成 (Admin--zabbix)

五 出现报错

docker ps 看到 docker-zabbix-server-mysql-1 起来后就挂了,docker logs 查看日志发现

**** Configuration file '/etc/zabbix/zabbix_server.conf' does not exist
zabbix_server [7]: cannot open config file "/etc/zabbix/zabbix_server.conf": [2] No such file or directory

解决思路

  1. 确保主机上的 /data/zabbix/zabbix-server 目录中包含正确的 Zabbix Server 配置文件。

  2. 确保 Zabbix Server 容器具有正确的权限访问挂载的卷。你可以通过检查挂载点的权限来确保容器有权限访问挂载的卷。

  3. 如果配置文件位于主机上的其他位置,请确保在 docker-compose.yml 文件中正确指定了挂载的卷路径。

  4. 如果 Zabbix Server 镜像默认配置文件的路径不是 /etc/zabbix/zabbix_server.conf,你需要确保在容器内正确的路径上存在该配置文件,或者在容器启动时指定正确的配置文件路径

解决步骤 

1.将容器4中这行删掉,后直接docker-compose up -d

这样启动容器就没有报错,但是配置文件未持久化(若要持久化按以下步骤做) 

2.拷贝配置文件

mkdir -p /data/zabbix/zabbix-server
docker cp docker-zabbix-server-mysql-1:/etc/zabbix/zabbix_server.conf /data/zabbix/zabbix-server

3.再按照 三中的 docker-compose.yml 启动容器
启动后,没有报错

总结:使用volumes进行配置文件持久化,要保证宿主机的目录中包含对应的配置文件

六 docker-compose常用命令

以下是一些常用的 Docker Compose 相关命令:

1. docker-compose up

  • 启动 Docker Compose 定义的所有服务。
  • 如果需要构建镜像,它将会构建镜像。
  • 如果服务已经运行,则会尝试重新启动服务。

2. docker-compose down

  • 停止并删除所有 Docker Compose 定义的服务。
  • 如果指定 --volumes 参数,则还会删除相关的数据卷。

3. docker-compose build

  • 构建 Docker Compose 定义的所有服务的镜像。
  • 如果只需要构建特定服务的镜像,可以使用 docker-compose build <service_name>

4. docker-compose start

  • 启动 Docker Compose 定义的所有服务。
  • 如果服务已经启动,则不会执行任何操作。

5. docker-compose stop

  • 停止 Docker Compose 定义的所有服务。
  • 如果服务已经停止,则不会执行任何操作。

6. docker-compose restart

  • 重启 Docker Compose 定义的所有服务。
  • 如果服务未启动,则会启动服务。

7. docker-compose ps

  • 显示 Docker Compose 定义的所有服务的状态。
  • 包括服务名称、状态、端口映射等信息。

8. docker-compose logs

  • 显示 Docker Compose 定义的所有服务的日志输出。
  • 可以通过 -f 参数实时查看日志。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1459520.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【机器学习】数据清洗——基于Numpy库的方法删除重复点

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

Github 2024-02-16 开源项目日报 Top9

根据Github Trendings的统计&#xff0c;今日(2024-02-16统计)共有9个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目4TypeScript项目3Rust项目3Jupyter Notebook项目1JavaScript项目1 Black&#xff1a;不妥协的Pytho…

并发编程-ReentrantLock 与 ReentrantReadWriteLock(可重入锁,独享锁,公平与非公平锁,读写锁)

AQS实现原理 前期准备 AQS&#xff08;全称AbstractQueuedSynchronizer&#xff09;即队列同步器。它是构建锁或者其他同步组件的基础框架&#xff08;如ReentrantLock、ReentrantReadWriteLock、Semaphore等&#xff09;。 整体概览类图 AbstractQueuedSynchronizer类图 …

汽车控制器软件正向开发

需求常见问题: 1.系统需求没有分层,没有结构化,依赖关系不明确 2.需求中没有验证准则 3.对客户需求的追溯缺失,不完整,颗粒度不够 4.系统需求没有相应的系统架构,需求没有分解到硬件和软件 5.需求变更管控不严格,变更频繁,变更纪录描述不准确,有遗漏,客户需求多…

【MySQL】如何处理DB读写分离数据不一致问题?

文章内容 1、前言读写库数据不一致问题我们如何解决&#xff1f;方案一&#xff1a;利用数据库自身特性方案二&#xff1a;不解决方案三&#xff1a;客户端保存法方案四&#xff1a;缓存标记法方案五&#xff1a;本地缓存标记 那DB读写分离情况下&#xff0c;如何解决缓存和数据…

STM32F1X RS485使用DMA发送丢失数据的处理方法。

串口通过DMA发送一帧数据时总是缺少2个字节&#xff0c;且最后一个字节数据为0xff的原因及解决方法 本次记录为采用485串口发送数据&#xff0c;发送模式是循环检测串口数据寄存器为空&#xff08;TXE&#xff09;和发送完成标志位&#xff08;TC&#xff09;。DMA发送串口方式…

基于java,springboot和vue房屋租赁租房销售平台设计

摘要 在现代城市生活中&#xff0c;房屋租赁市场一直是一个活跃且复杂的领域。随着互联网技术的不断发展&#xff0c;基于Spring Boot和Vue的房屋租赁系统应运而生&#xff0c;旨在提供一个高效、方便、可靠的在线服务平台。该系统利用了前后端分离架构的优势&#xff0c;后端…

【嵌入式学习】QT-Day1-Qt基础

笔记 https://lingjun.life/wiki/EmbeddedNote/20QT 毛玻璃登录界面实现&#xff1a;

模式匹配这么好,Java语法里有吗?

这篇文章我们借助新版Java来理解模式匹配&#xff0c;Rust版的模式匹配稍后就端上来&#xff0c;各位先尝尝Java这杯老咖啡还香不香&#x1f604;。 什么是模式匹配&#xff1f; 下图直观的表达了模式匹配的概念。 所谓模式类似上图中木盒的各种形状的洞洞&#xff0c;我们…

UG NX二次开发(C#)-PMI-获取PMI尺寸数据

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、在UG NX的三维模型中添加PMI尺寸信息3、采用二次开发获取尺寸数据4、测试结果1、前言 PMI(Product and Manufacturing Information)是产品和制造信息的简称,主要用于将产品部件设计的…

工具分享:在线键盘测试工具

在数字化时代&#xff0c;键盘作为我们与计算机交互的重要媒介之一&#xff0c;其性能和稳定性直接影响到我们的工作效率和使用体验。为了确保键盘的每个按键都能正常工作&#xff0c;并帮助用户检测潜在的延迟、连点等问题&#xff0c;一款优质的在线键盘测试工具显得尤为重要…

智能运维乱象有哪些?智能运维业务包括哪些

在实施智能运维过程中可能遇到的乱象及其原因&#xff0c;系统地阐述智能运维业务所涵盖的各个方面&#xff0c;包括但不限于预防性维护、故障检测与诊断、自动化修复以及持续的性能优化等关键组成部分。 实施智能运维过程中可能遇到的乱象及原因包括&#xff1a; 数据不一致或…

Qt|大小端数据转换(补充)

Qt|大小端数据转换-CSDN博客 之前这篇文章大小端数据转换如果是小数就会有问题。 第一个方法&#xff1a; template <typename T> static QByteArray toData(const T &value, bool isLittle) {QByteArray data;for (int i 0; i < sizeof(T); i) {int bitOffset…

小米14 ULTRA:重新定义手机摄影的新篇章

引言 随着科技的飞速发展&#xff0c;智能手机已经不仅仅是一个通讯工具&#xff0c;它更是我们生活中的一位全能伙伴。作为科技领域的佼佼者&#xff0c;小米公司再次引领潮流&#xff0c;推出了全新旗舰手机——小米14 ULTRA。这款手机不仅在性能上进行了全面升级&am…

电脑文件msvcr110.dll缺失的多种解决方法,msvcr110.dll文件修复手段

遭遇"程序无法启动&#xff0c;因为电脑中缺失msvcr110.dll"这样的错误提示&#xff0c;是Windows操作系统用户可能会遇到的一种情况。尽管这种现象在一些用户中较为常见&#xff0c;但解决这一问题并非复杂的过程。本文将深入剖析此问题&#xff0c;并分享一些实用的…

2.16日学习打卡----初学Dubbo(一)

2.16日学习打卡 目录: 2.16日学习打卡一. 什么是分布式&#xff1f;二. 什么是RPC?三. Dubbo概念_简介四. Dubbo核心组件五.Dubbo配置开发环境六. Dubbo配置开发环境_管理控制台 一. 什么是分布式&#xff1f; 可以看我的这篇文章–2.14日学习打卡----初学Zookeeper(一) 二.…

【设计模式】23种设计模式笔记

设计模式分类 模板方法模式 核心就是设计一个部分抽象类。 这个类具有少量具体的方法&#xff0c;和大量抽象的方法&#xff0c;具体的方法是为外界提供服务的点&#xff0c;具体方法中定义了抽象方法的执行序列 装饰器模式 现在有一个对象A&#xff0c;希望A的a方法被修饰 …

Android挖取原图中心区域RectF(并框线标记)放大到ImageView宽高,Kotlin

Android挖取原图中心区域RectF(并框线标记)放大到ImageView宽高&#xff0c;Kotlin 红色线框区域即为选中的原图中心区域&#xff0c;放大后放到等宽高的ImageView里面。 import android.content.Context import android.graphics.Bitmap import android.graphics.BitmapFactor…

Mybatis | 初识Mybatis

初识Mybatis 目录: 初识Mybatis什么是Mybatis&#xff1f;Hibernate 和 MyBatis的区别&#xff1f;Mybatis的下载和使用Mybatis的工作原理 作者简介 &#xff1a;一只大皮卡丘&#xff0c;计算机专业学生&#xff0c;正在努力学习、努力敲代码中! 让我们一起继续努力学习&#…

牛客网 OR141 密码检查

答案&#xff1a; #include <stdio.h> #include <string.h> #include <ctype.h> int main() {int n 0;int count1 0, count2 0, count3 0;scanf("%d", &n);while (n--){char ch[100];scanf("%s", ch);int len strlen(ch);if (…