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

一 部署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:
##容器1zabbix-web-nginx-mysql:
##镜像:从中拉取镜像image: zabbix/zabbix-web-nginx-mysql:centos-5.2-latestrestart: alwaysenvironment:- DB_SERVER_HOST=zabbix-mysql- MYSQL_DATABASE=zabbix- MYSQL_USER=zabbix- MYSQL_PASSWORD=zabbix- MYSQL_ROOT_PASSWORD=123qwe- ZBX_SERVER_HOST=zabbix-server-mysqlports:
##端口映射 主机:容器- 8080:8080volumes:- /etc/localtime:/etc/localtime- /data2/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttfnetworks:- zbx_netdepends_on:- zabbix-server-mysql- zabbix-mysql
##容器2zabbix-mysql:image: mysql:8.0.23restart: alwaysports:- 3306:3306environment:- 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_binvolumes:
##将容器中的数据或文件挂载到主机上,实现数据的持久化- /etc/localtime:/etc/localtime- /data2/zabbix/db:/var/lib/mysqlnetworks:- zbx_net
##容器3zabbix-java-gateway:image: zabbix/zabbix-java-gateway:centos-5.2-latestrestart: alwaysvolumes:- /etc/localtime:/etc/localtimenetworks:- zbx_net
##容器4zabbix-server-mysql:image: zabbix/zabbix-server-mysql:centos-5.2-latestrestart: alwaysvolumes:-  /data/zabbix/zabbix-server:/etc/zabbix- /data2/zabbix/alertscripts:/usr/lib/zabbix/alertscripts- /etc/localtime:/etc/localtimeports:- 10052:10051environment:- 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=10052depends_on:- zabbix-mysqlnetworks:- zbx_net
##容器5zabbix-agent:image: zabbix/zabbix-agent:centos-5.2-latestrestart: alwaysports:- 10050:10050environment:- ZBX_HOSTNAME=Zabbix server- ZBX_SERVER_HOST=zabbix-server-mysql- ZBX_SERVER_PORT=10051networks:- 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.hqwc.cn/news/479767.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字典树Trie 简介和相关例题分析

一.字典树定义 概念&#xff1a;字典树&#xff08;TrieTree&#xff09;&#xff0c;是一种树形结构&#xff0c;典型应用是用于统计&#xff0c;排序和保存大量的字符串&#xff08;但不仅限于字符串,如01字典树&#xff09;。主要思想是利用字符串的公共前缀来节约存储空间…

Java编程教程-使用5个步骤进行Java数据库连接

使用JDBC连接数据库时&#xff0c;有5个步骤。这些步骤如下&#xff1a; 注册驱动程序类 创建连接 创建语句 执行查询 关闭连接 1) 注册驱动程序类 使用Class类的forName()方法来注册驱动程序类。该方法用于动态加载驱动程序类。 forName()方法的语法如下&#xff1a; pub…

服务网格Service Mesh和Istio

文章目录 服务网格&#xff08;Service Mesh&#xff09;市场上三种服务网格解决方案服务网格的特征流量管理安全性可观察性 Istio简介Istio提供了什么功能服务 &#xff1f;Istio 核心特性流量管理安全可观察性 平台支持 服务网格&#xff08;Service Mesh&#xff09; 服务网…

层级关联,审批人功能

一个需求要求选择一级&#xff0c;下方展示一级的效果 后端给了审批人数据&#xff0c;但是数据需要单独处理 <template><div class"box"><el-form :model"ruleForm" :rules"rules" ref"ruleForm" label-width"…

网络基础:通信原理及网络协议

集线器&#xff1a;一个口收到的信号原封不动地转发给其他所有口&#xff0c;其他口上的设备自己决定是否接收信号。有点类似广播&#xff0c;但必广播更纯粹。由于hub只是单纯地转发&#xff0c;所以工作在物理层&#xff08;OSI第一层&#xff09; 类似于广播模式&#xff0c…

文件操作QFile

C中&#xff0c;QT的QFile 类是 Qt 框架中用于文件处理的一个类&#xff0c;它继承自 QIODevice。该类提供了一系列用于文件读写的功能&#xff0c;支持文本和二进制文件的处理。QFile 允许开发者方便地在本地文件系统中创建、读取、写入和操作文件。 主要功能 文件打开与关闭…

qwen1.5 chat vllm推理使用案例

参考:https://github.com/QwenLM/Qwen1.5 下载:https://huggingface.co/collections/Qwen/qwen15-65c0a2f577b1ecb76d786524 下载可以参考huggingface-cli 命令下载使用:https://blog.csdn.net/weixin_42357472/article/details/1326636931、vllm运行 显卡驱动:NVIDIA-S…

4.4 Verilog 语句块

关键词&#xff1a;顺序块&#xff0c;并行块&#xff0c;嵌套块&#xff0c;命名块&#xff0c;disable Verilog 语句块提供了将两条或更多条语句组成语法结构上相当于一条一句的机制。主要包括两种类型&#xff1a;顺序块和并行块。 顺序块 顺序块用关键字 begin 和 end 来…

【JVM篇】什么是运行时数据区

文章目录 &#x1f354;什么是运行时数据区⭐程序计数器⭐栈&#x1f50e;Java虚拟机栈&#x1f388;栈帧的内容 &#x1f50e;本地方法栈 ⭐堆⭐方法区 &#x1f354;什么是运行时数据区 运行时数据区指的是jvm所管理的内存区域&#xff0c;其中分为两大类 线程共享&#xf…

代码随想录|day 20

Day 20 一、思路 235. 二叉搜索树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; 秒&#xff0c;跟普通二叉树的区别在于 因为是有序树&#xff0c;所有 如果 中间节点是 q 和 p 的公共祖先&#xff0c;那么 中节点的数组 一定是在 [p, q]区间的。 701. 二叉搜索树…

【2024软件测试面试必会技能】Requests(3):模拟发送post请求

模拟发送post请求 发送post请求的基础知识dumps和loads 代码示例&#xff1a; # 发送post请求 import requests,json # 发送post请求的基础知识dumps和loads str_dict {name:xiaoming,age:20,sex:男} print(type(str_dict)) str1 json.dumps(str_dict) # 1,json.dumps 是把…

【k近邻】 K-Nearest Neighbors算法原理及流程

【k近邻】 K-Nearest Neighbors算法原理及流程 【k近邻】 K-Nearest Neighbors算法距离度量选择与数据维度归一化 k近邻算法&#xff08;K-Nearest Neighbors&#xff0c;简称KNN&#xff09;是一种常用的监督学习算法&#xff0c;可以用于分类和回归问题。在OpenCV中&#xff…