[comment]: # translation:outdated

[comment]: # ({857906ba-e1f5ce3f})
# 3 从容器升级

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

[comment]: # ({fdbd582e-236aea13})
### 概述

本节描述了成功将 Zabbix **7.0**.x 容器
升级 [upgrade](/manual/installation/upgrade) 所需的步骤。

针对升级单个 Zabbix 组件[镜像](#zabbix-image-upgrade) 和 Docker [编排文件](#compose-files) 提供了不同的操作指南。

::: notewarning
升级前请务必阅读相关的 [**upgrade notes**](/manual/installation/upgrade)！
:::

::: noteimportant
开始升级前，请确认用户对数据库具有升级所需的权限。

对于从 Zabbix 6.0 或更早版本的升级，在升级过程中需要创建确定性触发器。
如果 MySQL/mariadb 启用了二进制日志记录，则需要超级用户权限或设置变量/配置参数 *log_bin_trust_function_creators = 1*。
有关设置该变量的说明，请参见 [mysqlmariadb](/manual/appendix/install/db_scripts#mysqlmariadb)。
请注意，如果从控制台执行，该变量仅临时设置，在 Docker 重启后将失效。
在这种情况下，请保持 SQL 服务运行，仅通过运行 'docker compose down zabbix-server' 然后 'docker compose up -d zabbix-server' 停止并重新启动 zabbix-server 服务。
或者，您可以在配置文件中设置此变量。
:::

根据数据库的大小，升级到 version 7.0 可能会耗时较长。

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

[comment]: # ({0bf4f4a9-27011b38})
### Zabbix镜像升级

以下步骤可用于升级任何 Zabbix 组件。将 `zabbix-server-mysql` 替换为所需的组件镜像名称。

1\. 检查当前镜像版本：

    docker inspect -f '{{ .Config.Image }}' zabbix-server-mysql

2\. 拉取所需镜像版本，例如：

    docker pull zabbix/zabbix-server-mysql:alpine-7.0-latest

`zabbix/zabbix-server-mysql:alpine-7.0-latest` 将拉取基于 Alpine Linux 的最新发布的小版本 version，该版本支持 MySQL，并且对应 Zabbix server 7.0。请将其替换为所需的 Docker 仓库名称和标签组合。有关可用选项列表，请参见 [docker](/manual/installation/containers#docker)。

3\. 停止容器：

    docker stop zabbix-server-mysql

4\. 删除容器：

    docker rm zabbix-server-mysql

5\. 执行 `docker run` 命令并附加其他参数以指定所需的 [环境变量](/manual/installation/containers#环境变量) 和/或 [卷](/manual/installation/containers#卷)，从而启动更新后的容器。

**配置示例**

使用 MySQL 的 Zabbix server：

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

使用 PostgreSQL 的 Zabbix server：

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

更多配置示例（包括其他 Zabbix 组件的示例）可在 [示例](/manual/installation/containers#示例) 页面上找到。

6\. 验证更新：

    docker logs -f zabbix-server-mysql

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

[comment]: # ({7c95c11f-d707ad1d})
### Compose文件

如果您是通过[docker-compose](/manual/installation/containers#docker-compose)安装的Zabbix，请遵循本节中的升级说明。

1\. 检查当前镜像版本：

    docker inspect -f '{{ .Config.Image }}' zabbix-server-mysql

2\. 从GitHub的[repository](https://github.com/zabbix/zabbix-docker)拉取最新更新，并切换到所需的分支：

    git pull
    git checkout 7.0

3\. 使用新的compose文件启动Zabbix组件：

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

4\. 验证更新：

    docker logs -f zabbix-server-mysql

更多详细信息，请参见[docker-compose](/manual/installation/containers#docker-compose)，包括支持的环境变量列表和卷挂载点。

[comment]: # ({/7c95c11f-d707ad1d})
