容器部署 Zabbix 5
用 Docker 容器拉起 Zabbix 5.0(MySQL + Server + Web + Java Gateway)。
官方容器说明(版本页可能较旧,方法与 Compose 思路仍可参考):
https://www.zabbix.com/documentation/3.4/zh/manual/installation/containers
环境
| 项目 | 说明 |
|---|---|
| 操作系统 | CentOS Linux release 7.6.1810 (Core) |
| Docker | 1.13.1 |
| Zabbix 镜像 | 5.0.26-centos |
| 数据库 | mysql:5.7 |
| 默认登录 | Admin / zabbix(界面显示可能为 Admin) |
相关概念
| 概念 | 一句话 |
|---|---|
| zabbix-server-mysql | 接 MySQL 的 Zabbix Server 容器。 |
| zabbix-web-nginx-mysql | Nginx + PHP 前端,连同一套库与 Server。 |
| zabbix-java-gateway | Java Gateway,用于 JVM / JMX 类监控。 |
--link |
旧版容器互联方式;有启动顺序依赖,现多改用自定义网络。 |
| 10051 / 8080 | Server 与 Web 容器内常用端口(映射按需调整)。 |
1. 拉取镜像
docker pull mysql:5.7
docker pull zabbix/zabbix-java-gateway:5.0.26-centos
docker pull zabbix/zabbix-server-mysql:5.0.26-centos
docker pull zabbix/zabbix-web-nginx-mysql:5.0.26-centos
2. 按顺序启动容器
使用
--link时:必须先启动被 link 的容器,再启动依赖方,否则会报错。
下文密码仅为笔记示例,生产请更换。
2.1 启动 MySQL
docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="igozhang.cn" \
-e MYSQL_ROOT_PASSWORD="igozhang.cn" \
-v /etc/localtime:/etc/localtime \
-d mysql:5.7 \
--character-set-server=utf8 \
--collation-server=utf8_bin
2.2 启动 Zabbix Java Gateway(JVM 监控)
docker run --name zabbix-java-gateway -t \
-v /etc/localtime:/etc/localtime \
-d zabbix/zabbix-java-gateway:5.0.26-centos
2.3 启动 Zabbix Server(link MySQL 与 Java Gateway)
docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="igozhang.cn" \
-e MYSQL_ROOT_PASSWORD="igozhang.cn" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--link mysql-server:mysql \
--link zabbix-java-gateway:zabbix-java-gateway \
-p 10051:10051 \
-v /etc/localtime:/etc/localtime \
-d zabbix/zabbix-server-mysql:5.0.26-centos
2.4 启动 Zabbix Web(link MySQL 与 Server)
docker run --name zabbix-web-nginx-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="igozhang.cn" \
-e MYSQL_ROOT_PASSWORD="igozhang.cn" \
--link mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-p 80:8080 \
-v /etc/localtime:/etc/localtime \
-d zabbix/zabbix-web-nginx-mysql:5.0.26-centos
3. 访问
浏览器打开(按宿主机 IP):
http://<宿主机IP>/
端口映射:80 → 8080(容器内 Web 监听 8080)。
| 项 | 值 |
|---|---|
| 用户名 | Admin(或界面显示的 admin) |
| 密码 | zabbix |
登录后请立即修改默认密码。
4. 启动顺序与端口
mysql-server
→ zabbix-java-gateway
→ zabbix-server-mysql(link 上两者,映射 10051)
→ zabbix-web-nginx-mysql(link DB + Server,映射 80:8080)
| 容器 | 宿主机端口 |
|---|---|
| zabbix-server-mysql | 10051 |
| zabbix-web-nginx-mysql | 80 |
常用查看命令:
docker ps
docker logs -f zabbix-server-mysql
docker logs -f zabbix-web-nginx-mysql
5. 补充:少用 --link 的写法(可选)
自定义网络可避免 link 的强顺序别名问题(名称解析靠 DNS):
docker network create zabbix-net
docker run --name mysql-server --network zabbix-net ...(同上环境变量)
docker run --name zabbix-java-gateway --network zabbix-net ...
docker run --name zabbix-server-mysql --network zabbix-net \
-e DB_SERVER_HOST=mysql-server \
-e ZBX_JAVAGATEWAY=zabbix-java-gateway \
-p 10051:10051 ...
docker run --name zabbix-web-nginx-mysql --network zabbix-net \
-e DB_SERVER_HOST=mysql-server \
-e ZBX_SERVER_HOST=zabbix-server-mysql \
-p 80:8080 ...
更省事可用官方/自建 docker-compose(参见《zabbix4部署》中的 Compose 思路,镜像改为 5.0.26-centos)。
注意
- 首次启动 Server 会对库做初始化,需等 MySQL 就绪;失败时看
docker logs。 --link已不推荐,新环境优先 network 或 compose。- 文档链接指向 3.4 中文容器页,原理通用;镜像请继续使用本文的 5.0.26 标签。
- 不需要 JMX 时可省略 Java Gateway,并去掉 Server 的
ZBX_JAVAGATEWAY与对应 link。