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.mzph.cn/news/692079.shtml

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

相关文章

为什么程序员不能一次性写好,需要不停改bug?

写程序不是一次性完成的原因有很多&#xff0c;其中包括了解不充分、需求变更、复杂性、人为因素等多个方面的原因。 需求不明确&#xff1a; 在项目一开始&#xff0c;对需求可能存在歧义或不完整的理解。有时候&#xff0c;业务需求会在开发过程中发生变化&#xff0c;导致…

route命令学习总结

route命令学习总结 参考链接: 1、route指令使用详解 https://blog.csdn.net/justlpf/article/details/1290452842、route命令详解 https://www.kancloud.cn/chunyu/php_basic_knowledge/2106519 route命令用于显示和操作IP静态路由表。用于跨网段之间通信 route命令主要用于…

前端登录随机数字字母组合验证

背景&#xff1a;系统登录页面只有用户名密码一种校验方式&#xff0c;没有验证码&#xff0c;可能导致暴力破解。 实现逻辑&#xff1a; <el-form-item prop"code"><el-inputv-model"loginForm.captchaCode"auto-complete"off"placeho…

linux 测试网络速率

1. ethtool ethtool是很强大的查询网卡&#xff08;嵌入式称为phy芯片&#xff09;配置的工具&#xff0c;几乎phy芯片芯片手册寄存器能配置的选项&#xff0c;ethtool都能查询到&#xff1b;嵌入式调试phy芯片的时候经常用到该命令&#xff1b;最简单的指令如下 ethtool eth0…

函数——递归3(c++)

求10097……41的值 问题描述 求 10097 ⋯ 41 的值。 输入 无。 输出 输出一行&#xff0c;即求到的和。 #include <bits/stdc.h> using namespace std; int aaa(int,int,int); int main() {cout<<aaa(1,100,0);return 0; } int aaa(int i,int n,int sum) {if…

Pandas 合并DataFrame中一行的所有字符串

import pandas as pd df pd.DataFrame({ col1: [Hello, World, ], col2: [from, of, the], col3: [Pandas, Data, World], col4: [!, !, !] }) # 自定义一个函数来合并一行的所有字符串&#xff0c;接收一行数据作为输入 def merge_row_strings(row): # 使用join方…

YOLOV8改进系列指南

基于Ultralytics的YOLOV8改进项目.(69.9) 为了感谢各位对V8项目的支持,本项目的赠品是yolov5-PAGCP通道剪枝算法.具体使用教程 专栏改进汇总 二次创新系列 ultralytics/cfg/models/v8/yolov8-RevCol.yaml 使用(ICLR2023)Reversible Column Networks对yolov8主干进行重设计,里…

Go应用性能分析实战

Go很适合用来开发高性能网络应用&#xff0c;但仍然需要借助有效的工具进行性能分析&#xff0c;优化代码逻辑。本文介绍了如何通过go test benchmark和pprof进行性能分析&#xff0c;从而实现最优的代码效能。原文: Profiling Go Applications in the Right Way with Examples…

【Vuforia+Unity】AR03-圆柱体物体识别

1.创建数据库模型 这个是让我们把生活中类似圆柱体和圆锥体的物体进行AR识别所选择的模型 Bottom Diameter:底部直径 Top Diameter:顶部直径 Side Length:圆柱侧面长度 请注意&#xff0c;您不必上传所有三个部分的图片&#xff0c;但您需要先为侧面曲面关联一个图像&#…

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

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

Java后端底座从无到有的搭建(随笔)

文章目录 开发模式的演变草创时期1.0时期&#xff08;基座时期&#xff09;1.1时期&#xff08;低代码时期&#xff09;2.0时期&#xff08;无代码时期&#xff09; 前言&#xff1a;本文是笔者在初创公司&#xff0c;一年多来Java后端服务底座搭建过程的总结&#xff0c;如有不…

访问网站被限制

访问网站被限制是指在某些情况下&#xff0c;用户无法正常访问特定的网站或者网页。这种限制可能是由多种原因引起的&#xff0c;包括以下几个方面&#xff1a; 网络层面的限制&#xff1a;有些网站可能被网络服务提供商&#xff08;ISP&#xff09;或者网络管理员屏蔽&#xf…

四旋翼无人机控制-零散笔记整理

四旋翼无人机控制-零散笔记整理 说明仿真框架 说明 这是低创文章&#xff0c;本意是整理本科留下来的一堆零碎的纸质笔记&#xff0c;整理完就把纸质的扔了。所以前后不连贯&#xff0c;也可能有错误&#xff0c;图片都是直接拍的笔记照片&#xff0c;很丑。如果想系统学习的可…

【C++】STL- > string类(超详解!!!)

文章目录 前言1、string类的出现1.1 C语言中的字符串1.2 平时使用 2. 标准库中的string类2.1 string类的常用文档&#xff08;重要&#xff09;&#xff01;&#xff01;&#xff01;&#xff01;2.2 string类的常用接口说明(接口原型我这里就不展示了&#xff0c;文档中都有可…

前后端分离(delivery-management)部署文档

1. 前端项目:delivery-management 1.1. 前端项目打包 执行命令:npm run build 或者yarn run build,生成dist目录。 构建流程如下图: 1.2. 文件上传 将打包好的前端项目(dist目录),上传到服务器,并拷贝到nginx安装目录html目录下。 执行上传命令(sftp):put -r E:\…

展示用HTML编写的个人简历信息

展示用HTML编写的个人简历信息 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document…

MySQL中Binlog日志的使用

一、Binary Log介绍 MySQL 的二进制日志&#xff08;Binary Log&#xff09;是一种记录数据库更改操作的日志文件&#xff0c;它包含了所有对数据库执行的插入、更新、删除等操作的详细信息。二进制日志是 MySQL 数据库系统的核心组件之一&#xff0c;具有以下特点和作用&…

Go 语言一些常用语法编写和优化指南

Go 语言以其简洁的语法和强大的并发性能而受到开发者的喜爱。然而&#xff0c;为了充分利用 Go 的潜力&#xff0c;我们需要了解如何优化 Go 程序。本文将介绍一些常见的 Go 语言优化技巧&#xff0c;并通过实际例子进行说明。 ## 1. 利用 sync.Pool 减少内存分配 在 Go 中&a…

Windows 自带的 Linux 子系统(WSL)安装与使用

WSL官网安装教程&#xff1a; https://learn.microsoft.com/zh-cn/windows/wsl/install Windows 自带的Linux子系统&#xff0c;比用VM什么的香太多了。可以自己看官方教程&#xff0c;也可以以下步骤完成。 如果中间遇到我没遇到的问题百度&#xff0c;可以在评论区评论&#…

Redis(03)——发布订阅

基础命令 基于频道 publish channel message&#xff1a;将信号发送到指定的频道pubsub subcommand [argument [argyment]]&#xff1a;查看订阅或发布系统状态subscribe channel [channel]&#xff1a;订阅一个或多个频道的信息unsubscribe [channel [channel]]&#xff1a;退…