作者:司陌笙
环境:阿里云 ECS / Alibaba Cloud Linux 3
标签:Docker、Zabbix、排错、阿里云、运维学习
一、项目背景
最近在学习 Docker 容器化部署,为了练手,我在 阿里云 ECS(Alibaba Cloud Linux 3) 上尝试用 Docker Compose 一键部署 Zabbix 监控系统。
由于我这台服务器上还跑着 WordPress 博客,所以在部署过程中踩了不少坑。
这篇文章把 从 0 到能监控 的全过程、报错原因和解决方案做了一个系统总结。
二、环境准备(避坑第一步)
1️⃣ 系统版本
cat /etc/os-release
确认是 Alibaba Cloud Linux 3
2️⃣ 安装 Docker & Docker Compose
⚠️ ALinux 3 的坑:
docker-compose(Python 版)已从默认仓库移除- 推荐使用 Docker Compose v2
dnf install -y docker
systemctl enable docker
systemctl start docker
验证:
docker compose version
3️⃣ 阿里云安全组放行端口
| 端口 | 用途 |
|---|---|
| 8080 | Zabbix Web |
| 10051 | Zabbix Server |
| 10050 | Zabbix Agent |
⚠️ 很多人卡在“页面打不开”,其实就是安全组没放行。
三、Docker 部署 Zabbix(核心架构)
1️⃣ 服务组成
| 服务 | 作用 |
|---|---|
| mysql | 存储监控数据 |
| zabbix-server | 核心服务端 |
| zabbix-web | Web 前端 |
| zabbix-agent | 被监控端 |
2️⃣ 关键配置(端口冲突解决方案)
由于 WordPress 已占用 80 端口,Zabbix Web 必须改端口:
ports:
- "8080:8080"
访问方式:
http://ECS公网IP:8080
四、踩坑实录 & 排错思路(重点)
坑 1:MySQL 版本不兼容
报错:
Unable to start Zabbix server due to unsupported MySQL database version (8.00.27).
原因:
- Zabbix 6.4 要求 MySQL ≥ 8.0.30
- 默认镜像版本过低
解决方案:
- 升级 MySQL 镜像
- 或配置
AllowUnsupportedDBVersions=1(测试环境)
坑 2:Zabbix Server 一直 Restarting
现象:
docker compose ps
# zabbix-server 状态为 Restarting
排查:
docker compose logs zabbix-server
根因:
- 数据库字符集不兼容
- MySQL 版本过低
坑 3:Agent 连接被拒(经典)
报错:
Received empty response from Zabbix Agent at [172.17.0.1].
Assuming that agent dropped connection because of access permissions.
原因(Docker 特有):
- Web 页面 Interface 填了
172.17.0.1 - Agent 只允许
zabbix-server或特定 Hostname
正确做法:
- Interface 填 Agent 容器真实 IP
- Hostname 在 Web 与 Agent 中保持一致
坑 4:Web 页面提示 “Zabbix server is not running”
原因:
- Server 容器未启动
- 数据库连不上
- Agent 未注册成功
五、关键排错命令(考试/面试常考)
# 查看容器状态
docker compose ps
# 查看日志
docker compose logs zabbix-server
# 查看端口占用
sudo ss -lntp | grep 80
# 查看 Docker 网络
docker network ls
六、最终成果
Zabbix Web 正常访问
成功监控本机
与 WordPress 和平共存

七、学习收获总结
通过这次实战,我掌握了:
- Docker Compose 基本用法
- Zabbix 架构(Agent / Server / DB / Web)
- 阿里云安全组配置
- 容器间网络通信原理
- 日志排错思路