[comment]: # ({e62e1497-e62e1497})
# 5. Установка из контейнеров 

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

[comment]: # ({52adc319-a3ac452e})
### Обзор

В этом разделе описывается, как развернуть Zabbix с помощью Docker или Docker Compose.

[Docker Compose](#docker-compose) — самый быстрый способ развернуть Zabbix.
Считывается конфигурационный файл, и автоматически запускаются все контейнеры, составляющие полную инсталляцию Zabbix, в правильном порядке.

[Docker (ручное развёртывание)](#docker-ручное-развёртывание) позволяет достичь того же результата путём поэтапного развёртывания каждого компонента.

::: noteimportant
Начиная с версии Zabbix 6.0, во время установки необходимо создавать детерминированные триггеры.
Если для MySQL/MariaDB включено ведение бинарного журнала, для этого требуются права суперпользователя или настройка переменной/параметра конфигурации `log_bin_trust_function_creators = 1`.
Инструкции по установке переменной смотрите в [Скриптах создания базы данных](/manual/appendix/install/db_scripts#mysqlmariadb).
<br><br>
Обратите внимание, что при запуске из консоли переменная будет установлена только временно и будет удалена при перезапуске Docker.
В этом случае оставьте службу SQL запущенной, остановите только службу `zabbix-server`, выполнив `docker compose down zabbix-server`, а затем `docker compose up -d zabbix-server`.
<br><br>
В качестве альтернативы вы можете установить эту переменную в файле конфигурации.
:::

[comment]: # ({/52adc319-a3ac452e})

[comment]: # ({b13b686a-fba82ded})
### Предварительные требования

Прежде чем начать, убедитесь, что в вашей системе установлен Docker (версия 1.12.0 или более поздняя).
Если это не так, следуйте [руководству по установке Docker \[en\]](https://docs.docker.com/engine/install/).
Для развёртывания с помощью Docker Compose также требуется Docker Compose (версия 2.24.0 или более поздняя).

Для работы некоторых компонентов Zabbix на хосте, где запущен Docker, необходимо открыть определённые порты (например, 10051/TCP для сервера Zabbix, 162/UDP для SNMP-трапов).
Полный список портов, используемых компонентами Zabbix, смотрите в разделе [Требования](/manual/installation/requirements#номера-портов-по-умолчанию).
Для сервера и агента Zabbix порт по умолчанию можно изменить, установив в соответствующем контейнере переменную окружения `ZBX_LISTENPORT`.

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

[comment]: # ({6c7779eb-f9acea87})
### Доступные образы Docker

Zabbix предоставляет образ Docker для каждого компонента Zabbix, все они опубликованы на [Docker Hub](https://hub.docker.com/u/zabbix).
Каждый образ используется для создания контейнера, выполняющего этот компонент.

|Компонент Zabbix|Образ Docker|
|--|--------|
|Агент|[zabbix/zabbix-agent](https://hub.docker.com/r/zabbix/zabbix-agent/)|
|Агент 2|[zabbix/zabbix-agent2](https://hub.docker.com/r/zabbix/zabbix-agent2)|
|Сервер (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/)|
|Веб-интерфейс (Apache + MySQL)|[zabbix/zabbix-web-apache-mysql](https://hub.docker.com/r/zabbix/zabbix-web-apache-mysql/)|
|Веб-интерфейс (Apache + PostgreSQL)|[zabbix/zabbix-web-apache-pgsql](https://hub.docker.com/r/zabbix/zabbix-web-apache-pgsql/)|
|Веб-интерфейс (Nginx + MySQL)|[zabbix/zabbix-web-nginx-mysql](https://hub.docker.com/r/zabbix/zabbix-web-nginx-mysql/)|
|Веб-интерфейс (Nginx + PostgreSQL)|[zabbix/zabbix-web-nginx-pgsql](https://hub.docker.com/r/zabbix/zabbix-web-nginx-pgsql/)|
|Прокси (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/)|
|Java gateway|[zabbix/zabbix-java-gateway](https://hub.docker.com/r/zabbix/zabbix-java-gateway/)|
|Веб-сервис|[zabbix/zabbix-web-service](https://hub.docker.com/r/zabbix/zabbix-web-service)|
|SNMP трапы|[zabbix/zabbix-snmptraps](https://hub.docker.com/r/zabbix/zabbix-snmptraps/)|

::: noteclassic
Для использования [SNMP трапов](/manual/config/items/itemtypes/snmptrap) контейнер SNMP трапов должен использовать общий том с сервером Zabbix или контейнером прокси (см. [как использовать этот образ \[en\]](https://hub.docker.com/r/zabbix/zabbix-snmptraps#how-to-use-this-image) на Docker Hub и [пример](#развёртывание-zabbix-сервера-postgresql-с-snmp-трапами) ниже).
:::

Все образы компонентов Zabbix на Docker Hub основаны на последних мажорных версиях [поддерживаемых операционных систем](#теги-образов).
Эти образы автоматически пересобираются при обновлении базовых образов ОС.

[comment]: # ({/6c7779eb-f9acea87})

[comment]: # ({c6474561-e498c2aa})
#### Теги образов

Каждый образ поддерживает теги для выбора базовой операционной системы и версии Zabbix:

```default
zabbix/<image>:<os>-<version>
```

Поддерживаемые значения `<os>`:

-   `alpine` - Alpine Linux
-   `ubuntu` - Ubuntu
-   `centos` - CentOS Stream
-   `ol` - Oracle Linux
-   `ltsc2022` - Windows 11 LTSC 2022 (только агент Zabbix)

Поддерживаемые значения `<version>`:

-   `latest` - Последняя стабильная версия Zabbix в Alpine Linux
-   `<os>-latest` - Последняя стабильная версия Zabbix для выбранной ОС
-   `<os>-trunk` - Последняя сборка разработки (nightly) для выбранной ОС
-   `<os>-X.X-latest` - Последний минорный выпуск Zabbix для указанной мажорной версии Zabbix на выбранной ОС
-   `<os>-X.X.*` - Конкретный минорный выпуск Zabbix на выбранной ОС

Примеры:

```bash
# Последний стабильный прокси Zabbix (SQLite3) в Alpine Linux:
docker pull zabbix/zabbix-proxy-sqlite3:latest

# Последний стабильный прокси Zabbix (SQLite3) в Ubuntu:
docker pull zabbix/zabbix-proxy-sqlite3:ubuntu-latest

# Последняя сборка разработки (nightly) сервера Zabbix (MySQL) в Ubuntu:
docker pull zabbix/zabbix-server-mysql:ubuntu-trunk

# Последний минорный выпуск 7.4 сервера Zabbix (MySQL) в Alpine Linux:
docker pull zabbix/zabbix-server-mysql:alpine-7.4-latest

# Версия 7.4.1 сервера Zabbix (MySQL) в Alpine Linux:
docker pull zabbix/zabbix-server-mysql:alpine-7.4.1
```

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

[comment]: # ({af1bb4ea-c443c22e})
### Docker Compose

Docker Compose — это самый быстрый способ развернуть Zabbix.
Он читает файл конфигурации (Compose file) и выполняет всю настройку: загружает образы Docker, создает внутреннюю сеть между контейнерами, настраивает хранилище, инициализирует базу данных и запускает все в правильном порядке.

Репозиторий [официальных Dockerfile Zabbix](https://github.com/zabbix/zabbix-docker) предоставляет готовые к использованию файлы Docker Compose и систему конфигурации на основе `.env`, поддерживающую разные операционные системы, серверные части баз данных и конфигурацию компонентов Zabbix.

1\. Клонируйте репозиторий, перейдите в него и переключитесь на версию 7.4:

```bash
git clone https://github.com/zabbix/zabbix-docker.git
cd zabbix-docker
git checkout 7.4
```

2\. (Необязательно) Настройте развертывание с помощью [переменных окружения](#environment-variables).
Этот шаг можно пропустить для конфигурации по умолчанию.

3\. Разверните конфигурацию по умолчанию — сервер Zabbix, веб-интерфейс (работающий на Nginx) и серверную часть базы данных (MySQL или PostgreSQL), каждый в своем контейнере на Alpine Linux.

```bash
# С MySQL в качестве базы данных:
docker compose -f ./compose.yaml up -d

# С PostgreSQL в качестве базы данных:
docker compose -f ./compose_pgsql.yaml up -d
```

После того как контейнеры будут запущены и начнут работать (обычно в течение 1–3 минут), сервер Zabbix будет запущен, а веб-интерфейс станет доступен по адресу `http://localhost`.

::: noteclassic
Используйте `docker compose ps`, чтобы проверить состояние контейнеров.
Все контейнеры (кроме контейнера `zabbix-docker-server-db-init-1`) должны иметь статус `Up`.
Если какой-либо контейнер имеет статус `Exited`, проверьте его журналы с помощью `docker logs <container-name>`.
:::

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

[comment]: # ({8b4e2b4d-de9f41d4})
#### Переменные окружения

Поведение Docker Compose и конфигурацию компонентов Zabbix можно настраивать с помощью переменных окружения.

**Переменные уровня Compose** (определены в файле [`.env`](https://github.com/zabbix/zabbix-docker/blob/7.4/.env)) управляют тем, какие образы Docker, порты и диапазоны IP сети используются.
Вы можете использовать эти переменные inline перед командой `docker compose` или отредактировать файл `.env`.

Например, следующая команда разворачивает полную многоконтейнерную конфигурацию Zabbix с использованием образа на базе Ubuntu (вместо стандартного Alpine Linux) и предоставляет доступ к веб-интерфейсу через Nginx на пользовательских портах HTTP (8282) и HTTPS (8443):

```bash
OS=ubuntu \
ZABBIX_WEB_NGINX_HTTP_PORT=8282 \
ZABBIX_WEB_NGINX_HTTPS_PORT=8443 \
docker compose -f ./compose.yaml up -d
```

**Переменные уровня компонентов** (определены в файлах [`env_vars/.env_<component>`](https://github.com/zabbix/zabbix-docker/blob/7.4/env_vars/)) управляют конфигурацией компонентов Zabbix.
Отредактируйте соответствующий файл `.env_<component>` перед выполнением команды `docker compose`.

Например, вы можете изменить количество пассивных poller'ов сервера Zabbix и параметры кэша, а также настроить часовой пояс веб-интерфейса, отредактировав следующие переменные:

```ini
# env_vars/.env_srv
ZBX_STARTPOLLERS=20
ZBX_CACHESIZE=64M
ZBX_HISTORYCACHESIZE=32M

# env_vars/.env_web
PHP_TZ=Europe/Paris
```

::: noteclassic
Переменные окружения уровня компонентов соответствуют параметрам конфигурации компонентов Zabbix, но используют другой стиль именования (например, `ZBX_STARTPOLLERS` соответствует [`StartPollers`](/manual/appendix/config/zabbix_server#startpollers)).
Некоторые переменные зависят от Docker, а некоторые параметры конфигурации изменить нельзя (например, `PIDFile` и `LogType`).
При использовании переменных окружения см. раздел *Environment variables* в описании [образа Docker](#available-docker-images) каждого компонента на Docker Hub.
:::

[comment]: # ({/8b4e2b4d-de9f41d4})

[comment]: # ({15680aeb-7d10f7dc})
#### Тома

Docker Compose сохраняет постоянные данные в каталоге `zbx_env/`, созданном вместе с файлом Compose.
Этот каталог сохраняет данные компонентов при перезапуске и обновлении контейнера.

Содержимое `zbx_env/` предопределено для образа каждого компонента. Например:

-   `zbx_env/etc/` — используется [контейнером веб-интерфейса Zabbix \[en\]](https://hub.docker.com/r/zabbix/zabbix-web-nginx-mysql#allowed-volumes-for-the-zabbix-web-interface-container)
-   `zbx_env/usr/` and `zbx_env/var/` — используется [контейнером Zabbix сервера \[en\]](https://hub.docker.com/r/zabbix/zabbix-server-mysql#allowed-volumes-for-the-zabbix-server-container)

Для получения более подробной информации о каждом томе смотрите раздел *Allowed volumes \[en\]* в описании каждого компонента [образа Docker](#доступные-образы-docker) на Docker Hub.

[comment]: # ({/15680aeb-7d10f7dc})

[comment]: # ({d348b483-fb9850d6})
#### Makefile

Репозиторий Zabbix Dockerfiles также предоставляет [Makefile](https://github.com/zabbix/zabbix-docker/blob/7.4/Makefile) как сокращение для типовых задач Docker Compose.
Вместо полного команды `docker compose` вы можете использовать более короткие команды `make` (выполните `make help`, чтобы увидеть доступные параметры):

```bash
# Развертывание по умолчанию (сервер Zabbix, веб-интерфейс, MySQL, все на Alpine Linux)
make up

# Пользовательское развертывание (сервер Zabbix, веб-интерфейс с пользовательскими портами Nginx, PostgreSQL, все на Ubuntu)
make up \
  OS=ubuntu \
  DB=pgsql \
  ZABBIX_WEB_NGINX_HTTP_PORT=8282 \
  ZABBIX_WEB_NGINX_HTTPS_PORT=8443
```

::: noteimportant
При остановке или удалении контейнеров всегда указывайте тот же тип базы данных, который был развернут (например, `make down DB=pgsql`).
:::

По умолчанию `make up` запускает только минимальный набор служб (сервер Zabbix, веб-интерфейс и база данных).
Это делает настройку более легкой и позволяет не запускать компоненты, которые могут не понадобиться.
Чтобы включить дополнительные компоненты, можно использовать следующие [профили Compose](https://docs.docker.com/compose/how-tos/profiles/):

```bash
# Развертывание по умолчанию + агент Zabbix, Java gateway, веб-служба и SNMP traps:
make up COMPOSE_PROFILES=full

# COMPOSE_PROFILES=full + прокси Zabbix (MySQL и SQLite3):
make up COMPOSE_PROFILES=all
```

[comment]: # ({/d348b483-fb9850d6})

[comment]: # ({1c8231dd-0b4b68c7})
### Docker (ручное развертывание)

Используйте ручное развертывание, если хотите развернуть Zabbix поэтапно, запускать отдельные компоненты, интегрировать их с существующей средой или использовать альтернативную среду выполнения контейнеров, например Podman.

Например, чтобы развернуть прокси Zabbix, выполните следующую команду:

```bash
docker run --name zabbix-proxy-sqlite3 \
  -e ZBX_SERVER_HOST=192.0.2.1 \
  -e ZBX_PROXYMODE=0 \
  -e ZBX_HOSTNAME=zabbix-proxy-sqlite3 \
  -v zabbix-proxy-data:/var/lib/zabbix/db_data \
  --init \
  -d \
  zabbix/zabbix-proxy-sqlite3:alpine-7.4-latest
```

Эта команда:

-   Загружает [образ Docker](#available-docker-images) `zabbix/zabbix-proxy-sqlite3:alpine-7.4-latest`.

-   Создает и запускает контейнер `zabbix-proxy-sqlite3` на основе образа Docker (с флагами [`--init`](https://docs.docker.com/reference/cli/docker/container/run/#init) и [`-d`](https://docs.docker.com/reference/cli/docker/container/run/#detach)).

-   Настраивает параметр Zabbix proxy [`Server`](/manual/appendix/config/zabbix_proxy#server) через переменную среды `ZBX_SERVER_HOST`.
    Этот параметр задает IP-адрес сервера Zabbix, с которого прокси будет получать данные конфигурации и на который будет отправлять собранные данные.
    Обратите внимание, что другие переменные, необходимые для работы активного прокси, используют значения по умолчанию и могут быть опущены.

::: noteclassic
Переменные среды соответствуют параметрам конфигурации компонентов Zabbix, но используют другой стиль именования (например, `ZBX_SERVER_HOST` соответствует [`Server`](/manual/appendix/config/zabbix_proxy#server)).
Некоторые переменные являются специфичными для Docker, а некоторые параметры конфигурации изменить нельзя (например, `PIDFile` и `LogType`).
При использовании переменных среды см. раздел *Environment variables* в описании [образа Docker](#available-docker-images) каждого компонента на Docker Hub.
:::

-   Подключает управляемое Docker хранилище (например, `/var/lib/docker/volumes/zabbix-proxy-data/`) к каталогу `/var/lib/zabbix` контейнера, чтобы данные прокси Zabbix сохранялись постоянно, даже если контейнер будет удален.

::: noteclassic
Дополнительные сведения о каждом томе см. в разделе *Allowed volumes* в описании [образа Docker](#available-docker-images) каждого компонента на Docker Hub.
:::

После развертывания контейнера прокси Zabbix вы можете перейти к [добавлению прокси](/manual/distributed_monitoring/proxies#configuration) в веб-интерфейсе Zabbix и [настройке узлов сети](/manual/config/hosts/host#configuration) для мониторинга через этот прокси.

Приведенные ниже примеры охватывают еще три сценария развертывания:

-   сервер Zabbix (MySQL) с Java gateway
-   сервер Zabbix (PostgreSQL) с SNMP traps
-   сервер Zabbix (MySQL) с Java gateway на RHEL 8

Дополнительные примеры см. в описании [образа Docker](#available-docker-images) каждого компонента на Docker Hub.

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

[comment]: # ({fecc21f2-492bd3ba})
#### Развертывание сервера Zabbix (MySQL) с Java gateway

В этом примере показано, как развернуть сервер Zabbix с бэкендом MySQL, Java gateway для [мониторинга JMX](/manual/config/items/itemtypes/jmx_monitoring) и веб-интерфейсом на базе Nginx.

1\. Создайте выделенную Docker-сеть, чтобы все контейнеры компонентов Zabbix могли обращаться друг к другу по имени контейнера:

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

2\. Запустите пустой контейнер сервера MySQL (замените `zabbix_pwd` и `root_pwd` на надежные пароли):

```bash
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=utf8mb4 --collation-server=utf8mb4_bin \
  --default-authentication-plugin=mysql_native_password
```

::: noteimportant
Если вы используете Docker-образ MySQL 8.4 или более поздней версии, замените `--default-authentication-plugin=mysql_native_password` на `--authentication-policy=caching_sha2_password`.
<br><br>
MySQL должен быть полностью инициализирован до запуска контейнера сервера Zabbix на шаге 4, иначе схема Zabbix может загрузиться некорректно.
Чтобы убедиться, что MySQL готов, выполните `docker logs mysql-server` и продолжайте только после появления строки `/usr/sbin/mysqld: ready for connections`.
:::

3\. Запустите контейнер Zabbix Java gateway:

```bash
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 (замените `zabbix_pwd` и `root_pwd` на те же пароли, что использовались на шаге 2):

```bash
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
```

::: noteimportant
После запуска контейнера сервера Zabbix дождитесь завершения инициализации схемы базы данных сервером Zabbix.
Чтобы убедиться, что он готов, выполните `docker logs zabbix-server-mysql` и продолжайте только после того, как строка `Creating 'zabbix' schema in MySQL` перестанет отображаться.
:::

5\. Запустите контейнер веб-интерфейса Zabbix и свяжите его с контейнерами сервера Zabbix и сервера MySQL (замените `zabbix_pwd` и `root_pwd` на те же пароли, что использовались на шаге 2):

```bash
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
```

После запуска контейнеров (обычно в течение 1–3 минут) сервер Zabbix будет запущен, а веб-интерфейс будет доступен по адресу `http://localhost`.

#### Развертывание сервера Zabbix (PostgreSQL) с SNMP traps

В этом примере показано, как развернуть сервер Zabbix с бэкендом PostgreSQL, [SNMP traps](/manual/config/items/itemtypes/snmptrap) и веб-интерфейсом на базе Nginx.

1\. Создайте выделенную Docker-сеть, чтобы все контейнеры компонентов Zabbix могли обращаться друг к другу по имени контейнера:

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

2\. Запустите пустой контейнер сервера PostgreSQL (замените `zabbix_pwd` на надежный пароль):

```bash
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 traps:

```bash
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 и контейнером SNMP traps (замените `zabbix_pwd` на тот же пароль, что использовался на шаге 2):

```bash
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
```

::: noteimportant
После запуска контейнера сервера Zabbix дождитесь завершения инициализации схемы базы данных сервером Zabbix.
Чтобы убедиться, что он готов, выполните `docker logs zabbix-server-pgsql` и продолжайте только после того, как строка `Creating 'zabbix' schema in PostgreSQL` перестанет отображаться.
:::

5\. Запустите контейнер веб-интерфейса Zabbix и свяжите его с контейнерами сервера Zabbix и сервера PostgreSQL (замените `zabbix_pwd` на тот же пароль, что использовался на шаге 2):

```bash
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
```

После запуска контейнеров (обычно в течение 1–3 минут) сервер Zabbix будет запущен, а веб-интерфейс будет доступен по адресу `http://localhost`.

#### Развертывание сервера Zabbix (MySQL) с Java gateway на RHEL 8–10

В этом примере показано, как развернуть сервер Zabbix с бэкендом MySQL, Java gateway для [мониторинга JMX](/manual/config/items/itemtypes/jmx_monitoring) и веб-интерфейсом на базе Nginx, причем все компоненты работают в Red Hat Enterprise Linux 8, 9 или 10.

В Red Hat Enterprise Linux рекомендуется использовать Podman вместо Docker.
Podman работает аналогично Docker, но не требует фоновой службы, запущенной от root, что делает его более подходящим для сред Red Hat.

1\. Создайте новый pod с именем `zabbix` и открытыми портами для веб-интерфейса Zabbix и trapper сервера Zabbix:

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

2\. (Необязательно) Запустите контейнер агента Zabbix в pod `zabbix`:

```bash
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/` на хосте RHEL:

```bash
mkdir -p ./mysql
```

4\. Запустите пустой контейнер сервера MySQL (замените `zabbix_pwd` и `root_pwd` на надежные пароли):

```bash
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=utf8mb4 --collation-server=utf8mb4_bin \
  --default-authentication-plugin=mysql_native_password
```

::: noteimportant
Если вы используете Docker-образ MySQL 8.4 или более поздней версии, замените `--default-authentication-plugin=mysql_native_password` на `--authentication-policy=caching_sha2_password`.
<br><br>
MySQL должен быть полностью инициализирован до запуска контейнера сервера Zabbix на шаге 6, иначе схема Zabbix может загрузиться некорректно.
Чтобы убедиться, что MySQL готов, выполните `podman logs mysql-server` и продолжайте только после появления строки `/usr/sbin/mysqld: ready for connections`.
:::

5\. Запустите контейнер Zabbix Java gateway:

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

6\. Запустите контейнер сервера Zabbix (замените `zabbix_pwd` и `root_pwd` на те же пароли, что использовались на шаге 4):

```bash
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
```

7\. Запустите контейнер веб-интерфейса Zabbix (замените `zabbix_pwd` и `root_pwd` на те же пароли, что использовались на шаге 4):

```bash
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
```

::: noteclassic
Pod `zabbix` открывает порт `80/TCP` (HTTP) на хостовой машине из порта `8080/TCP` контейнера `zabbix-web-mysql`.
:::

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