[comment]: # ({857906ba-e1f5ce3f})
# 3 コンテナからのアップグレード

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

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

このセクションでは、Zabbix **7.4** のコンテナへ正常に[アップグレード](/manual/installation/upgrade)するために必要な手順について説明します。

以下の手順は、それぞれ別に用意されています。

-   [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 サービスは稼働させたままにし、`docker compose down zabbix-server` を実行して `zabbix-server` サービスのみを停止し、その後 `docker compose up -d zabbix-server` を実行してください。
<br><br>
または、この変数を設定ファイルに設定することもできます。
:::

データベースのサイズによっては、7.4 へのデータベースアップグレードに長時間かかる場合があります。

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

[comment]: # ({c1a29906-27011b38})
### Zabbixコンポーネントイメージのアップグレード

この手順では、Zabbixコンポーネントのコンテナのベースとして使用している Docker イメージをアップグレードします。

以下の手順では、例として 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 deployment)](/manual/installation/containers#docker-manual-deployment) を参照してください。
:::

6\. コンテナログを確認して、アップグレードが成功したことを検証します:

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

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

[comment]: # ({06d2b8ca-d707ad1d})
### Docker Composeファイルのアップグレード

この手順では、Zabbixコンポーネントのデプロイに使用する Docker Compose ファイルをアップグレードします。  
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\. 更新された Docker Compose ファイルを使用して Zabbix コンポーネントをデプロイします:

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