一、安装docker
在阿里云镜像站查看安装docker命令,链接:https://developer.aliyun.com/mirror/docker-ce?spm=a2c6h.13651102.0.0.57e31b11D68dpY
CentOS (使用 yum 进行安装)
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils
# Step 2: 添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Step 4: 开启Docker服务
sudo service docker start
# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
# 将[docker-ce-test]下方的enabled=0修改为enabled=1
Ubuntu(使用 apt-get 进行安装)
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
# step 2: 信任 Docker 的 GPG 公钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Step 3: 写入软件源信息
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Step 4: 安装Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
二、组件信息
组件名称 | 描述 | docer网络 | 容器IP地址 |
mysql8.0 | 数据库 | zabbix-net | 172.20.240.1 |
Zabbix Java Gateway | Java 网关接受来自 Zabbix server 或 Zabbix proxy 的传入连接,并且只能用作“被动代理”。 | zabbix-net | 172.20.240.2 |
zabbix-server-mysql | 支持 MySQL 数据库的 Zabbix 服务器 | zabbix-net | 172.20.240.3 |
zabbix-web-service | Zabbix Web 服务 | zabbix-net | 172.20.240.4 |
zabbix-agent | 采集数据插件 | host | 宿主机 |
三、拉取zabbix、mysql镜像
latest 基于 Alpine Linux 镜像的最新稳定版 Zabbix 组件。
1.拉取镜像
docker pull mysql:8.0.30
docker pull zabbix/zabbix-server-mysql:latest
docker pull zabbix/zabbix-java-gateway:latest
docker pull zabbix/zabbix-web-service:latest
docker pull zabbix/zabbix-agent:latest
2.创建docker卷
docker volume create -d local mysql_data
docker volume create -d local mysql_logs
docker volume create -d local mysql_conf
docker volume create -d local zabbix_server
docker volume create -d local zabbix_agent
注释:Docker 将在本地主机上创建这些卷 作为本地存储
3.创建docker网络
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
注释: Docker 网络中(如 zabbix-net
),并将相关容器都连接到这个网络,这些容器就能基于容器名直接进行通信,而无需知道彼此的 IP 地址
四、创建zabbix、mysql容器
1.创建mysql8.0容器
docker run --name mysql-server -t \ //指定容器名称
-v mysql_data:/var/lib/mysql \ //挂载数据卷
-v mysql_logs:/var/log/mysql \ //挂载数据卷
-v mysql_conf:/etc/mysql \ //挂载数据卷
-e MYSQL_DATABASE="zabbix" \ //环境变量_创建名为 zabbix 数据库
-e MYSQL_USER="zabbix" \ //环境变量_创建一个名为 zabbix 的 MySQL 用户
-e MYSQL_PASSWORD="password" \ //环境变量_将 zabbix 用户密码设置 指定值 password
-e MYSQL_ROOT_PASSWORD="password" \ //环境变量_将 root 用户密码设置 指定值 password
--network=zabbix-net \ //将容器网络连接到zabbix-net网络中
--ip 172.20.240.1 \ //设置静态IP地址
--restart=unless-stopped \ //设置重启策略-自动重启
-d -p 3306:3306 \ //宿主机端口 3306 映射到容器端口 3306
mysql:8.0.30 \ //使用的docker镜像
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=caching_sha2_password
2. 创建 zabbix java 网关容器
docker run --name zabbix-java-gateway -t \ //指定容器名称
--network=zabbix-net \ //将容器网络连接到zabbix-net网络中
--ip 172.20.240.2 \ //设置静态IP地址
--restart=unless-stopped \ //设置重启策略-自动重启
-d zabbix/zabbix-java-gateway:latest //使用的docker镜像
3.创建 zabbix server容器
docker run --name zabbix-server-mysql -t \ //指定容器名称
-v zabbix_server:/etc/zabbix \ //挂载数据卷
-e DB_SERVER_HOST="mysql-server" \ //环境变量_数据库服务器地址
-e MYSQL_DATABASE="zabbix" \ //环境变量_数据库名称
-e MYSQL_USER="zabbix" \ //环境变量_数据库用户名
-e MYSQL_PASSWORD="password" \ //环境变量_数据库密码
-e MYSQL_ROOT_PASSWORD="password" \ //环境变量_数据库root密码
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \ //环境变量_指定 zabbix java网关主机名
-p 10051:10051 \ //端口映射
--network=zabbix-net \ //将容器网络连接到zabbix-net网络中
--ip 172.20.240.3 \ //设置静态IP地址
--restart=unless-stopped \ //设置重启策略-自动重启
-d zabbix/zabbix-server-mysql:latest //使用的docker镜像
4.创建 Zabbix Web 容器(Nginx + PHP + MySQL)
docker run --name zabbix-web-nginx-mysql -t \ //指定容器名称
-e PHP_TZ="Asia/Shanghai" \ //环境变量_设置php时区
-e ZBX_SERVER_HOST="zabbix-server-mysql" \ //环境变量_zabbix服务器地址
-e DB_SERVER_HOST="mysql-server" \ //环境变量_数据库服务器地址
-e MYSQL_DATABASE="zabbix" \ //环境变量_数据库名称
-e MYSQL_USER="zabbix" \ //环境变量_数据库用户名
-e MYSQL_PASSWORD="password" \ //环境变量_数据库密码
-e MYSQL_ROOT_PASSWORD="password" \ //环境变量_数据库root密码
-p 80:8080 \ //端口映射
--network=zabbix-net \ //将容器网络连接到zabbix-net网络中
--ip 172.20.240.4 \ //设置静态IP地址
--restart=unless-stopped \ //设置重启策略-自动重启
-d zabbix/zabbix-web-nginx-mysql:latest //使用的docker镜像
5.创建 zabbix agent容器(根据自己需求来)
docker run --name zabbix-agent -t \ //指定容器名称
-v zabbix_agent:/etc/zabbix \ //挂载数据卷
-e ZBX_HOSTNAME="master" \ //环境变量_zabbix代理主机名
-e ZBX_SERVER_HOST="172.20.240.3" \ //环境变量_Zabbix 服务器的 IP 地址
-e ZBX_SERVER_PORT=10051 \ //环境变量_Zabbix 服务器监听的端口
-p 10050:10050 \ //端口映射
--network host \ //使用宿主机网络
--restart=unless-stopped \ //重启策略-自动重启
--privileged \ //让容器以守护进程模式在后台运行
-d zabbix/zabbix-agent:latest //使用的docker镜像
访问zabbix:宿主机IP地址:80
账号:Admin #注意A是大写
密码:zabbix
