[comment]: # ({fdf81d16-e1f5ce3f})
# Aggiornamento dai container

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

[comment]: # ({b238bbd2-236aea13})
### Panoramica

Questa sezione descrive i passaggi necessari per un [aggiornamento](/manual/installation/upgrade) riuscito ai container di Zabbix **8.0**.x.

Sono disponibili insiemi separati di istruzioni per:

-   [Aggiornamento dell'immagine dei componenti Zabbix](#zabbix-component-image-upgrade)
-   [Aggiornamento del file Docker Compose](#docker-compose-file-upgrade)

::: notewarning
Prima dell'aggiornamento, assicurarsi di leggere le [**note di aggiornamento**](/manual/installation/upgrade) pertinenti!
:::

::: noteimportant
Prima di avviare l'aggiornamento, verificare che gli utenti dispongano delle autorizzazioni necessarie sul database ai fini dell'aggiornamento.
<br><br>
Per gli aggiornamenti da Zabbix 6.0 o versioni precedenti, durante l'aggiornamento dovranno essere creati trigger deterministici.
Se la registrazione binaria è abilitata per MySQL/MariaDB, ciò richiede privilegi di superutente oppure l'impostazione della variabile/del parametro di configurazione `log_bin_trust_function_creators = 1`.
Per istruzioni su come impostare la variabile, vedere [Script di creazione del database](/manual/appendix/install/db_scripts#mysqlmariadb).
<br><br>
Si noti che, se eseguita da console, la variabile verrà impostata solo temporaneamente e verrà rimossa al riavvio di un Docker.
In questo caso, mantenere in esecuzione il servizio SQL, arrestare solo il servizio `zabbix-server` eseguendo `docker compose down zabbix-server` e quindi `docker compose up -d zabbix-server`.
<br><br>
In alternativa, è possibile impostare questa variabile nel file di configurazione.
:::

A seconda delle dimensioni del database, l'aggiornamento del database alla versione 8.0 potrebbe richiedere molto tempo.

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

[comment]: # ({63138e73-27011b38})
### Aggiornamento dell'immagine dei componenti Zabbix

Queste istruzioni aggiornano le immagini Docker utilizzate come base per i container dei componenti Zabbix.

I passaggi seguenti utilizzano un proxy Zabbix come esempio.
Sostituisci `zabbix-proxy-sqlite3` con il nome del container del tuo componente.

1\. Controlla tutti i container per identificarne i nomi e le versioni correnti delle immagini:

```bash
docker ps -a

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

2\. Scarica la nuova versione dell'immagine:

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

3\. Arresta il container del componente Zabbix:

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

4\. Rimuovi il container del componente Zabbix:

::: noteimportant
Assicurati di aver annotato tutti i flag di configurazione e i mount dei volumi utilizzati nel comando `docker run` originale prima di procedere, poiché saranno necessari per ricreare il container.
:::

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

5\. Avvia un nuovo container utilizzando l'immagine aggiornata:

```bash
docker run --name zabbix-proxy-sqlite3 \
  -e ZBX_SERVER_HOST=192.0.2.0 \
  -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-8.0-latest
```

::: noteclassic
Per ulteriori informazioni sull'esecuzione dei container Zabbix, vedi [Docker (distribuzione manuale)](/manual/installation/install/containers#docker-manual-deployment).
:::

6\. Verifica che l'aggiornamento sia riuscito controllando i log del container:

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

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

[comment]: # ({408f59dc-d707ad1d})
### Aggiornamento del file Docker Compose

Queste istruzioni aggiornano i file Docker Compose utilizzati per distribuire i componenti di Zabbix.
Seguire queste istruzioni se Zabbix è stato installato utilizzando [Docker Compose](/manual/installation/install/containers#docker-compose).

1\. Controllare tutti i container per identificarne i nomi e le versioni correnti delle immagini:

```bash
docker ps -a

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

2\. Accedere al repository Docker di Zabbix clonato in precedenza, scaricare gli ultimi aggiornamenti e passare al branch 8.0:

::: noteimportant
Se `.env`, `compose.yaml` o altri file nel repository locale sono stati modificati, un `git pull` potrebbe sovrascriverli.
Eseguire un backup di tutte le modifiche locali prima di eseguire questo passaggio.
:::

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

3\. Distribuire i componenti di Zabbix utilizzando il file Docker Compose aggiornato:

```bash
# Con MySQL come database:
docker compose -f ./compose.yaml up -d

# Con PostgreSQL come database:
docker compose -f ./compose_pgsql.yaml up -d
```

::: noteclassic
Dopo che tutti i container sono stati ricreati e avviati, potrebbero essere necessari da 1 a 3 minuti prima che la raccolta dei dati riprenda.
Per ulteriori informazioni sull'esecuzione dei container Zabbix, vedere [Docker Compose](/manual/installation/install/containers#docker-compose).
:::

4\. Verificare che l'aggiornamento sia stato completato correttamente controllando i log del container (sostituire `zabbix-docker-zabbix-server-1` con il nome del container del proprio componente):

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

[comment]: # ({/408f59dc-d707ad1d})
