[comment]: # ({857906ba-e1f5ce3f})
# 3. Обновление из контейнеров

[comment]: # ({/857906ba-e1f5ce3f})

[comment]: # ({c77bf434-236aea13})
### Обзор

В этом разделе описаны шаги, необходимые для успешного [обновления](/manual/installation/upgrade) контейнеров Zabbix до версии **7.4**.x.

Отдельные наборы инструкций доступны для:

-   [обновления образа компонента Zabbix](#zabbix-component-image-upgrade)
-   [обновления файла Docker Compose](#docker-compose-file-upgrade)

::: notewarning
Перед обновлением обязательно ознакомьтесь с соответствующими [**примечаниями к обновлению**](/manual/installation/upgrade)!
:::

::: noteimportant
Перед началом обновления убедитесь, что у пользователей есть необходимые права доступа к базе данных для выполнения обновления.
<br><br>
При обновлении с 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>
В качестве альтернативы вы можете задать эту переменную в файле конфигурации.
:::

В зависимости от размера базы данных обновление базы данных до версии 7.4 может занять много времени.

[comment]: # ({/c77bf434-236aea13})

[comment]: # ({c1a29906-27011b38})
### Обновление образа компонента Zabbix

Эти инструкции позволяют обновить образы Docker, которые используются в качестве основы для контейнеров компонентов Zabbix.

В приведенных ниже шагах в качестве примера используется прокси Zabbix.  
Замените `zabbix-proxy-sqlite3` на имя контейнера вашего компонента.

1\. Проверьте все контейнеры, чтобы определить их имена и текущие версии образов:

```bash
docker ps -a

# CONTAINER ID   IMAGE                                           (...) NAMES
# 5a0c2e3d02b4   zabbix/zabbix-proxy-sqlite3:alpine-7.2-latest   (...) zabbix-proxy-sqlite3
```

2\. Загрузите новую версию образа:

```bash
docker pull zabbix/zabbix-proxy-sqlite3:alpine-7.4-latest
```

3\. Остановите контейнер компонента Zabbix:

```bash
docker stop zabbix-proxy-sqlite3
```

4\. Удалите контейнер компонента Zabbix:

::: noteimportant
Перед продолжением убедитесь, что вы записали все флаги конфигурации и точки монтирования томов, использованные в исходной команде `docker run`, так как они понадобятся для повторного создания контейнера.
:::

```bash
docker rm zabbix-proxy-sqlite3
```

5\. Запустите новый контейнер, используя обновленный образ:

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

::: noteclassic
Дополнительные сведения о запуске контейнеров Zabbix см. в разделе [Docker (ручное развертывание)](/manual/installation/containers#docker-manual-deployment).
:::

6\. Убедитесь, что обновление прошло успешно, проверив журналы контейнера:

```bash
docker logs -f zabbix-proxy-sqlite3
```

[comment]: # ({/c1a29906-27011b38})

[comment]: # ({06d2b8ca-d707ad1d})
### Обновление файла Docker Compose

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

1\. Проверьте все контейнеры, чтобы определить их имена и текущие версии образов:

```bash
docker ps -a

# CONTAINER ID   IMAGE                                             (...) NAMES
# d095f486deef   zabbix/zabbix-server-mysql:alpine-7.2-latest      (...) zabbix-docker-zabbix-server-1
# 70627d833da0   zabbix/zabbix-web-nginx-mysql:alpine-7.2-latest   (...) zabbix-docker-zabbix-web-nginx-mysql-1
# aaaa664cc185   zabbix/zabbix-server-mysql:alpine-7.2-latest      (...) zabbix-docker-server-db-init-1
# 9ab3e77492ff   mysql:8.0-oracle                                  (...) zabbix-docker-mysql-server-1
```

2\. Перейдите в ранее клонированный репозиторий Zabbix Docker, получите последние обновления и переключитесь на ветку 7.4:

::: noteimportant
Если вы изменяли `.env`, `compose.yaml` или другие файлы в локальном репозитории, команда `git pull` может перезаписать их.
Сделайте резервную копию всех локальных изменений перед выполнением этого шага.
:::

```bash
cd zabbix-docker
git pull
git checkout 7.4
```

3\. Разверните компоненты Zabbix, используя обновленный файл Docker Compose:

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

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

::: noteclassic
После того как все контейнеры будут пересозданы и запущены, возобновление сбора данных может занять 1—3 минуты.
Дополнительные сведения о запуске контейнеров Zabbix см. в разделе [Docker Compose](/manual/installation/containers#docker-compose).
:::

4\. Убедитесь, что обновление прошло успешно, проверив журналы контейнера (замените `zabbix-docker-zabbix-server-1` на имя контейнера вашего компонента):

```bash
docker logs -f zabbix-docker-zabbix-server-1
```

[comment]: # ({/06d2b8ca-d707ad1d})
