Installation aus Containern

Überblick

Dieser Abschnitt beschreibt, wie Zabbix mit Docker oder Docker Compose bereitgestellt wird.

Zabbix stellt offiziell Folgendes bereit:

  • Separate Docker-Images für jede Zabbix-Komponente, die als portable und eigenständige Container ausgeführt werden.
  • Compose-Dateien zum Definieren und Ausführen von Zabbix-Komponenten mit mehreren Containern in Docker.

Seit Zabbix 6.0 müssen deterministische Auslöser während der Installation erstellt werden. Wenn die binäre Protokollierung für MySQL/MariaDB aktiviert ist, sind dafür Superuser-Rechte oder das Setzen der Variablen/des Konfigurationsparameters log_bin_trust_function_creators = 1 erforderlich. Anweisungen zum Setzen der Variablen finden Sie unter Database creation scripts.
Beachten Sie, dass die Variable bei Ausführung über eine Konsole nur temporär gesetzt wird und beim Neustart eines Docker verworfen wird. Lassen Sie in diesem Fall Ihren SQL-Dienst weiterlaufen und stoppen Sie nur den Dienst zabbix-server, indem Sie 'docker compose down zabbix-server' und anschließend 'docker compose up -d zabbix-server' ausführen.
Alternativ können Sie diese Variable in der Konfigurationsdatei setzen.

Quelldateien

Die Dockerfile-Quellen werden im Zabbix-offiziellen Repository auf GitHub gespeichert. Dort können Sie die neuesten Dateiänderungen verfolgen oder das Projekt forken, um Ihre eigenen Images zu erstellen.

Docker

Zabbix stellt Images bereit, die auf einer Vielzahl von Basis-OS-Images basieren. Um die Liste der unterstützten Basis-Betriebssystem-Images für eine bestimmte Zabbix-Komponente zu erhalten, siehe die Beschreibung der Komponente in Docker Hub. Alle Zabbix-Images sind so konfiguriert, dass die neuesten Images neu erstellt werden, wenn Basis-Images aktualisiert werden.

Installation

Um ein Zabbix-Komponenten-Image zu erhalten, führen Sie Folgendes aus:

docker pull zabbix/zabbix-server-mysql

Ersetzen Sie zabbix/zabbix-server-mysql durch den Namen des erforderlichen Docker-Repositorys.

Dieser Befehl lädt die neueste stabile Version der Zabbix-Komponente herunter, die auf dem Alpine-Linux-OS basiert. Sie können Tags an den Repository-Namen anhängen, um ein Image zu erhalten, das auf einem anderen Betriebssystem basiert oder einer bestimmten Zabbix-Haupt- oder Nebenversion entspricht.

Die folgenden Repositorys sind in Docker Hub verfügbar:

Komponente Docker-Repository
Zabbix Agent zabbix/zabbix-agent
Zabbix Server
mit MySQL-Unterstützung zabbix/zabbix-server-mysql
mit PostgreSQL-Unterstützung zabbix/zabbix-server-pgsql
Zabbix-Weboberfläche
basierend auf dem Apache2-Webserver mit MySQL-Unterstützung zabbix/zabbix-web-apache-mysql
basierend auf dem Apache2-Webserver mit PostgreSQL-Unterstützung zabbix/zabbix-web-apache-pgsql
basierend auf dem Nginx-Webserver mit MySQL-Unterstützung zabbix/zabbix-web-nginx-mysql
basierend auf dem Nginx-Webserver mit PostgreSQL-Unterstützung zabbix/zabbix-web-nginx-pgsql
Zabbix Proxy
mit SQLite3-Unterstützung zabbix/zabbix-proxy-sqlite3
mit MySQL-Unterstützung zabbix/zabbix-proxy-mysql
Zabbix Java gateway zabbix/zabbix-java-gateway

Die Unterstützung für SNMP-Traps wird in einem separaten Repository zabbix/zabbix-snmptraps bereitgestellt. Es kann mit Zabbix Server und Zabbix Proxy verknüpft werden.

Tags

Offizielle Zabbix-Komponenten-Images können die folgenden Tags enthalten:

Tag Beschreibung Beispiel
latest Die neueste stabile Version einer Zabbix-Komponente basierend auf einem Alpine-Linux-Image. zabbix-agent:latest
<OS>-trunk Der neueste Nightly-Build der Zabbix-Version, die derzeit auf einem bestimmten Betriebssystem entwickelt wird.

<OS> - das Basisbetriebssystem. Unterstützte Werte:
alpine - Alpine Linux;
ltsc2019 - Windows 10 LTSC 2019 (nur Agent);
ol - Oracle Linux;
ltsc2022 - Windows 11 LTSC 2022 (nur Agent);
ubuntu - Ubuntu
zabbix-agent:ubuntu-trunk
<OS>-latest Die neueste stabile Version einer Zabbix-Komponente auf einem bestimmten Betriebssystem.

<OS> - das Basisbetriebssystem. Unterstützte Werte:
alpine - Alpine Linux;
ltsc2019 - Windows 10 LTSC 2019 (nur Agent);
ol - Oracle Linux;
ltsc2022 - Windows 11 LTSC 2022 (nur Agent);
ubuntu - Ubuntu
zabbix-agent:ol-latest
<OS>-X.X-latest Die neueste Nebenversion einer Zabbix-Komponente einer bestimmten Hauptversion und eines bestimmten Betriebssystems.

<OS> - das Basisbetriebssystem. Unterstützte Werte:
alpine - Alpine Linux;
ltsc2019 - Windows 10 LTSC 2019 (nur Agent);
ol - Oracle Linux;
ltsc2022 - Windows 11 LTSC 2022 (nur Agent);
ubuntu - Ubuntu

X.X - die Zabbix-Hauptversion (d. h. 6.0, 7.4, 8.0).
zabbix-agent:alpine-8.0-latest
<OS>-X.X.* Die spezifische Nebenversion einer Zabbix-Komponente einer bestimmten Hauptversion und eines bestimmten Betriebssystems.

<OS> - das Basisbetriebssystem. Unterstützte Werte:
alpine - Alpine Linux;
ltsc2019 - Windows 10 LTSC 2019 (nur Agent);
ol - Oracle Linux;
ltsc2022 - Windows 11 LTSC 2022 (nur Agent);
ubuntu - Ubuntu

X.X - die Zabbix-Hauptversion (d. h. 6.0, 7.4, 8.0).

* - die Zabbix-Nebenversion
zabbix-agent:alpine-8.0.1

Erstkonfiguration

Nach dem Herunterladen der Images starten Sie die Container, indem Sie den Befehl docker run ausführen, gefolgt von zusätzlichen Argumenten zur Angabe der erforderlichen Umgebungsvariablen und/oder Mount-Punkte. Einige Konfigurationsbeispiele werden unten bereitgestellt.

Um die Kommunikation zwischen Zabbix-Komponenten zu ermöglichen, werden einige Ports für einen Host-Rechner freigegeben, z. B. 10051/TCP für den Zabbix Server (trapper), 10050/TCP für den Zabbix Agent, 162/UDP für SNMP-Traps und 80/TCP für die Zabbix-Weboberfläche. Eine vollständige Liste der von Zabbix-Komponenten standardmäßig verwendeten Ports finden Sie auf der Seite Requirements. Für Zabbix Server und Agent kann der Standardport durch Setzen der Umgebungsvariablen ZBX_LISTENPORT environment variable geändert werden.

Umgebungsvariablen

Alle Images der Zabbix-Komponenten stellen Umgebungsvariablen zur Steuerung der Konfiguration bereit. Unterstützte Umgebungsvariablen sind im Komponenten-Repository aufgeführt.

Diese Umgebungsvariablen sind Optionen aus den Zabbix-Konfigurationsdateien, jedoch mit einer anderen Benennungsmethode. Zum Beispiel entspricht ZBX_LOGSLOWQUERIES dem Wert LogSlowQueries aus den Konfigurationsdateien von Zabbix Server oder Zabbix Proxy.

Einige Konfigurationsoptionen (z. B. PIDFile und LogType) können nicht geändert werden.

Die folgenden Umgebungsvariablen sind spezifisch für Docker-Komponenten und existieren nicht in den Zabbix-Konfigurationsdateien:

Variable Komponenten Standardwert Beschreibung
DB_SERVER_HOST Server
Proxy
Weboberfläche
mysql-server für MYSQL
postgres-server für PostgreSQL
IP- oder DNS-Name des MySQL- oder PostgreSQL-Servers.
DB_SERVER_PORT Server
Proxy
Weboberfläche
3306 für MYSQL
5432 für PostgreSQL
Port des MySQL- oder PostgreSQL-Servers.
MYSQL_USER Server
Proxy
Weboberfläche
zabbix MySQL-Datenbankbenutzer.
MYSQL_PASSWORD Server
Proxy
Weboberfläche
zabbix MySQL-Datenbankpasswort.
MYSQL_DATABASE Server
Proxy
Weboberfläche
zabbix für Zabbix-Server
zabbix_proxy für Zabbix-Proxy
Name der Zabbix-Datenbank.
POSTGRES_USER Server
Weboberfläche
zabbix PostgreSQL-Datenbankbenutzer.
POSTGRES_PASSWORD Server
Weboberfläche
zabbix PostgreSQL-Datenbankpasswort.
POSTGRES_DB Server
Weboberfläche
zabbix für Zabbix-Server
zabbix_proxy für Zabbix-Proxy
Name der Zabbix-Datenbank.
PHP_TZ Weboberfläche Europe/Riga Zeitzone im PHP-Format. Eine vollständige Liste der unterstützten Zeitzonen ist auf php.net verfügbar.
ZBX_SERVER_NAME Weboberfläche Zabbix Docker Sichtbarer Name der Zabbix-Installation unterhalb des Zabbix-Logos im vertikalen Menü der Weboberfläche.
ZBX_JAVAGATEWAY_ENABLE Server
Proxy
false Aktiviert die Kommunikation mit dem Zabbix Java gateway, um Java-bezogene Prüfungen zu erfassen.
ZBX_ENABLE_SNMP_TRAPS Server
Proxy
false Aktiviert die SNMP-Trap-Funktion. Sie erfordert eine zabbix-snmptraps-Instanz und das gemeinsam genutzte Volume /var/lib/zabbix/snmptraps für den Zabbix-Server oder Zabbix-Proxy.
Volumes

Die Images ermöglichen das Einhängen von Volumes unter Verwendung der folgenden Einhängepunkte:

Volume Beschreibung
Zabbix Agent
/etc/zabbix/zabbix_agentd.d Das Volume ermöglicht das Einbinden von *.conf-Dateien und die Erweiterung des Zabbix Agent mithilfe der UserParameter-Funktion
/var/lib/zabbix/modules Das Volume ermöglicht das Laden zusätzlicher Module und die Erweiterung des Zabbix Agent mithilfe der Funktion LoadModule
/var/lib/zabbix/enc Das Volume wird zum Speichern TLS-bezogener Dateien verwendet. Diese Dateinamen werden mithilfe der Umgebungsvariablen ZBX_TLSCAFILE, ZBX_TLSCRLFILE, ZBX_TLSKEY_FILE und ZBX_TLSPSKFILE angegeben
Zabbix Server
/usr/lib/zabbix/alertscripts Das Volume wird für benutzerdefinierte Alarmierungsskripte verwendet. Es ist der Parameter AlertScriptsPath in zabbix_server.conf
/usr/lib/zabbix/externalscripts Das Volume wird von externen Prüfungen verwendet. Es ist der Parameter ExternalScripts in zabbix_server.conf
/var/lib/zabbix/modules Das Volume ermöglicht das Laden zusätzlicher Module und die Erweiterung des Zabbix Server mithilfe der Funktion LoadModule
/var/lib/zabbix/enc Das Volume wird zum Speichern TLS-bezogener Dateien verwendet. Diese Dateinamen werden mithilfe der Umgebungsvariablen ZBX_TLSCAFILE, ZBX_TLSCRLFILE, ZBX_TLSKEY_FILE und ZBX_TLSPSKFILE angegeben
/var/lib/zabbix/ssl/certs Das Volume wird als Speicherort für SSL-Clientzertifikatsdateien zur Client-Authentifizierung verwendet. Es ist der Parameter SSLCertLocation in zabbix_server.conf
/var/lib/zabbix/ssl/keys Das Volume wird als Speicherort für SSL-Dateien mit privaten Schlüsseln zur Client-Authentifizierung verwendet. Es ist der Parameter SSLKeyLocation in zabbix_server.conf
/var/lib/zabbix/ssl/ssl_ca Das Volume wird als Speicherort für Dateien von Zertifizierungsstellen (CA) zur Verifizierung von SSL-Serverzertifikaten verwendet. Es ist der Parameter SSLCALocation in zabbix_server.conf
/var/lib/zabbix/snmptraps Das Volume wird als Speicherort für die Datei snmptraps.log verwendet. Es kann vom Container zabbix-snmptraps gemeinsam genutzt und beim Erstellen einer neuen Instanz von Zabbix Server mithilfe der Docker-Option volumes_from übernommen werden. Die Funktion zur Verarbeitung von SNMP-Traps kann durch Verwendung eines gemeinsam genutzten Volumes und Setzen der Umgebungsvariablen ZBX_ENABLE_SNMP_TRAPS auf 'true' aktiviert werden
/var/lib/zabbix/mibs Das Volume ermöglicht das Hinzufügen neuer MIB-Dateien. Unterverzeichnisse werden nicht unterstützt, alle MIBs müssen in /var/lib/zabbix/mibs abgelegt werden
Zabbix Proxy
/usr/lib/zabbix/externalscripts Das Volume wird von externen Prüfungen verwendet. Es ist der Parameter ExternalScripts in zabbix_proxy.conf
/var/lib/zabbix/db_data/ Das Volume ermöglicht das Speichern von Datenbankdateien auf externen Geräten. Wird nur für Zabbix Proxy mit SQLite3 unterstützt
/var/lib/zabbix/modules Das Volume ermöglicht das Laden zusätzlicher Module und die Erweiterung des Zabbix Server mithilfe der Funktion LoadModule
/var/lib/zabbix/enc Das Volume wird zum Speichern TLS-bezogener Dateien verwendet. Diese Dateinamen werden mithilfe der Umgebungsvariablen ZBX_TLSCAFILE, ZBX_TLSCRLFILE, ZBX_TLSKEY_FILE und ZBX_TLSPSKFILE angegeben
/var/lib/zabbix/ssl/certs Das Volume wird als Speicherort für SSL-Clientzertifikatsdateien zur Client-Authentifizierung verwendet. Es ist der Parameter SSLCertLocation in zabbix_proxy.conf
/var/lib/zabbix/ssl/keys Das Volume wird als Speicherort für SSL-Dateien mit privaten Schlüsseln zur Client-Authentifizierung verwendet. Es ist der Parameter SSLKeyLocation in zabbix_proxy.conf
/var/lib/zabbix/ssl/ssl_ca Das Volume wird als Speicherort für Dateien von Zertifizierungsstellen (CA) zur Verifizierung von SSL-Serverzertifikaten verwendet. Es ist der Parameter SSLCALocation in zabbix_proxy.conf
/var/lib/zabbix/snmptraps Das Volume wird als Speicherort für die Datei snmptraps.log verwendet. Es kann vom Container zabbix-snmptraps gemeinsam genutzt und beim Erstellen einer neuen Instanz von Zabbix Server mithilfe der Docker-Option volumes_from übernommen werden. Die Funktion zur Verarbeitung von SNMP-Traps kann durch Verwendung eines gemeinsam genutzten Volumes und Setzen der Umgebungsvariablen ZBX_ENABLE_SNMP_TRAPS auf 'true' aktiviert werden
/var/lib/zabbix/mibs Das Volume ermöglicht das Hinzufügen neuer MIB-Dateien. Unterverzeichnisse werden nicht unterstützt, alle MIBs müssen in /var/lib/zabbix/mibs abgelegt werden
Zabbix-Weboberfläche basierend auf Apache2-Webserver
/etc/ssl/apache2 Das Volume ermöglicht die Aktivierung von HTTPS für die Zabbix-Weboberfläche. Das Volume muss die beiden für Apache2-SSL-Verbindungen vorbereiteten Dateien ssl.crt und ssl.key enthalten
Zabbix-Weboberfläche basierend auf Nginx-Webserver
/etc/ssl/nginx Das Volume ermöglicht die Aktivierung von HTTPS für die Zabbix-Weboberfläche. Das Volume muss die für Nginx-SSL-Verbindungen vorbereiteten Dateien ssl.crt, ssl.key und dhparam.pem enthalten
Zabbix snmptraps
/var/lib/zabbix/snmptraps Das Volume enthält die Protokolldatei snmptraps.log mit den empfangenen SNMP-Traps
/var/lib/zabbix/mibs Das Volume ermöglicht das Hinzufügen neuer MIB-Dateien. Unterverzeichnisse werden nicht unterstützt, alle MIBs müssen in /var/lib/zabbix/mibs abgelegt werden

Weitere Informationen finden Sie in den offiziellen Zabbix-Repositories auf Docker Hub.

Beispiele

Beispiel 1

Das Beispiel zeigt, wie Zabbix Server mit Unterstützung für eine MySQL-Datenbank, einer auf dem Nginx-Webserver basierenden Zabbix-Weboberfläche und dem Zabbix Java gateway ausgeführt wird.

1. Erstellen Sie ein Netzwerk, das für Zabbix-Komponenten-Container vorgesehen ist:

docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net

2. Starten Sie eine leere MySQL-Server-Instanz:

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 \
    --restart unless-stopped \
    -d mysql:8.4-oracle \
    --character-set-server=utf8 --collation-server=utf8_bin \
    --default-authentication-plugin=caching_sha2_password

3. Starten Sie eine Zabbix Java gateway-Instanz:

docker run --name zabbix-java-gateway -t \
    --network=zabbix-net \
    --restart unless-stopped \
    -d zabbix/zabbix-java-gateway:alpine-8.0-latest

4. Starten Sie eine Zabbix-Server-Instanz und verknüpfen Sie diese mit der erstellten MySQL-Server-Instanz:

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-8.0-latest

5. Starten Sie die Zabbix-Weboberfläche und verknüpfen Sie diese mit den erstellten MySQL-Server- und Zabbix-Server-Instanzen:

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-8.0-latest

Beispiel 2

Das Beispiel zeigt, wie Zabbix Server mit Unterstützung für eine PostgreSQL-Datenbank, einer auf dem Nginx-Webserver basierenden Zabbix-Weboberfläche und der SNMP-Trap-Funktion ausgeführt wird.

1. Erstellen Sie ein Netzwerk, das für Zabbix-Komponenten-Container vorgesehen ist:

docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net

2. Starten Sie eine leere PostgreSQL-Server-Instanz:

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. Starten Sie eine Zabbix-snmptraps-Instanz:

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-8.0-latest

4. Starten Sie eine Zabbix-Server-Instanz und verknüpfen Sie diese mit der erstellten PostgreSQL-Server-Instanz:

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-8.0-latest

5. Starten Sie die Zabbix-Weboberfläche und verknüpfen Sie diese mit den erstellten PostgreSQL-Server- und Zabbix-Server-Instanzen:

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-8.0-latest

Beispiel 3

Das Beispiel zeigt, wie Zabbix Server mit Unterstützung für eine MySQL-Datenbank, einer auf dem Nginx-Webserver basierenden Zabbix-Weboberfläche und dem Zabbix Java gateway unter Verwendung von podman auf Red Hat 8 ausgeführt wird.

1. Erstellen Sie einen neuen Pod mit dem Namen zabbix und freigegebenen Ports (Weboberfläche, Zabbix-Server-Trapper):

podman pod create --name zabbix -p 80:8080 -p 10051:10051

2. (optional) Starten Sie den Zabbix-Agent-Container im Pod zabbix:

podman run --name zabbix-agent \
  -e ZBX_SERVER_HOST="127.0.0.1,localhost" \
  --restart=always \
  --pod=zabbix \
  -d registry.connect.redhat.com/zabbix/zabbix-agent-74:latest

3. Erstellen Sie auf dem Host das Verzeichnis ./mysql/ und starten Sie Oracle MySQL Server 8.4:

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.4 \
    --character-set-server=utf8 --collation-server=utf8_bin \
    --default-authentication-plugin=caching_sha2_password

4. Starten Sie den Zabbix-Server-Container:

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-74

5. Starten Sie den Zabbix Java Gateway-Container:

podman run --name zabbix-java-gateway -t \
    --restart=always \
    --pod=zabbix \
    -d registry.connect.redhat.com/zabbix/zabbix-java-gateway-74

6. Starten Sie den Zabbix-Weboberflächen-Container:

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-74

Der Pod zabbix stellt Port 80/TCP (HTTP) des Containers zabbix-web-mysql über dessen 8080/TCP für den Host bereit.

Docker Compose

Alternativ kann Zabbix mit dem Docker-Compose-Plugin installiert werden. Compose-Dateien zum Definieren und Ausführen von Zabbix-Komponenten mit mehreren Containern sind im offiziellen Zabbix-Docker-Repository auf GitHub verfügbar.

Offizielle Zabbix-Compose-Dateien unterstützen Version 3 von Docker Compose.

Diese Compose-Dateien werden als Beispiele hinzugefügt; sie sind überladen. Sie enthalten zum Beispiel Proxys mit Unterstützung sowohl für MySQL als auch für SQLite3.

Um die von Zabbix bereitgestellten Docker-Compose-Dateien zu erhalten, klonen Sie das Repository:

git clone https://github.com/zabbix/zabbix-docker.git

Wechseln Sie zur erforderlichen Version:

git checkout 8.0

Konfigurieren Sie die Compose-Dateien und erstellen und starten Sie die Container:

docker compose -f ./docker-compose_v3_alpine_mysql_latest.yaml up

Ersetzen Sie docker-compose_v3_alpine_mysql_latest.yaml im obigen Befehl durch die erforderliche Konfigurationsdatei.

Die folgenden Optionen sind verfügbar:

Dateiname Beschreibung
docker-compose_v3_alpine_mysql_latest.yaml Die Compose-Datei führt die neueste Version der Zabbix-8.0-Komponenten unter Alpine Linux mit Unterstützung für die MySQL-Datenbank aus.
docker-compose_v3_alpine_mysql_local.yaml Die Compose-Datei erstellt die neueste Version von Zabbix 8.0 lokal und führt Zabbix-Komponenten unter Alpine Linux mit Unterstützung für die MySQL-Datenbank aus.
docker-compose_v3_alpine_pgsql_latest.yaml Die Compose-Datei führt die neueste Version der Zabbix-8.0-Komponenten unter Alpine Linux mit Unterstützung für die PostgreSQL-Datenbank aus.
docker-compose_v3_alpine_pgsql_local.yaml Die Compose-Datei erstellt die neueste Version von Zabbix 8.0 lokal und führt Zabbix-Komponenten unter Alpine Linux mit Unterstützung für die PostgreSQL-Datenbank aus.
docker-compose_v3_ol_mysql_latest.yaml Die Compose-Datei führt die neueste Version der Zabbix-8.0-Komponenten unter Oracle Linux mit Unterstützung für die MySQL-Datenbank aus.
docker-compose_v3_ol_mysql_local.yaml Die Compose-Datei erstellt die neueste Version von Zabbix 8.0 lokal und führt Zabbix-Komponenten unter Oracle Linux mit Unterstützung für die MySQL-Datenbank aus.
docker-compose_v3_ol_pgsql_latest.yaml Die Compose-Datei führt die neueste Version der Zabbix-8.0-Komponenten unter Oracle Linux mit Unterstützung für die PostgreSQL-Datenbank aus.
docker-compose_v3_ol_pgsql_local.yaml Die Compose-Datei erstellt die neueste Version von Zabbix 8.0 lokal und führt Zabbix-Komponenten unter Oracle Linux mit Unterstützung für die PostgreSQL-Datenbank aus.
docker-compose_v3_ubuntu_mysql_latest.yaml Die Compose-Datei führt die neueste Version der Zabbix-8.0-Komponenten unter Ubuntu 24.04 (noble) mit Unterstützung für die MySQL-Datenbank aus.
docker-compose_v3_ubuntu_mysql_local.yaml Die Compose-Datei erstellt die neueste Version von Zabbix 8.0 lokal und führt Zabbix-Komponenten unter Ubuntu 24.04 (noble) mit Unterstützung für die MySQL-Datenbank aus.
docker-compose_v3_ubuntu_pgsql_latest.yaml Die Compose-Datei führt die neueste Version der Zabbix-8.0-Komponenten unter Ubuntu 24.04 (noble) mit Unterstützung für die PostgreSQL-Datenbank aus.
docker-compose_v3_ubuntu_pgsql_local.yaml Die Compose-Datei erstellt die neueste Version von Zabbix 8.0 lokal und führt Zabbix-Komponenten unter Ubuntu 24.04 (noble) mit Unterstützung für die PostgreSQL-Datenbank aus.

Speicher

Compose-Dateien sind so konfiguriert, dass sie lokalen Speicher auf einem Host-Rechner unterstützen. Docker Compose erstellt ein Verzeichnis zbx_env in dem Ordner mit der Compose-Datei, wenn Sie Zabbix-Komponenten mit der Compose-Datei ausführen. Das Verzeichnis enthält dieselbe Struktur wie im Abschnitt Volumes beschrieben sowie ein Verzeichnis für die Datenbankspeicherung.

Es gibt außerdem Volumes im Nur-Lese-Modus für die Dateien /etc/localtime und /etc/timezone.

Umgebungsvariablen

Die Variablendateien haben die folgende Namensstruktur: .env_<Typ der Komponente> und befinden sich im Verzeichnis env_vars directory. Siehe Umgebungsvariablen für Details zur Benennung der Variablen und zur verfügbaren Auswahl.

Beispiele

Beispiel 1

git checkout 8.0
docker compose -f ./docker-compose_v3_alpine_mysql_latest.yaml up -d

Der Befehl lädt die neuesten Zabbix-8.0-Images für jede Zabbix-Komponente herunter und startet sie im Detached-Modus.

Vergessen Sie nicht, die Dateien .env_<type of component> aus dem offiziellen Zabbix-Repository auf github.com zusammen mit den Compose-Dateien herunterzuladen.

Beispiel 2

git checkout 8.0
docker compose -f ./docker-compose_v3_ubuntu_mysql_local.yaml up -d

Der Befehl lädt das Basis-Image Ubuntu 24.04 (noble) herunter, erstellt dann die Zabbix-8.0-Komponenten lokal und startet sie im Detached-Modus.