6 从容器中安装
概述
本节描述如何使用 Docker or Docker Compose部署 Zabbix。
Zabbix 官方提供:
- 每个 Zabbix 组件的独立 Docker 镜像,可以作为便携且自给自足的容器运行。
- 用于定义和运行多容器 Zabbix 组件的 Compose 文件。
自 Zabbix 6.0 起,安装过程中需要创建确定性触发器。如果为 MySQL/MariaDB 启用了二进制日志记录,则需要超级用户权限或设置变量/配置参数 _log_bin_trust_functioncreators = 1。有关如何设置变量的说明,请参见 数据库创建脚本 。
注意,如果从控制台执行,变量将仅临时设置,并在 Docker 重新启动时被删除。在这种情况下,请保持 SQL 服务运行,只需通过运行 'docker compose down zabbix-server' 然后 'docker compose up -d zabbix-server' 停止 zabbix-server 服务。
或者,您可以在配置文件中设置此变量。
Docker file 源
任何人都可以使用位于 github.com 上的 官方仓库 来追踪 Docker file 的变化。 您可以 fork 项目,或根据官方 Docker file 制作自己的 image。
Docker
Zabbix 提供基于各种操作系统基础镜像的镜像。要获取特定 Zabbix 组件支持的基础操作系统镜像列表,请参见 Docker Hub 中该组件的描述。所有 Zabbix 镜像都配置为在基础镜像更新时重新构建最新镜像。
安装
要获取 Zabbix 组件镜像,运行:
docker pull zabbix/zabbix-server-mysql
将 zabbix/zabbix-server-mysql 替换为所需的 Docker 仓库名称。
此命令将基于 Alpine Linux 操作系统拉取最新的稳定 Zabbix 组件版本。您可以在仓库名称后附加 标签 以获取基于其他操作系统或特定 Zabbix 主版本或次版本的镜像。
以下仓库在 Docker Hub 中可用:
| 组件 | Docker 仓库 | |
|---|---|---|
| Zabbix agent | zabbix/zabbix-agent | |
| Zabbix server | ||
| 支持 MySQL | zabbix/zabbix-server-mysql | |
| 支持 PostgreSQL | zabbix/zabbix-server-pgsql | |
| Zabbix Web 界面 | ||
| 基于 Apache2 Web 服务器,支持 MySQL | zabbix/zabbix-web-apache-mysql | |
| 基于 Apache2 Web 服务器,支持 PostgreSQL | zabbix/zabbix-web-apache-pgsql | |
| 基于 Nginx Web 服务器,支持 MySQL | zabbix/zabbix-web-nginx-mysql | |
| 基于 Nginx Web 服务器,支持 PostgreSQL | zabbix/zabbix-web-nginx-pgsql | |
| Zabbix proxy | ||
| 支持 SQLite3 | zabbix/zabbix-proxy-sqlite3 | |
| 支持 MySQL | zabbix/zabbix-proxy-mysql | |
| Zabbix Java 网关 | zabbix/zabbix-java-gateway | |
SNMP 陷阱支持在单独的仓库 zabbix/zabbix-snmptraps 中提供。它可以与 Zabbix server 和 Zabbix proxy 链接。
标签
官方 Zabbix 组件镜像可能包含以下标签:
| 标签 | 描述 | 示例 |
|---|---|---|
| latest | 基于 Alpine Linux 镜像的最新稳定版 Zabbix 组件。 | zabbix-agent:latest |
| <OS>-trunk | 当前正在开发的 Zabbix 版本在特定操作系统上的最新夜间构建。 <OS> - 基础操作系统。支持的值: alpine - Alpine Linux; ltsc2019 - Windows 10 LTSC 2019(仅限 agent); ol - Oracle Linux; ltsc2022 - Windows 11 LTSC 2022(仅限 agent); ubuntu - Ubuntu |
zabbix-agent:ubuntu-trunk |
| <OS>-latest | 特定操作系统上的最新稳定版 Zabbix 组件。 <OS> - 基础操作系统。支持的值: alpine - Alpine Linux; ltsc2019 - Windows 10 LTSC 2019(仅限 agent); ol - Oracle Linux; ltsc2022 - Windows 11 LTSC 2022(仅限 agent); ubuntu - Ubuntu |
zabbix-agent:ol-latest |
| <OS>-X.X-latest | 特定主要版本和操作系统的最新次要版本的 Zabbix 组件。 <OS> - 基础操作系统。支持的值: alpine - Alpine Linux; ltsc2019 - Windows 10 LTSC 2019(仅限 agent); ol - Oracle Linux; ltsc2022 - Windows 11 LTSC 2022(仅限 agent); ubuntu - Ubuntu X.X - Zabbix 主要版本(如 6.0,7.0,7.2)。 |
zabbix-agent:alpine-7.0-latest |
| <OS>-X.X.* | 特定主要版本和操作系统的最新次要版本的 Zabbix 组件。 <OS> - 基础操作系统。支持的值: alpine - Alpine Linux; ltsc2019 - Windows 10 LTSC 2019(仅限 agent); ol - Oracle Linux; ltsc2022 - Windows 11 LTSC 2022(仅限 agent); ubuntu - Ubuntu X.X - Zabbix 主要版本(如 6.0,7.0,7.2)。 * - Zabbix 次要版本 |
zabbix-agent:alpine-7.0.1 |
Docker Compose
Zabbix 还提供了用于在 Docker 中定义和运行多容器 Zabbix 组件的 compose 文件。 这些 compose 文件可以在 github.com: https://github.com/zabbix/zabbix-docker 上的 Zabbix docker 官方仓库中找到。这些 compose 文件作为示例添加,并支持广泛。例如,Zabbix proxy 支持 MySQL和 SQLite3。
以下为几个不同版本的 compose 文件:
| 文件名 | 描述 |
docker-compose_v3_alpine_mysql_latest.yaml |
该 compose 文件运行基于 Alpine Linux 的 Zabbix 5.4 最新版本的组件,支持 MySQL 数据库。 |
docker-compose_v3_alpine_mysql_local.yaml |
该 compose 文件本地构建和运行基于 Alpine Linux 的 Zabbix 5.4 最新版本的组件,支持 MySQL数据库。 |
docker-compose_v3_alpine_pgsql_latest.yaml |
该 compose 文件运行基于 Alpine Linux 的 Zabbix 5.4 最新版本的组件,支持 PostgreSQL 数据库。 |
docker-compose_v3_alpine_pgsql_local.yaml |
该 compose 文件本地构建和运行基于 Apline Linux 的 Zabbix 5.4 最新版本的组件,支持 PostgreSQL 数据库。 |
docker-compose_v3_centos_mysql_latest.yaml |
该 compose 文件运行基于 CentOS 8 的 Zabbix 5.4 最新版本的组件,支持 MySQL 数据库。 |
docker-compose_v3_centos_mysql_local.yaml |
该 compose 文件本地构建和运行基于 CentOS 8 的 Zabbix 5.4 最新版本的组件,支持 MySQL 数据库。 |
docker-compose_v3_centos_pgsql_latest.yaml |
该 compose 文件运行基于 CentOS 8 的 Zabbix 5.4 最新版本的组件,支持 PostgreSQL 数据库。 |
docker-compose_v3_centos_pgsql_local.yaml |
该 compose 文件本地构建和运行基于 CentOS 8 的 Zabbix 5.4 最新版本的组件,支持 PostgreSQL 数据库。 |
docker-compose_v3_ubuntu_mysql_latest.yaml |
该 compose 文件运行基于 Ubuntu 20.04 的 Zabbix 5.4 最新版本的组件,支持 MySQL 数据库。 |
docker-compose_v3_ubuntu_mysql_local.yaml |
该 compose 文件本地构建和运行基于 Ubuntu 20.04 的 Zabbix 5.4 最新版本的组件,支持 MySQL 数据库。 |
docker-compose_v3_ubuntu_pgsql_latest.yaml |
该 compose 文件运行基于 Ubuntu 20.04 的 Zabbix 5.4 最新版本的组件,支持 PostgreSQL 数据库。 |
docker-compose_v3_ubuntu_pgsql_local.yaml |
该 compose 文件本地构建和运行基于 Ubuntu 20.04 的 Zabbix 5.4 最新版本的组件,支持 PosegreSQL 数据库。 |
Docker compose 文件支持 Docker Compose 3 版本。
环境变量
所有 Zabbix 组件 image 都提供环境变量来控制配置。 这些环境变量在每个组件 image 仓库中列出。这些环境变量是 Zabbix 配置文件中的选项,但具有不同的命名方法。 例如,ZBX_LOGSLOWQUERIES 等于来自 Zabbix server 和 Zabbix proxy 配置文件的 LogSlowQueries。
一些配置选项是不允许更改的。例如,PIDFile和 LogType。
其中,一些组件有特定的环境变量,而这些环境变量在官方 Zabbix 配置文件并不存在:
| 变量 | 组件 | 描述 |
DB_SERVER_HOST |
Server Proxy Web 界面 |
这个变量指的是 MySQL 或 PostgreSQL 的 IP 或 DNS。 默认情况下,这个值根据 MySQL 和 PostgreSQL,分别为mysql-server 或 postgres-server |
DB_SERVER_PORT |
Server Proxy Web 界面 |
这个变量指的是 MySQL 或 PostgreSQL 的端口。 默认情况下,这个值根据 MySQL 和 PostgreSQL,分别为 '3306' 或 '5432' 。 |
MYSQL_USER |
Server Proxy Web 界面 |
MySQL 数据库用户。 默认情况下,这个值为 'zabbix'。 |
MYSQL_PASSWORD |
Server Proxy Web 界面 |
MySQL 数据库密码。 默认情况下,这个值为 'zabbix'。 |
MYSQL_DATABASE |
Server Proxy Web 界面 |
Zabbix 数据库库名。 默认情况下,这个值根据 Zabbix server 和 Zabbix proxy,分别为 'zabbix' 和 'zabbix_proxy' 。 |
POSTGRES_USER |
Server Web 界面 |
PostgreSQL 数据库用户。 默认情况下,这个值为 'zabbix'。 |
POSTGRES_PASSWORD |
Server Web 界面 |
PostgreSQL 数据库密码。 默认情况下,这个值为 'zabbix'。 |
POSTGRES_DB |
Server Web 界面 |
Zabbix 数据库库名。 默认情况下,这个值根据 Zabbix server 和 Zabbix proxy,分别为 'zabbix' 和 'zabbix_proxy' 。 |
PHP_TZ |
Web 界面 | PHP 时区格式。支持时区的完整列表参照 php.net。 默认情况下,这个值为 'Europe/Riga' 。 |
ZBX_SERVER_NAME |
Web 界面 | Web 界面右上角显示的安装名称。 默认情况下,这个值为 'Zabbix Docker' 。 |
ZBX_JAVAGATEWAY_ENABLE |
Server Proxy |
是否启用 Zabbix Java 网关 以采集与 Java 相关的检查数据。 默认情况下,这个值为 "false" 。 |
ZBX_ENABLE_SNMP_TRAPS |
Server Proxy |
是否启用 SNMP trap 功能。 这需要存在 zabbix-snmptraps 容器实例,并共享 /var/lib/zabbix/snmptraps volume 到 Zabbix server 或 proxy。 |
Volumes
Image 中允许使用一些挂载点。根据 Zabbix 组件类型,这些挂载点各不相同:
| Volume | 描述 |
| Zabbix agent | |
| /etc/zabbix/zabbix_agentd.d | 这个 volume 允许包含 *.conf 文件并使用 UserParameter 扩展 Zabbix agent。 |
| /var/lib/zabbix/modules | 这个 volume 允许加载其它 module 并使用 LoadModule 功能扩展 Zabbix agent。 |
| /var/lib/zabbix/enc | 这个 volume 用于存放 TLS 相关的文件。这些文件名使用 ZBX_TLSCAFILE, ZBX_TLSCRLFILE, ZBX_TLSKEY_FILE ,ZBX_TLSPSKFILE 等环境变量指定。 |
| Zabbix server | |
| /usr/lib/zabbix/alertscripts | 这个 volume 用于自定义告警脚本。即 zabbix_server.conf 中的 AlertScriptsPath 参数。 |
| /usr/lib/zabbix/externalscripts | 这个 volume 用于 外部检查。即 zabbix_server.conf 中的 ExternalScripts 参数。 |
| /var/lib/zabbix/modules | 这个 volume 允许通过 LoadModule 功能加载额外的模块以扩展 Zabbix server。 |
| /var/lib/zabbix/enc | 这个 volume 用于存放 TLS 相关的文件。这些文件名使用 ZBX_TLSCAFILE, ZBX_TLSCRLFILE, ZBX_TLSKEY_FILE ,ZBX_TLSPSKFILE 等环境变量指定。 |
| /var/lib/zabbix/ssl/certs | 这个 volume 用于存放客户端认证的 SSL 客户端认证文件。即 [zabbix_server.conf] 中的 SSLCertLocation 参数。 |
| /var/lib/zabbix/ssl/keys | 这个 volume 用于存放客户端认证的 SSL 私钥文件。即 zabbix_server.conf 中的 SSLKeyLocation 参数。 |
| /var/lib/zabbix/ssl/ssl_ca | 这个 volume 用于存放 SSL 服务器证书认证的证书颁发机构(CA)文件。即 zabbix_server.conf 中的 SSLCALocation 参数。 |
| /var/lib/zabbix/snmptraps | 这个 volume 用于存放 snmptraps.log 文件。它可由 zabbix-snmptraps 容器共享,并在创建 Zabbix server 新实例时使用 Docker 的 --volumes-from 选项继承。可以通过共享 volume ,并将 ZBX_ENABLE_SNMP_TRAPS 环境变量切换为 'true' 以启用 SNMP trap 处理功能。 |
| /var/lib/zabbix/mibs | 这个 volume 允许添加新的 MIB 文件。它不支持子目录,所有的 MIB 文件必须位于 /var/lib/zabbix/mibs 下。 |
| Zabbix proxy | |
| /usr/lib/zabbix/externalscripts | 这个 volume 用于 外部检查。即 zabbix_proxy.conf 中的 ExternalScripts 参数。 |
| /var/lib/zabbix/modules | 这个 volume 允许通过 LoadModule 功能加载额外的模块以扩展 Zabbix server。 |
| /var/lib/zabbix/enc | 这个 volume 用于存放 TLS 相关的文件。这些文件名使用 ZBX_TLSCAFILE, ZBX_TLSCRLFILE, ZBX_TLSKEY_FILE ,ZBX_TLSPSKFILE 等环境变量指定。 |
| /var/lib/zabbix/ssl/certs | 这个 volume 用于存放客户端认证的 SSL 客户端认证文件。即 zabbix_proxy.conf 中的 SSLCertLocation 参数。 |
| /var/lib/zabbix/ssl/keys | 这个 volume 用于存放客户端认证的 SSL 私钥文件。即 zabbix_proxy.conf 中的 SSLKeyLocation 参数。 |
| /var/lib/zabbix/ssl/ssl_ca | 这个 volume 用于存放 SSL 服务器证书认证的证书颁发机构(CA)文件。即zabbix_proxy.conf 中的 SSLCALocation 参数。 |
| /var/lib/zabbix/snmptraps | 这个 volume 用于存放 snmptraps.log 文件。它可由 zabbix-snmptraps 容器共享,并在创建 Zabbix server 新实例时使用 Docker 的 --volumes-from 选项继承。可以通过共享 volume ,并将 ZBX_ENABLE_SNMP_TRAPS 环境变量切换为 'true' 以启用 SNMP trap 处理功能。 |
| /var/lib/zabbix/mibs | 这个 volume 允许添加新的 MIB 文件。它不支持子目录,所有的 MIB 文件必须位于 /var/lib/zabbix/mibs 下。 |
| 基于 Apache2 web 服务器的 Zabbix web 界面 | |
| /etc/ssl/apache2 | 这个 volume 允许为 Zabbix Web 界面启用 HTTPS。这个 volume 必须包含为 Apache2 SSL 连接准备的 ssl.crt 和 ssl.key 两个文件。 |
| 基于 Nginx web 服务器的 Zabbix web 界面 | |
| /etc/ssl/nginx | 这个 volume 允许为 Zabbix Web 接口启用 HTTPS。这个 volume 必须包含为 Nginx SSL 连接装备的 ssl.crt 和 ssl.key 两个文件。 |
| Zabbix snmptraps | |
| /var/lib/zabbix/snmptraps | 这个 volume 包含了已接收到的 SNMP traps 命名的 snmptraps.log日志文件。 |
| /var/lib/zabbix/mibs | 这个 volume 允许添加新的 MIB 文件。它不支持子目录,所有的 MIB 文件必须位于 /var/lib/zabbix/mibs 下。 |
关于更多的信息请在 Docker Hub 的 Zabbix 官方仓库查看。
Makefile
The Zabbix Dockerfiles repository also provides a Makefile as a shortcut for common Docker Compose tasks.
Instead of using the full docker compose command, you can use shorter make commands (run make help to see the available options):
# Default deployment (Zabbix server, web interface, MySQL, all on Alpine Linux)
make up
# Custom deployment (Zabbix server, web interface with custom Nginx ports, PostgreSQL, all on Ubuntu)
make up \
OS=ubuntu \
DB=pgsql \
ZABBIX_WEB_NGINX_HTTP_PORT=8282 \
ZABBIX_WEB_NGINX_HTTPS_PORT=8443
When stopping or removing containers, always specify the same database type that was deployed (e.g., make down DB=pgsql).
By default, make up starts only a minimal set of services (Zabbix server, web interface, and database).
This keeps the setup lightweight and avoids starting components that may not be needed.
To include additional components, you can use the following Compose profiles:
# Default deployment + Zabbix agent, Java gateway, web service, and SNMP traps:
make up COMPOSE_PROFILES=full
# COMPOSE_PROFILES=full + Zabbix proxy (MySQL and SQLite3):
make up COMPOSE_PROFILES=all
初始配置
下载镜像后,通过执行 docker run 命令并附加额外参数来指定所需的 环境变量 和/或 挂载点 来启动容器。下面提供了一些 配置示例。
Zabbix不能作为PID1/init进程在容器中运行。
为了启用 Zabbix 组件之间的通信,一些端口,例如 Zabbix server (trapper) 的 10051/TCP、Zabbix agent 的 10050/TCP、SNMP 陷阱的 162/UDP 和 Zabbix Web 界面的 80/TCP,将会暴露给主机。Zabbix 组件使用的默认端口的完整列表可在 要求 页面查看。对于 Zabbix server 和agent,可以通过设置 ZBX_LISTENPORT 环境变量 来更改默认端口。
使用示例
示例 1
该示例示范了如何运行 MySQL 数据库支持的 Zabbix Server 、基于 Nginx Web 服务器的 Zabbix Web 界面和 Zabbix Java 网关。
1. 创建专用于 Zabbix 组件容器的网络:
# docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
2. 启动空的 MySQL 服务器实例:
# docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--network=zabbix-net \
-d mysql:8.0 \
--restart unless-stopped \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
3. 启动 Zabbix Java 网关实例:
# docker run --name zabbix-java-gateway -t \
--network=zabbix-net \
--restart unless-stopped \
-d zabbix/zabbix-java-gateway:alpine-5.4-latest
4. 启动 Zabbix server 实例,并将其关联到已创建的 MySQL server 实例:
# docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--network=zabbix-net \
-p 10051:10051 \
--restart unless-stopped \
-d zabbix/zabbix-server-mysql:alpine-5.4-latest
Zabbix server 实例将 10051/TCP 端口(Zabbix trapper)暴露给主机。
5. 启动 Zabbix Web 界面,并将其关联到已创建的 MySQL server 和 Zabbix server 实例:
# docker run --name zabbix-web-nginx-mysql -t \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--network=zabbix-net \
-p 80:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:alpine-5.4-latest
Zabbix web 界面实例将 80/TCP 端口(HTTP)暴露给主机。
示例 2
该示例示范了如何运行 PostgreSQL 数据库支持的 Zabbix server、基于 Nginx Web 服务器的 Zabbix Web 界面和 SNMP trap功能。
1. 创建专用于 Zabbix 组件容器的网络:
# docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
2. 启动空的 PostgreSQL server 实例:
# docker run --name postgres-server -t \
-e POSTGRES_USER="zabbix" \
-e POSTGRES_PASSWORD="zabbix_pwd" \
-e POSTGRES_DB="zabbix" \
--network=zabbix-net \
--restart unless-stopped \
-d postgres:latest
3. 启动 Zabbix snmptraps 实例:
# docker run --name zabbix-snmptraps -t \
-v /zbx_instance/snmptraps:/var/lib/zabbix/snmptraps:rw \
-v /var/lib/zabbix/mibs:/usr/share/snmp/mibs:ro \
--network=zabbix-net \
-p 162:1162/udp \
--restart unless-stopped \
-d zabbix/zabbix-snmptraps:alpine-5.4-latest
Zabbix snmptrap 实例将 162/UDP 端口(SNMP traps)暴露给主机。
4. 启动 Zabbix server 实例,并将其关联到已创建的 PostgreSQL server 实例:
# docker run --name zabbix-server-pgsql -t \
-e DB_SERVER_HOST="postgres-server" \
-e POSTGRES_USER="zabbix" \
-e POSTGRES_PASSWORD="zabbix_pwd" \
-e POSTGRES_DB="zabbix" \
-e ZBX_ENABLE_SNMP_TRAPS="true" \
--network=zabbix-net \
-p 10051:10051 \
--volumes-from zabbix-snmptraps \
--restart unless-stopped \
-d zabbix/zabbix-server-pgsql:alpine-5.4-latest
Zabbix server 实例将 10051/TCP 端口(Zabbix trapper)暴露给主机。
5. 启动 Zabbix Web 界面,并将其关联到已创建的 PostgreSQL server 和 Zabbix server 实例:
# docker run --name zabbix-web-nginx-pgsql -t \
-e ZBX_SERVER_HOST="zabbix-server-pgsql" \
-e DB_SERVER_HOST="postgres-server" \
-e POSTGRES_USER="zabbix" \
-e POSTGRES_PASSWORD="zabbix_pwd" \
-e POSTGRES_DB="zabbix" \
--network=zabbix-net \
-p 443:8443 \
-p 80:8080 \
-v /etc/ssl/nginx:/etc/ssl/nginx:ro \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-pgsql:alpine-5.4-latest
Zabbix web 界面实例将 443/TCP 端口(HTTPS)暴露给主机。
/etc/ssl/nginx 目录必须包含具有所需名称的证书。
示例 3
该示例示范了如何在Red Hat 8上使用 podman 运行 MySQL 数据库支持的 Zabbix Server 、基于 Nginx Web 服务器的 Zabbix Web 界面和 Zabbix Java 网关。
1. 创建一个名为 zabbix 的 pod 并暴露端口 (web 界面、Zabbix server trapper):
podman pod create --name zabbix -p 80:8080 -p 10051:10051
2. (可选)在 zabbix pod 中启动 Zabbix agent 容器:
podman run --name zabbix-agent \
-eZBX_SERVER_HOST="127.0.0.1,localhost" \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-agent-50:latest
3. 在主机上创建./mysql/ 目录并启动 Oracle MySQL server
8.0:
podman run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-v ./mysql/:/var/lib/mysql/:Z \
--restart=always \
--pod=zabbix \
-d mysql:8.0 \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
3. 启动 Zabbix server 容器:
podman run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-e ZBX_JAVAGATEWAY="127.0.0.1" \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-server-mysql-50
4. 启动 Zabbix Java 网关容器:
podman run --name zabbix-java-gateway -t \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-java-gateway-50
5. 启动 Zabbix web 界面 容器:
podman run --name zabbix-web-mysql -t \
-e ZBX_SERVER_HOST="127.0.0.1" \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--restart=always \
--pod=zabbix \
-d registry.connect.redhat.com/zabbix/zabbix-web-mysql-50
zabbix pod 从 zabbix-web-mysql 容器的 8080/TCP 向 主机的 80/TCP port (HTTP) 暴露端口。