[comment]: # translation:outdated

[comment]: # ({e62e1497-e62e1497})
# 5 コンテナでのインストール

[comment]: # ({/e62e1497-e62e1497})

[comment]: # ({903b489f-a3ac452e})

### 概要

ここでは、[Docker](#docker)または[Docker Compose](#docker-compose)を使用してZabbixをデプロイする方法について説明します。

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

- Zabbixコンポーネントごとに個別のDockerイメージを作成し、ポータブルで自立したコンテナとして実行します。
- DockerでマルチコンテナZabbixコンポーネントを定義して実行するためのファイルを作成します。


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

[comment]: # ({/903b489f-a3ac452e})

[comment]: # ({c5a25716-fba82ded})
#### ソースファイル

Dockerファイルのソースは、GitHubのZabbix[公式リポジトリ](https://github.com/zabbix/zabbix-docker)に保存されており、最新のファイル変更を追跡したり、プロジェクトをフォークして独自のイメージを作成したりできます。

[comment]: # ({/c5a25716-fba82ded})

[comment]: # ({97754c05-f9acea87})
### Docker


ZabbixはさまざまなOS ベースイメージに基づいたイメージを提供します。
特定のZabbixコンポーネントでサポートされているベースオペレーティングシステムイメージのリストを取得するには、[Docker Hub](https://hub.docker.com/u/zabbix)でコンポーネントの説明を参照してください。
すべてのZabbixイメージは、ベースイメージが更新された場合に最新のイメージにリビルドするように設定されています。

#### インストール

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

    docker pull zabbix/zabbix-server-mysql

`zabbix/zabbix-server-mysql`を必要なDockerリポジトリの名前に置き換えます。

このコマンドは、Alpine Linux OSに基づいた最新の安定したZabbixコンポーネントバージョンをプルします。
リポジトリ名に[タグ](#tags)を追加すると、別のオペレーティングシステムまたは特定のZabbixメジャーバージョンまたはマイナーバージョンに基づくイメージを取得できます。

Docker Hubでは次のリポジトリが利用可能です。

|コンポーネント|<|Dockerリポジトリ|
|-|---------|----------|
|*Zabbixエージェント*|<|[zabbix/zabbix-agent](https://hub.docker.com/r/zabbix/zabbix-agent/)|
|*Zabbixサーバー*|<|<|
| |MySQLサポート|[zabbix/zabbix-server-mysql](https://hub.docker.com/r/zabbix/zabbix-server-mysql/)|
|^|PostgreSQLサポート|[zabbix/zabbix-server-pgsql](https://hub.docker.com/r/zabbix/zabbix-server-pgsql/)|
|*Zabbix Webインターフェース* |<|<|
| |MySQLをサポートするApache2 Webサーバー|[zabbix/zabbix-web-apache-mysql](https://hub.docker.com/r/zabbix/zabbix-web-apache-mysql/)|
|^|PostgreSQLをサポートするApache2 Webサーバー|[zabbix/zabbix-web-apache-pgsql](https://hub.docker.com/r/zabbix/zabbix-web-apache-pgsql/)|
|^|MySQLをサポートするNginx Webサーバー|[zabbix/zabbix-web-nginx-mysql](https://hub.docker.com/r/zabbix/zabbix-web-nginx-mysql/)|
|^|PostgreSQLをサポートするNginx Webサーバー|[zabbix/zabbix-web-nginx-pgsql](https://hub.docker.com/r/zabbix/zabbix-web-nginx-pgsql/)|
|*Zabbixプロキシ* |<|<|
| |SQLite3サポート|[zabbix/zabbix-proxy-sqlite3](https://hub.docker.com/r/zabbix/zabbix-proxy-sqlite3/)|
|^|MySQLサポート|[zabbix/zabbix-proxy-mysql](https://hub.docker.com/r/zabbix/zabbix-proxy-mysql/)|
|*Zabbix Javaゲートウェイ* |<|[zabbix/zabbix-java-gateway](https://hub.docker.com/r/zabbix/zabbix-java-gateway/)|

::: noteclassic
SNMPトラップのサポートは、別のリポジトリ[zabbix/zabbix-snmptraps](https://hub.docker.com/r/zabbix/zabbix-snmptraps/)で提供されます。
ZabbixサーバーやZabbixプロキシと連携することができます。
:::

[comment]: # ({/97754c05-f9acea87})

[comment]: # ({a7a96ec8-e498c2aa})

#### タグ

公式のZabbixコンポーネントイメージには、次のタグが含まれる場合があります。

|タグ|説明|例|
|--|----------|----|
|latest            |Alpine Linuxイメージに基づくZabbixコンポーネントの最新安定バージョン。|zabbix-agent:latest |
|<OS>-trunk |特定のOS上で現在開発中のZabbixバージョンの最新ナイトリービルド。<br> <br>**<OS>** - ベースオペレーティングシステム。サポートする値: <br>*alpine* - Alpine Linux<br>*ltsc2019* -  Windows 10 LTSC 2019 (エージェントのみ)<br>*ol* - Oracle Linux<br>*ltsc2022* - Windows 11 LTSC 2022 (エージェントのみ)<br>*ubuntu* - Ubuntu  |zabbix agent:ubuntu-trunk |
|<OS>-latest     |特定のOS上のZabbixコンポーネントの最新安定バージョン。<br> <br>**<OS>** - ベースオペレーティングシステム。サポートする値: <br>*alpine* - Alpine Linux<br> *ltsc2019* -  Windows 10 LTSC 2019 (エージェントのみ)<br>*ol* - Oracle Linux<br>*ltsc2022* - Windows 11 LTSC 2022 (エージェントのみ)<br>*ubuntu* - Ubuntu|zabbix-agent:ol-latest |
|<OS>-X.X-latest |特定のOS上および特定のメジャーバージョンのZabbixコンポーネントの最新マイナーバージョン。<br> <br>**<OS>** - ベースオペレーティングシステム。サポートする値: <br>*alpine* - Alpine Linux<br>*ltsc2019* -  Windows 10 LTSC 2019 (エージェントのみ)<br>*ol* - Oracle Linux<br>*ltsc2022* - Windows 11 LTSC 2022 (エージェントのみ)<br>*ubuntu* - Ubuntu<br><br>**X.X** - Zabbixのメジャーバージョン (例: *6.0*、*7.0*、*7.2*)|zabbix-agent:alpine-7.2-latest |
|<OS>-X.X.*      |特定のOS上および特定のメジャーバージョンのZabbixコンポーネントの最新マイナーバージョン。<br> <br>**<OS>** - ベースオペレーティングシステム。サポートする値: <br>*alpine* - Alpine Linux <br>*ltsc2019* -  Windows 10 LTSC 2019 (エージェントのみ) <br>*ol* - Oracle Linux <br>*ltsc2022* - Windows 11 LTSC 2022 (エージェントのみ) <br>*ubuntu* - Ubuntu<br><br>**X.X** - Zabbixのメジャーバージョン (例: *6.0*、*7.0*、*7.2*) <br><br>**\*** - Zabbixのマイナーバージョン |zabbix-agent:alpine-7.2.1|

[comment]: # ({/a7a96ec8-e498c2aa})

[comment]: # ({b8cd844f-0b4b68c7})
#### 初期設定

イメージをダウンロードした後、`docker run`コマンドを実行してコンテナを起動し、その後に必要な[環境変数](#環境変数)や[マウントポイント](#ボリューム)を指定する追加の引数を指定します。
いくつかの[設定例](#例)を以下に示します。

::: noteclassic
Zabbixコンポーネント間の通信を可能にするために、Zabbixサーバー (トラッパー)の10051/TCP、Zabbixエージェントの10050/TCP、SNMPトラップの162/UDP、Zabbix Webインターフェースの80/TCPなどの一部のポートがホストマシンに公開されます。 
Zabbixコンポーネントで使用されるデフォルトポートの完全なリストは、[要件](/manual/installation/requirements#default-port-numbers)ページで確認できます。
Zabbixサーバーおよびエージェントの場合、[環境変数](#環境変数)ZBX_LISTENPORTを設定することでデフォルトのポートを変更できます。
:::

[comment]: # ({/b8cd844f-0b4b68c7})

[comment]: # ({47a27dda-de9f41d4})
すべてのZabbixコンポーネントイメージは、構成を制御するための環境変数を提供します。
サポートされている環境変数は[コンポーネントリポジトリ](#installation)にリストされています。

これらの環境変数はZabbix設定ファイルのオプションでもありますが命名方法が異なります。
たとえば、`ZBX_LOGSLOWQUERIES`は、Zabbix[サーバー](/manual/appendix/config/zabbix_server#logslowqueries)またはZabbix[プロキシ](/manual/appendix/config/zabbix_proxy#logslowqueries)の設定ファイルの`LogSlowQueries`と同じです。

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

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

|変数|コンポーネント|デフォルト値|説明|
|--|--|--|------|
|`DB_SERVER_HOST`|サーバー<br>プロキシ<br>Webインターフェース|MYSQL: `mysql-server`<br>PostgreSQL: `postgres-server`|MySQLまたはPostgreSQLサーバーのIPまたはDNS名。|
|`DB_SERVER_PORT`|サーバー<br>プロキシ<br>Webインターフェース|MYSQL: `3306`<br>PostgreSQL: `5432`|MySQLまたはPostgreSQLサーバーのポート。|
|`MYSQL_USER`|サーバー<br>プロキシ<br>Webインターフェース| `zabbix` |MySQLデータベースユーザー。|
|`MYSQL_PASSWORD`|サーバー<br>プロキシ<br>Webインターフェース|`zabbix` |MySQLデータベースパスワード。|
|`MYSQL_DATABASE`|サーバー<br>プロキシ<br>Webインターフェース|Zabbixサーバー: `zabbix`<br> Zabbixプロキシ: 'zabbix_proxy' |Zabbixデータベース名。|
|`POSTGRES_USER`|サーバー<br>Webインターフェース|`zabbix` |PostgreSQLデータベースユーザー。|
|`POSTGRES_PASSWORD`|サーバー<br>Webインターフェース|`zabbix` |PostgreSQLデータベースパスワード。|
|`POSTGRES_DB`|サーバー<br>Webインターフェース|Zabbixサーバー: `zabbix`<br> Zabbixプロキシ: 'zabbix_proxy' |Zabbixデータベース名。|
|`PHP_TZ`|Webインターフェース|`Europe/Riga`|PHP形式のタイムゾーン。サポートされているタイムゾーンの完全なリストは、[php.net](http://php.net/manual/en/timezones.php)で入手できます。|
|`ZBX_SERVER_NAME`|Webインターフェース|`Zabbix Docker`|Webインターフェースの右上隅に表示されるZabbixインストール名。|
|`ZBX_JAVAGATEWAY_ENABLE`|サーバー<br>プロキシ|`false`|Zabbix Javaゲートウェイとの通信を有効にして、Java関連のチェックを収集します。|
|`ZBX_ENABLE_SNMP_TRAPS`|サーバー<br>プロキシ|`false`|SNMPトラップ機能を有効にします。**zabbix-snmptraps**インスタンスと、共有ボリューム*/var/lib/zabbix/snmptraps*がZabbixサーバーまたはZabbixプロキシに必要です。|

[comment]: # ({/47a27dda-de9f41d4})

[comment]: # ({4a57d31e-7d10f7dc})
##### ボリューム

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

|ボリューム|<|説明|
|-|---------|----------------------------------------------|
|**Zabbixエージェント**|<|<|
| |*/etc/zabbix/zabbix\_agentd.d*|*\*.conf*ファイルを組み込み、`UserParameter`機能を使用してZabbixエージェントを拡張できます。|
|^|*/var/lib/zabbix/modules*|[LoadModule](/manual/extensions/loadablemodules)機能を使用して追加のモジュールをロードし、Zabbixエージェントを拡張できます。|
|^|*/var/lib/zabbix/enc*|TLS関連のファイルを格納するために使用されます。これらのファイル名は、`ZBX_TLSCAFILE`、`ZBX_TLSCRLFILE`、`ZBX_TLSKEY_FILE`、`ZBX_TLSPSKFILE`環境変数を使用して指定されます。|
|**Zabbixサーバー**|<|<|
| |*/usr/lib/zabbix/alertscripts*|カスタムアラートスクリプトに使用されます。 [zabbix\_server.conf](/manual/appendix/config/zabbix_server)の`AlertScriptsPath`パラメーターです。|
|^|*/usr/lib/zabbix/externalscripts*|[外部チェック](/manual/config/items/itemtypes/external)に使用されます。 [zabbix\_server.conf](/manual/appendix/config/zabbix_server)の`ExternalScripts`パラメーターです。|
|^|*/var/lib/zabbix/modules*|[LoadModule](/manual/extensions/loadablemodules)機能を使用して追加のモジュールをロードし、Zabbixサーバーを拡張できます。|
|^|*/var/lib/zabbix/enc*|TLS関連のファイルを格納するために使用されます。これらのファイル名は、`ZBX_TLSCAFILE`、`ZBX_TLSCRLFILE`、`ZBX_TLSKEY_FILE`、`ZBX_TLSPSKFILE`環境変数を使用して指定されます。|
|^|*/var/lib/zabbix/ssl/certs*|クライアント認証用のSSLクライアント証明書ファイルの格納場所として使用されます。zabbix\_server.confの`SSLCertLocation`パラメーターです。|
|^|*/var/lib/zabbix/ssl/keys*|クライアント認証用のSSL秘密鍵ファイルの格納場所として使用されます。 [zabbix\_server.conf](/manual/appendix/config/zabbix_server)の`SSLKeyLocation`パラメーターです。|
|^|*/var/lib/zabbix/ssl/ssl\_ca*|SSL サーバー証明書検証用の認証局(CA)ファイルの格納場所として使用されます。 [zabbix\_server.conf](/manual/appendix/config/zabbix_server)の`SSLCALocation`パラメーターです。|
|^|*/var/lib/zabbix/snmptraps*|snmptraps.logファイルの場所として使用されます。 zabbix-snmptrapsコンテナによって共有され、Zabbixサーバーの新しいインスタンスを作成するときに、volumes\_from Dockerオプションを使用して継承される可能性があります。共有ボリュームを使用し、`ZBX_ENABLE_SNMP_TRAPS`環境変数を'true'に切り替えることで、SNMPトラップ処理機能を有効にすることができます。|
|^|*/var/lib/zabbix/mibs*|新しいMIBファイルを追加できます。サブディレクトリはサポートしていません。すべてのMIBを`/var/lib/zabbix/mibs`に配置する必要があります。|
|**Zabbixプロキシ**|<|<|
| |*/usr/lib/zabbix/externalscripts*|[外部チェック](/manual/config/items/itemtypes/external)によって使用されます。[zabbix\_proxy.conf](/manual/appendix/config/zabbix_proxy)の`ExternalScripts`パラメーターです。|
|^|*/var/lib/zabbix/db_data/*| 外部デバイスにデータベースファイルを保存できます。SQLite3を使用するZabbixプロキシでのみサポートしています。|
|^|*/var/lib/zabbix/modules*|[LoadModule](/manual/extensions/loadablemodules)機能を使用して追加のモジュールをロードし、Zabbixサーバーを拡張できます。|
|^|*/var/lib/zabbix/enc*|TLS関連のファイルを格納するために使用されます。これらのファイル名は、`ZBX_TLSCAFILE`、`ZBX_TLSCRLFILE`、`ZBX_TLSKEY_FILE`、`ZBX_TLSPSKFILE`環境変数を使用して指定されます。|
|^|*/var/lib/zabbix/ssl/certs*|クライアント認証用のSSLクライアント証明書ファイルの格納場所として使用されます。[zabbix\_proxy.conf](/manual/appendix/config/zabbix_proxy)の`SSLCertLocation`パラメーターです。|
|^|*/var/lib/zabbix/ssl/keys*|クライアント認証用のSSL秘密鍵ファイルの格納場所として使用されます。[zabbix\_proxy.conf](/manual/appendix/config/zabbix_proxy)の`SSLKeyLocation`パラメーターです。|
|^|*/var/lib/zabbix/ssl/ssl\_ca*|SSLサーバー証明書検証用の認証局(CA)ファイルの格納場所として使用されます。[zabbix\_proxy.conf](/manual/appendix/config/zabbix_proxy)の`SSLCALocation`パラメーターです。|
|^|*/var/lib/zabbix/snmptraps*|snmptraps.logファイルの場所として使用されます。zabbix-snmptrapsコンテナによって共有され、Zabbixサーバーの新しいインスタンスを作成するときに、volumes\_from Dockerオプションを使用して継承される可能性があります。共有ボリュームを使用し、`ZBX_ENABLE_SNMP_TRAPS`環境変数を'true'に切り替えることで、SNMPトラップ処理機能を有効にすることができます。|
|^|*/var/lib/zabbix/mibs*|新しいMIBファイルを追加できます。サブディレクトリはサポートしていません。すべてのMIBを`/var/lib/zabbix/mibs`に配置する必要があります。|
|**Apache2 Webサーバーに基づくZabbix Webインターフェース**|<|<|
| |*/etc/ssl/apache2*|Zabbix WebインターフェースのHTTPSを有効にすることができます。Apache2 SSL接続用に準備された`ssl.crt`ファイルと`ssl.key`ファイルの2つが格納されている必要があります。|
|**Nginx Webサーバーに基づくZabbix Webインターフェース**|<|<|
| |*/etc/ssl/nginx*|Zabbix WebインターフェースのHTTPSを有効にすることができます。Nginx SSL接続用に準備された`ssl.crt`と`ssl.key`および`dhparam.pem`が格納されている必要があります。|
|**Zabbix snmpトラップ**|<|<|
| |*/var/lib/zabbix/snmptraps*|受信したSNMPトラップで名前が付けられた`snmptraps.log`ログファイルが格納されます。|
|^|*/var/lib/zabbix/mibs*|新しいMIBファイルを追加できます。サブディレクトリはサポートしていません。すべてのMIBを`/var/lib/zabbix/mibs`に配置する必要があります。|

詳細については、Docker HubのZabbix公式リポジトリを参照してください。

[comment]: # ({/4a57d31e-7d10f7dc})

[comment]: # ({47440c7d-492bd3ba})
##### 例

**例 1**

この例では、MySQLデータベースのサポート、Nginx Webサーバーに基づくZabbix Webインターフェース、およびZabbix Javaゲートウェイを備えたZabbixサーバーを実行する方法を示します。

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 \
          --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.2-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.2-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.2-latest


**例 2**

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

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 SNMPトラップインスタンスを起動します。

    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.2-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.2-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.2-latest


**例 3**

この例では、MySQLデータベースのサポート、Nginx Webサーバーに基づくZabbix Webインターフェース、およびRed Hat 8上の`podman`を使用したZabbix Javaゲートウェイを備えたZabbixサーバーを実行する方法を示します。

1\. `zabbix`という名前と公開ポート (Webインターフェース、Zabbixサーバートラッパー)を使用して新しいPodを作成します。

    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-70: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

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

5\. Zabbix Javaゲートウェイコンテナを起動します。

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

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

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

[comment]: # ({/47440c7d-492bd3ba})

[comment]: # ({661e80e9-c443c22e})
### Docker Compose
あるいは、Docker Composeプラグインを使用してZabbixをインストールすることもできます。
マルチコンテナZabbixコンポーネントを定義、実行するためのComposeファイルは、GitHubの公式[Zabbix Dockerリポジトリ](https://github.com/zabbix/zabbix-docker)で入手できます。

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

これらのComposeファイルは例として追加され、オーバーロードされています。 たとえば、MySQLおよびSQLite3をサポートするプロキシが含まれています。

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

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

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

    git checkout 7.2

構成ファイルを作成し、コンテナを作成して起動します。

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

上記のコマンドの`docker-compose_v3_alpine_mysql_latest.yaml`を必要な構成ファイルに置き換えます。

次のオプションが利用可能です。

|ファイル名|説明|
|--|--------|
|`docker-compose_v3_alpine_mysql_latest.yaml`|MySQLデータベースをサポートするAlpine Linux上で最新バージョンのZabbix 7.2コンポーネントを実行します。|
|`docker-compose_v3_alpine_mysql_local.yaml`|Zabbix 7.2の最新バージョンをローカルにビルドし、MySQLデータベースをサポートするAlpine Linux上でZabbixコンポーネントを実行します。|
|`docker-compose_v3_alpine_pgsql_latest.yaml`|PostgreSQLデータベースをサポートするAlpine Linux上で最新バージョンのZabbix 7.2コンポーネントを実行します。|
|`docker-compose_v3_alpine_pgsql_local.yaml`|Zabbix 7.2の最新バージョンをローカルにビルドし、PostgreSQLデータベースをサポートするAlpine Linux上でZabbixコンポーネントを実行します。|
|`docker-compose_v3_ol_mysql_latest.yaml`|MySQLデータベースをサポートするOracle Linux上で最新バージョンのZabbix 7.2コンポーネントを実行します。|
|`docker-compose_v3_ol_mysql_local.yaml`|Zabbix 7.2の最新バージョンをローカルにビルドし、MySQLデータベースをサポートするOracle Linux上でZabbixコンポーネントを実行します。|
|`docker-compose_v3_ol_pgsql_latest.yaml`|PostgreSQLデータベースをサポートするOracle Linux上で最新バージョンのZabbix 7.2コンポーネントを実行します。|
|`docker-compose_v3_ol_pgsql_local.yaml`|Zabbix 7.2の最新バージョンをローカルでビルドし、PostgreSQLデータベースをサポートするOracle Linux上でZabbixコンポーネントを実行します。|
|`docker-compose_v3_ubuntu_mysql_latest.yaml`|MySQLデータベースをサポートするUbuntu 22.04上で 最新バージョンのZabbix 7.2コンポーネントを実行します。|
|`docker-compose_v3_ubuntu_mysql_local.yaml`|Zabbix 7.2の最新バージョンをローカルにビルドし、MySQLデータベースをサポートするUbuntu 22.04上でZabbixコンポーネントを実行します。|
|`docker-compose_v3_ubuntu_pgsql_latest.yaml`|PostgreSQLデータベースをサポートするUbuntu 22.04上で最新バージョンのZabbix 7.2コンポーネントを実行します。|
|`docker-compose_v3_ubuntu_pgsql_local.yaml`|Zabbix 7.2の最新バージョンをローカルにビルドし、PostgreSQLデータベースをサポートするUbuntu 22.04上でZabbixコンポーネントを実行します。|

[comment]: # ({/661e80e9-c443c22e})

[comment]: # ({549510ed-52e39127})
#### ストレージ

Composeファイルは、ホストマシン上のローカルストレージをサポートするように構成されています。
Docker Composeは、Composeファイルを使用してZabbixコンポーネントを実行するときに、Composeファイルのあるフォルダーに`zbx_env`ディレクトリを作成します。
このディレクトリには、[ボリューム](#ボリューム)セクションで説明したものと同じ構造と、データベースストレージ用のディレクトリが含まれます。

`/etc/localtime`および`/etc/timezone`ファイルに対して読み取り専用モードのボリュームもあります。

[comment]: # ({/549510ed-52e39127})

[comment]: # ({ac4ddf91-0be3c140})
#### 環境変数

変数ファイルは、`.env_<コンポーネントの種類>`という名前構造を持ち、*env_vars*[ディレクトリ](https://github.com/zabbix/zabbix-docker/tree/trunk/env_vars)にあります。変数の名前と利用可能な選択の詳細については、[環境変数](#環境変数)を参照してください。

[comment]: # ({/ac4ddf91-0be3c140})

[comment]: # ({ca4005c6-ad55959c})
#### 例

**例 1**

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

このコマンドは、各Zabbixコンポーネントの最新のZabbix 7.2イメージをダウンロードし、デタッチモードで実行します。

::: noteimportant
github.comの公式Zabbixリポジトリから`.env_<コンポーネントの種類>`ファイルをComposeファイルとともにダウンロードすることを忘れないでください。
:::

**例 2**

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

このコマンドは、ベースイメージUbuntu 22.04 (jammy)をダウンロードし、Zabbix 7.2コンポーネントをローカルでビルドして、デタッチモードで実行します。

[comment]: # ({/ca4005c6-ad55959c})
