5 コンテナからのインストール

概要

このセクションでは、Docker または Docker Compose を使用して Zabbix をデプロイする方法について説明します。

Zabbix は公式に以下を提供しています。

  • 各 Zabbix コンポーネントごとに個別の Docker イメージ。これにより、ポータブルで自己完結型のコンテナとして実行できます。
  • Docker で複数コンテナの Zabbix コンポーネントを定義および実行するための Compose ファイル。

Zabbix 6.0 以降では、決定論的トリガーはインストール時に作成する必要があります。 MySQL/MariaDB でバイナリログが有効になっている場合、これにはスーパーユーザー権限、または変数/設定パラメータ log_bin_trust_function_creators = 1 の設定が必要です。 変数の設定方法については、データベース作成スクリプト を参照してください。
コンソールから実行した場合、この変数は一時的にのみ設定され、Docker が再起動されると失われることに注意してください。 この場合は、SQL サービスは実行したままにし、'docker compose down zabbix-server' を実行して zabbix-server サービスのみを停止し、その後 'docker compose up -d zabbix-server' を実行してください。
または、この変数を設定ファイルで設定することもできます。

ソースファイル

Dockerファイルのソースは、GitHub上のZabbixの公式リポジトリに保存されており、そこで最新のファイル変更を追跡したり、プロジェクトをフォークして独自のイメージを作成したりできます。

Docker

Zabbix は、さまざまな OS ベースイメージに基づくイメージを提供しています。 特定の Zabbix コンポーネントでサポートされているベースオペレーティングシステムイメージの一覧を取得するには、Docker Hub にある各コンポーネントの説明を参照してください。 すべての Zabbix イメージは、ベースイメージが更新された場合に最新イメージを再ビルドするよう設定されています。

インストール

Zabbix コンポーネントのイメージを取得するには、次を実行します。

docker pull zabbix/zabbix-server-mysql

zabbix/zabbix-server-mysql を必要な Docker リポジトリ名に置き換えてください。

このコマンドは、Alpine Linux OS ベースの最新の安定版 Zabbix コンポーネントバージョンを取得します。 別のオペレーティングシステムをベースにしたイメージ、または特定の Zabbix メジャー/マイナーバージョンのイメージを取得するには、リポジトリ名に tags を追加できます。

Docker Hub では、次のリポジトリを利用できます。

Component Docker repository
Zabbix エージェント zabbix/zabbix-agent
Zabbix サーバー
MySQL サポート付き zabbix/zabbix-server-mysql
PostgreSQL サポート付き zabbix/zabbix-server-pgsql
Zabbix Webインターフェース
MySQL サポート付き Apache2 Web サーバーベース zabbix/zabbix-web-apache-mysql
PostgreSQL サポート付き Apache2 Web サーバーベース zabbix/zabbix-web-apache-pgsql
MySQL サポート付き Nginx Web サーバーベース zabbix/zabbix-web-nginx-mysql
PostgreSQL サポート付き Nginx Web サーバーベース zabbix/zabbix-web-nginx-pgsql
Zabbix プロキシ
SQLite3 サポート付き zabbix/zabbix-proxy-sqlite3
MySQL サポート付き zabbix/zabbix-proxy-mysql
Zabbix Javaゲートウェイ zabbix/zabbix-java-gateway

SNMP トラップのサポートは、別リポジトリ zabbix/zabbix-snmptraps で提供されています。 これは Zabbix サーバーおよび Zabbix プロキシとリンクできます。

タグ

公式のZabbixコンポーネントイメージには、以下のタグを含めることができます。

Tag Description Example
latest Alpine LinuxイメージをベースにしたZabbixコンポーネントの最新の安定版。 zabbix-agent:latest
<OS>-trunk 特定のオペレーティングシステム上で現在開発中のZabbixバージョンの最新ナイトリービルド。

<OS> - ベースとなるオペレーティングシステム。サポートされる値:
alpine - Alpine Linux;
ltsc2019 - Windows 10 LTSC 2019(エージェントのみ);
ol - Oracle Linux;
ltsc2022 - Windows 11 LTSC 2022(エージェントのみ);
ubuntu - Ubuntu
zabbix-agent:ubuntu-trunk
<OS>-latest 特定のオペレーティングシステム上のZabbixコンポーネントの最新の安定版。

<OS> - ベースとなるオペレーティングシステム。サポートされる値:
alpine - Alpine Linux;
ltsc2019 - Windows 10 LTSC 2019(エージェントのみ);
ol - Oracle Linux;
ltsc2022 - Windows 11 LTSC 2022(エージェントのみ);
ubuntu - Ubuntu
zabbix-agent:ol-latest
<OS>-X.X-latest 特定のメジャーバージョンおよびオペレーティングシステム向けZabbixコンポーネントの最新マイナーバージョン。

<OS> - ベースとなるオペレーティングシステム。サポートされる値:
alpine - Alpine Linux;
ltsc2019 - Windows 10 LTSC 2019(エージェントのみ);
ol - Oracle Linux;
ltsc2022 - Windows 11 LTSC 2022(エージェントのみ);
ubuntu - Ubuntu

X.X - Zabbixのメジャーバージョン(例: 6.07.07.4)。
zabbix-agent:alpine-7.4-latest
<OS>-X.X.* 特定のメジャーバージョンおよびオペレーティングシステム向けZabbixコンポーネントの特定のマイナーバージョン。

<OS> - ベースとなるオペレーティングシステム。サポートされる値:
alpine - Alpine Linux;
ltsc2019 - Windows 10 LTSC 2019(エージェントのみ);
ol - Oracle Linux;
ltsc2022 - Windows 11 LTSC 2022(エージェントのみ);
ubuntu - Ubuntu

X.X - Zabbixのメジャーバージョン(例: 6.07.07.4)。

* - Zabbixのマイナーバージョン
zabbix-agent:alpine-7.4.1

Docker Compose

または、ZabbixはDocker Composeプラグインを使用してインストールすることもできます。 複数コンテナのZabbixコンポーネントを定義して実行するためのComposeファイルは、GitHub上の公式のZabbix Dockerリポジトリで利用できます。

公式のZabbix composeファイルは、Docker Composeのバージョン3をサポートしています。

これらのcomposeファイルは例として追加されていますが、多くの構成が含まれています。 たとえば、MySQLとSQLite3の両方をサポートするプロキシが含まれています。

Zabbixが提供するDocker composeファイルを取得するには、リポジトリをクローンします。

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

必要なバージョンに切り替えます。

git checkout 7.4

Compose設定ファイルを使用してコンテナを作成し、起動します。

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

上記のコマンド内のdocker-compose_v3_alpine_mysql_latest.yamlを、必要な設定ファイルに置き換えてください。

利用可能なオプションは次のとおりです。

File name Description
docker-compose_v3_alpine_mysql_latest.yaml このcomposeファイルは、Alpine Linux上でMySQLデータベースをサポートする最新バージョンのZabbix 7.4コンポーネントを実行します。
docker-compose_v3_alpine_mysql_local.yaml このcomposeファイルは、最新バージョンのZabbix 7.4をローカルでビルドし、Alpine Linux上でMySQLデータベースをサポートするZabbixコンポーネントを実行します。
docker-compose_v3_alpine_pgsql_latest.yaml このcomposeファイルは、Alpine Linux上でPostgreSQLデータベースをサポートする最新バージョンのZabbix 7.4コンポーネントを実行します。
docker-compose_v3_alpine_pgsql_local.yaml このcomposeファイルは、最新バージョンのZabbix 7.4をローカルでビルドし、Alpine Linux上でPostgreSQLデータベースをサポートするZabbixコンポーネントを実行します。
docker-compose_v3_ol_mysql_latest.yaml このcomposeファイルは、Oracle Linux上でMySQLデータベースをサポートする最新バージョンのZabbix 7.4コンポーネントを実行します。
docker-compose_v3_ol_mysql_local.yaml このcomposeファイルは、最新バージョンのZabbix 7.4をローカルでビルドし、Oracle Linux上でMySQLデータベースをサポートするZabbixコンポーネントを実行します。
docker-compose_v3_ol_pgsql_latest.yaml このcomposeファイルは、Oracle Linux上でPostgreSQLデータベースをサポートする最新バージョンのZabbix 7.4コンポーネントを実行します。
docker-compose_v3_ol_pgsql_local.yaml このcomposeファイルは、最新バージョンのZabbix 7.4をローカルでビルドし、Oracle Linux上でPostgreSQLデータベースをサポートするZabbixコンポーネントを実行します。
docker-compose_v3_ubuntu_mysql_latest.yaml このcomposeファイルは、Ubuntu 24.04 (noble)上でMySQLデータベースをサポートする最新バージョンのZabbix 7.4コンポーネントを実行します。
docker-compose_v3_ubuntu_mysql_local.yaml このcomposeファイルは、最新バージョンのZabbix 7.4をローカルでビルドし、Ubuntu 24.04 (noble)上でMySQLデータベースをサポートするZabbixコンポーネントを実行します。
docker-compose_v3_ubuntu_pgsql_latest.yaml このcomposeファイルは、Ubuntu 24.04 (noble)上でPostgreSQLデータベースをサポートする最新バージョンのZabbix 7.4コンポーネントを実行します。
docker-compose_v3_ubuntu_pgsql_local.yaml このcomposeファイルは、最新バージョンのZabbix 7.4をローカルでビルドし、Ubuntu 24.04 (noble)上でPostgreSQLデータベースをサポートするZabbixコンポーネントを実行します。
環境変数

すべてのZabbixコンポーネントイメージは、設定を制御するための環境変数を提供しています。 サポートされている環境変数は、コンポーネントリポジトリに一覧表示されています。

これらの環境変数はZabbix設定ファイルのオプションに対応していますが、命名方法が異なります。 例えば、ZBX_LOGSLOWQUERIES は、Zabbix サーバー または Zabbix プロキシ 設定ファイル内の LogSlowQueries に相当します。

一部の設定オプション(例: PIDFile および LogType)は変更できません。

以下の環境変数はDockerコンポーネント固有のものであり、Zabbix設定ファイルには存在しません。

Variable Components Default value Description
DB_SERVER_HOST サーバー
プロキシ
Webインターフェース
MYSQL の場合は mysql-server
PostgreSQL の場合は postgres-server
MySQL または PostgreSQL サーバーのIPアドレスまたはDNS名。
DB_SERVER_PORT サーバー
プロキシ
Webインターフェース
MYSQL の場合は 3306
PostgreSQL の場合は 5432
MySQL または PostgreSQL サーバーのポート。
MYSQL_USER サーバー
プロキシ
Webインターフェース
zabbix MySQLデータベースユーザー。
MYSQL_PASSWORD サーバー
プロキシ
Webインターフェース
zabbix MySQLデータベースパスワード。
MYSQL_DATABASE サーバー
プロキシ
Webインターフェース
Zabbixサーバーの場合は zabbix
Zabbixプロキシの場合は zabbix_proxy
Zabbixデータベース名。
POSTGRES_USER サーバー
Webインターフェース
zabbix PostgreSQLデータベースユーザー。
POSTGRES_PASSWORD サーバー
Webインターフェース
zabbix PostgreSQLデータベースパスワード。
POSTGRES_DB サーバー
Webインターフェース
Zabbixサーバーの場合は zabbix
Zabbixプロキシの場合は zabbix_proxy
Zabbixデータベース名。
PHP_TZ Webインターフェース Europe/Riga PHP形式のタイムゾーン。サポートされているタイムゾーンの完全な一覧は php.net で確認できます。
ZBX_SERVER_NAME Webインターフェース Zabbix Docker Webインターフェースの縦型メニューで、Zabbixロゴの下に表示されるZabbixインストール名。
ZBX_JAVAGATEWAY_ENABLE サーバー
プロキシ
false Java関連のチェックを収集するために、Zabbix Javaゲートウェイとの通信を有効にします。
ZBX_ENABLE_SNMP_TRAPS サーバー
プロキシ
false SNMPトラップ機能を有効にします。これには zabbix-snmptraps インスタンスと、共有ボリューム /var/lib/zabbix/snmptraps をZabbixサーバーまたはZabbixプロキシに設定する必要があります。
ボリューム

イメージでは、以下のマウントポイントを使用してボリュームをマウントできます。

ボリューム 説明
Zabbix エージェント
/etc/zabbix/zabbix_agentd.d このボリュームを使用すると、*.conf ファイルを追加でき、UserParameter 機能を使用して Zabbix エージェントを拡張できます
/var/lib/zabbix/modules このボリュームを使用すると、追加モジュールをロードでき、LoadModule 機能を使用して Zabbix エージェントを拡張できます
/var/lib/zabbix/enc このボリュームは TLS 関連ファイルの保存に使用されます。これらのファイル名は、環境変数 ZBX_TLSCAFILEZBX_TLSCRLFILEZBX_TLSKEY_FILEZBX_TLSPSKFILE を使用して指定します
Zabbix サーバー
/usr/lib/zabbix/alertscripts このボリュームはカスタムアラートスクリプトに使用されます。zabbix_server.confAlertScriptsPath パラメータです
/usr/lib/zabbix/externalscripts このボリュームは 外部チェック で使用されます。zabbix_server.confExternalScripts パラメータです
/var/lib/zabbix/modules このボリュームを使用すると、追加モジュールをロードでき、LoadModule 機能を使用して Zabbix サーバーを拡張できます
/var/lib/zabbix/enc このボリュームは TLS 関連ファイルの保存に使用されます。これらのファイル名は、環境変数 ZBX_TLSCAFILEZBX_TLSCRLFILEZBX_TLSKEY_FILEZBX_TLSPSKFILE を使用して指定します
/var/lib/zabbix/ssl/certs このボリュームは、クライアント認証用の SSL クライアント証明書ファイルの保存場所として使用されます。zabbix_server.conf の SSLCertLocation パラメータです
/var/lib/zabbix/ssl/keys このボリュームは、クライアント認証用の SSL 秘密鍵ファイルの保存場所として使用されます。zabbix_server.confSSLKeyLocation パラメータです
/var/lib/zabbix/ssl/ssl_ca このボリュームは、SSL サーバー証明書検証用の認証局 (CA) ファイルの保存場所として使用されます。zabbix_server.confSSLCALocation パラメータです
/var/lib/zabbix/snmptraps このボリュームは snmptraps.log ファイルの保存場所として使用されます。このボリュームは zabbix-snmptraps コンテナと共有でき、新しい Zabbix サーバーインスタンスの作成時に Docker の volumes_from オプションを使用して継承できます。SNMP トラップ処理機能は、共有ボリュームを使用し、環境変数 ZBX_ENABLE_SNMP_TRAPS を 'true' に切り替えることで有効にできます
/var/lib/zabbix/mibs このボリュームを使用すると、新しい MIB ファイルを追加できます。サブディレクトリはサポートされていないため、すべての MIB は /var/lib/zabbix/mibs に配置する必要があります
Zabbix プロキシ
/usr/lib/zabbix/externalscripts このボリュームは 外部チェック で使用されます。zabbix_proxy.confExternalScripts パラメータです
/var/lib/zabbix/db_data/ このボリュームを使用すると、データベースファイルを外部デバイスに保存できます。SQLite3 を使用する Zabbix プロキシでのみサポートされます
/var/lib/zabbix/modules このボリュームを使用すると、追加モジュールをロードでき、LoadModule 機能を使用して Zabbix サーバーを拡張できます
/var/lib/zabbix/enc このボリュームは TLS 関連ファイルの保存に使用されます。これらのファイル名は、環境変数 ZBX_TLSCAFILEZBX_TLSCRLFILEZBX_TLSKEY_FILEZBX_TLSPSKFILE を使用して指定します
/var/lib/zabbix/ssl/certs このボリュームは、クライアント認証用の SSL クライアント証明書ファイルの保存場所として使用されます。zabbix_proxy.confSSLCertLocation パラメータです
/var/lib/zabbix/ssl/keys このボリュームは、クライアント認証用の SSL 秘密鍵ファイルの保存場所として使用されます。zabbix_proxy.confSSLKeyLocation パラメータです
/var/lib/zabbix/ssl/ssl_ca このボリュームは、SSL サーバー証明書検証用の認証局 (CA) ファイルの保存場所として使用されます。zabbix_proxy.confSSLCALocation パラメータです
/var/lib/zabbix/snmptraps このボリュームは snmptraps.log ファイルの保存場所として使用されます。このボリュームは zabbix-snmptraps コンテナと共有でき、新しい Zabbix サーバーインスタンスの作成時に Docker の volumes_from オプションを使用して継承できます。SNMP トラップ処理機能は、共有ボリュームを使用し、環境変数 ZBX_ENABLE_SNMP_TRAPS を 'true' に切り替えることで有効にできます
/var/lib/zabbix/mibs このボリュームを使用すると、新しい MIB ファイルを追加できます。サブディレクトリはサポートされていないため、すべての MIB は /var/lib/zabbix/mibs に配置する必要があります
Apache2 Web サーバーをベースとした Zabbix Webインターフェース
/etc/ssl/apache2 このボリュームを使用すると、Zabbix Webインターフェースで HTTPS を有効にできます。このボリュームには、Apache2 の SSL 接続用に準備された ssl.crtssl.key の 2 つのファイルが含まれている必要があります
Nginx Web サーバーをベースとした Zabbix Webインターフェース
/etc/ssl/nginx このボリュームを使用すると、Zabbix Webインターフェースで HTTPS を有効にできます。このボリュームには、Nginx の SSL 接続用に準備された ssl.crtssl.keydhparam.pem が含まれている必要があります
Zabbix snmptraps
/var/lib/zabbix/snmptraps このボリュームには、受信した SNMP トラップを記録した snmptraps.log ログファイルが含まれます
/var/lib/zabbix/mibs このボリュームを使用すると、新しい 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コンポーネント間の通信を有効にするため、Zabbixサーバー(trapper)用の10051/TCP、Zabbixエージェント用の10050/TCP、SNMPトラップ用の162/UDP、Zabbix Webインターフェース用の80/TCPなどの一部のポートがホストマシンに公開されます。 Zabbixコンポーネントで使用されるデフォルトポートの完全な一覧は、Requirementsページで確認できます。 Zabbixサーバーおよびエージェントでは、デフォルトポートは ZBX_LISTENPORT 環境変数 を設定することで変更できます。

例 1

この例では、MySQLデータベース対応のZabbixサーバー、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サーバーインスタンスを起動します。

MySQL 8.4以降では、mysql_native_password の代わりに caching_sha2_password を使用する必要があります。

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.0-oracle \
      --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-7.4-latest

4. Zabbixサーバーインスタンスを起動し、作成したMySQLサーバーインスタンスにリンクします。

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

5. Zabbix Webインターフェースを起動し、作成したMySQLサーバーインスタンスおよびZabbixサーバーインスタンスにリンクします。

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

例 2

この例では、PostgreSQLデータベース対応のZabbixサーバー、Nginx WebサーバーベースのZabbix Webインターフェース、およびSNMPトラップ機能を実行する方法を示します。

1. Zabbixコンポーネントコンテナ専用のネットワークを作成します。

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

2. 空のPostgreSQLサーバーインスタンスを起動します。

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

4. Zabbixサーバーインスタンスを起動し、作成したPostgreSQLサーバーインスタンスにリンクします。

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

5. Zabbix Webインターフェースを起動し、作成したPostgreSQLサーバーインスタンスおよびZabbixサーバーインスタンスにリンクします。

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

例 3

この例では、Red Hat 8 上で podman を使用して、MySQLデータベース対応のZabbixサーバー、Nginx WebサーバーベースのZabbix Webインターフェース、およびZabbix Javaゲートウェイを実行する方法を示します。

1. zabbix という名前の新しいpodを作成し、ポート(Webインターフェース、Zabbixサーバー trapper)を公開します。

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

2. (任意)zabbix 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. ホスト上に ./mysql/ ディレクトリを作成し、Oracle MySQLサーバー 8.0 を起動します。

MySQL 8.4以降では、mysql_native_password の代わりに caching_sha2_password を使用する必要があります。

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

4. Zabbixサーバーコンテナを起動します。

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. Zabbix Java Gatewayコンテナを起動します。

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

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

Pod zabbix は、zabbix-web-mysql コンテナの 8080/TCP からホストマシンに 80/TCP ポート(HTTP)を公開します。