安装阿里的docker源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
安装系统需要的工具
yum install -y bind-utils net-tools wget unzip
yum install -y yum-utils device-mapper-persistent-data lvm2
1、下载zabbix-server的镜像。
docker pull zabbix/zabbix-server-mysql:centos-latest
2. 下载Zabbix web镜像,这里使用的是基于Nginx web服务器及支持MySQL数据库的Zabbix web接口zabbix/zabbix-web-nginx-mysql。这里是用的是latest版本,在linux终端使用
docker pull zabbix/zabbix-web-nginx-mysql:latest
3. 下载zabbix-java-gateway镜像, Zabbix本身不支持直接监控Java,而是使用zabbix-java-gateway监控jvm/tomcat性能。这里我们使用latest版本,在linux终端使用
docker pull zabbix/zabbix-java-gateway:latest
容器运行
4. 启动zabbix等镜像之前,需要先创建一个新的 Docker 网络。需要将后面的zabbix-server、mysql、web等容器都加入到此网络中,方便互相访问。在终端使用下面命令创建。
docker network create -d bridge zabbix_net
5. 运行mysql 镜像,创建mysql容器。
docker run -dit -p 3306:3306 --name zabbix-mysql --network zabbix_net --restart always -v /etc/localtime:/etc/localtime -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" mysql:5.7
说明:MYSQL_DATABASE="zabbix" 在msql中创建的数据库的名
MYSQL_USER="zabbix" 创建msql的登录账户名
MYSQL_PASSWORD="zabbix123" 设置创建msql的登录账户的密码
MYSQL_ROOT_PASSWORD="root123" 设置msql数据库root 的密码
其中-p 是将容器中的3306端口映射到服务器的3306端口,
--network zabbix_net是将容器加入到zabbix_net网络中,
-v /etc/localtime:/etc/localtime是同步服务器和容器内部的时区,
--restart always设置自启动,
-e MYSQL_DATABASE="zabbix",创建环境变量。
--name zabbix-mysql,给容器命名。
6. 运行zabbix-java-gateway镜像,创建zabbix-java-gateway容器。
docker run -v /etc/localtime:/etc/localtime -dit --restart=always --name=zabbix-java-gateway --network zabbix_net zabbix/zabbix-java-gateway:latest
7. 运行zabbix-server-mysql镜像,创建zabbix-server-mysql容器。此为zabbix主服务
首先创建数据卷zabbix-server-vol,通过命令
docker volume create zabbix-server-vol
启动zabbix-server-mysql容器。
此处的以下内容与 运行mysql 镜像,创建mysql容器设置的内容要一致
MYSQL_DATABASE="zabbix"
MYSQL_USER="zabbix"
MYSQL_PASSWORD="zabbix123"
MYSQL_ROOT_PASSWORD="root123"
docker run -dit -p 10051:10051 --mount source=zabbix-server-vol,target=/etc/zabbix -v /etc/localtime:/etc/localtime -v /usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts --name=zabbix-server-mysql --restart=always -e DB_SERVER_HOST="192.168.0.118" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" -e ZBX_JAVAGATEWAY="zabbix-java-gateway" zabbix/zabbix-server-mysql
docker run -dit -p 10051:10051 --mount source=zabbix-server-vol,target=/etc/zabbix -v /etc/localtime:/etc/localtime -v /usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts --name=zabbix-server-mysql --restart=always --network zabbix_net -e DB_SERVER_HOST="zabbix-mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" -e ZBX_JAVAGATEWAY="zabbix-java-gateway" zabbix/zabbix-server-mysql
--network zabbix_net
需要悉知各个配置
5. 运行zabbix-web-nginx-mysql镜像,创建zabbix-web-nginx-mysql容器。
此处的以下内容与 运行mysql 镜像,创建mysql容器设置的内容要一致
MYSQL_DATABASE="zabbix"
MYSQL_USER="zabbix"
MYSQL_PASSWORD="zabbix123"
MYSQL_ROOT_PASSWORD="root123"
docker run -dit -p 8080:8080 -v /etc/localtime:/etc/localtime --name zabbix-web-nginx-mysql --restart=always --network zabbix_net -e DB_SERVER_HOST="zabbix-mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" -e ZBX_SERVER_HOST="zabbix-server-mysql" zabbix/zabbix-web-nginx-mysql:latest
zabbix所需容器已经全部启动
6. 在浏览器中输入http://192.168.0.118:8080/zabbix/,打开zabbix首页,其中用户名密码分别是admin/zabbix。
出现下面页面,zabbix搭建成功。是不是比自己创建数据库,搭建zabbix-server简单很多。
2.docker-compose
1.创建挂载文件
mkdir -p /data/docker/mysql-data
mkdir -p /data/docker/zabbix
2.compose.yml文件
version: '3'
services:
zabbix_mysql:
container_name: "zabbix_mysql"
restart: "always"
image: mariadb
ports:
- "3306:3306"
volumes:
- /data/docker/mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: "mysqlpss123"
MYSQL_USER: "zabbix"
MYSQL_PASSWORD: "mysqlpss123"
MYSQL_DATABASE: "zabbix"
zabbix_server:
container_name: "zabbix_server"
restart: "always"
image: zabbix/zabbix-server-mysql
ports:
- "10051:10051"
volumes:
- /etc/localtime:/etc/localtime:ro
- /data/docker/zabbix:/usr/lib/zabbix
depends_on:
- zabbix_mysql
links:
- zabbix_mysql:mysql
environment:
DB_SERVER_HOST: "mysql"
MYSQL_USER: "zabbix"
MYSQL_DATABASE: "zabbix"
MYSQL_PASSWORD: "mysqlpss123"
zabbix_nginx_web:
container_name: "zabbix_nginx_web"
restart: "always"
image: zabbix/zabbix-web-nginx-mysql
ports:
- "8443:443"
- "80:8080"
depends_on:
- zabbix_mysql
- zabbix_server
links:
- zabbix_mysql:mysql
- zabbix_server:zabbix_server
environment:
DB_SERVER_HOST: "mysql"
MYSQL_USER: "zabbix"
MYSQL_PASSWORD: "mysqlpss123"
MYSQL_DATABASE: "zabbix"
ZBX_SERVER_HOST: "zabbix_server"
PHP_TZ: "Asia/Shanghai"
zabbix-agent-a:
image: zabbix/zabbix-agent
links:
- zabbix_server:zabbix_server
container_name: zabbix-agent-a
restart: always
depends_on:
- zabbix_server
environment:
- ZBX_HOSTNAME=zabbix-agent-a
- ZBX_SERVER_HOST=zabbix_server