[comment]: # translation:outdated

[comment]: # ({7ccdfe17-e62e1497})
# 5 Instalación desde contenedores

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

[comment]: # ({da0d2fea-a3ac452e})

### Descripción general

Esta sección describe cómo implementar Zabbix con [Docker](#docker) o [Docker Compose](#docker-compose).

Zabbix proporciona oficialmente:

- Imágenes de Docker separadas para cada componente Zabbix
 para funcionar como contenedores portátiles y autosuficientes.
- Archivos de composición para definir y ejecutar
componentes Zabbix "multicontenedor" en Docker.


::: noteimportant
Desde Zabbix 6.0, es necesario crear iniciadores deterministas durante la instalación.
Si el registro binario está habilitado para MySQL/MariaDB, esto requiere privilegios de superusuario o establecer el parámetro de configuración/variable *log_bin_trust_function_creators = 1*. Consulte [Scripts de creación de bases de datos](/manual/appendix/install/db_scripts#mysql) para obtener instrucciones sobre cómo configurar la variable.\
Tenga en cuenta que si se ejecuta desde una consola, la variable solo se configurará temporalmente y se eliminará cuando se reinicie Docker.
En este caso, mantenga su servicio SQL en ejecución, solo detenga el servicio zabbix-server ejecutando 'docker compose down zabbix-server' y luego 'docker compose up -d zabbix-server'.\
Alternativamente, puede configurar esta variable en el archivo de configuración.
:::

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

[comment]: # ({c5a25716-fba82ded})
#### Archivos fuente

Las fuentes de los archivos Docker se almacenan en el [repositorio oficial](https://github.com/zabbix/zabbix-docker) de Zabbix en GitHub
donde puede seguir los últimos cambios de archivos o bifurcar el proyecto para crear sus propias imágenes.

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

[comment]: # ({97754c05-f9acea87})
### Docker


Zabbix proporciona imágenes basadas en una variedad de imagenes de sistemas operativos.
Para obtener la lista de imágenes del sistema operativo base compatibles para un componente Zabbix específico, consulte la descripción del componente en [Docker Hub](https://hub.docker.com/u/zabbix). Todas las imágenes de Zabbix están configuradas
para reconstruir las imágenes más recientes si se actualizan las imágenes base.

#### Instalación

Para obtener la imagen del componente Zabbix, ejecute:

    docker pull zabbix/zabbix-server-mysql

Reemplace `zabbix/zabbix-server-mysql` con el nombre del repositorio de Docker requerido.

Este comando extraerá la última versión estable del componente Zabbix basada en el sistema operativo Alpine Linux. Puede agregar [etiquetas](#tags) al nombre del repositorio para obtener una imagen basada en otro sistema operativo o en la versión principal o secundaria específica de Zabbix.

Los siguientes repositorios están disponibles en Docker Hub:

|Componente|<|Repositorio Docker|
|-|---------|----------|
|*Agente Zabbix*|<|[zabbix/zabbix-agent](https://hub.docker.com/r/zabbix/zabbix-agent/)|
|*Servidor Zabbix*|<|<|
| |con soporte MySQL |[zabbix/zabbix-server-mysql](https://hub.docker.com/r/zabbix/zabbix-server-mysql/)|
|^|con soporte PostgreSQL |[zabbix/zabbix-server-pgsql](https://hub.docker.com/r/zabbix/zabbix-server-pgsql/)|
|*Interfaz web de Zabbix* |<|<|
| |basado en el servidor web Apache2 con soporte MySQL|[zabbix/zabbix-web-apache-mysql](https://hub.docker.com/r/zabbix/zabbix-web-apache-mysql/)|
|^|basado en el servidor web Apache2 con soporte PostgreSQL|[zabbix/zabbix-web-apache-pgsql](https://hub.docker.com/r/zabbix/zabbix-web-apache-pgsql/)|
|^|basado en el servidor web Nginx con soporte MySQL |[zabbix/zabbix-web-nginx-mysql](https://hub.docker.com/r/zabbix/zabbix-web-nginx-mysql/)|
|^|basado en el servidor web Nginx con soporte PostgreSQL |[zabbix/zabbix-web-nginx-pgsql](https://hub.docker.com/r/zabbix/zabbix-web-nginx-pgsql/)|
|*Proxy Zabbix* |<|<|
| |con soporte SQLite3 |[zabbix/zabbix-proxy-sqlite3](https://hub.docker.com/r/zabbix/zabbix-proxy-sqlite3/)|
|^|con soporte MySQL |[zabbix/zabbix-proxy-mysql](https://hub.docker.com/r/zabbix/zabbix-proxy-mysql/)|
|*Zabbix Java Gateway* |<|[zabbix/zabbix-java-gateway](https://hub.docker.com/r/zabbix/zabbix-java-gateway/)|

::: noteclassic
La compatibilidad con capturas SNMP se proporciona en un repositorio separado
 [zabbix/zabbix-snmptraps] (https://hub.docker.com/r/zabbix/zabbix-snmptraps/). Se puede vincular con el servidor Zabbix y el
Proxy Zabbix.
:::

[comment]: # ({/97754c05-f9acea87})

[comment]: # ({c663bfd7-e498c2aa})

#### Etiquetas

Las imágenes oficiales de los componentes de Zabbix pueden contener las siguientes etiquetas:

|Etiqueta|Descripción|Ejemplo|
|--|----------|----|
|latest | La última versión estable de un componente Zabbix basado en la imagen de Alpine Linux. |zabbix-agent:latest |
|<SO>-trunk | La última versión nocturna de Zabbix que se está desarrollando actualmente en un sistema operativo específico. <br> <br> **<OS>** - el sistema operativo base. Valores admitidos: <br> *alpine* - Alpine Linux; <br> *ltsc2019* - Windows 10 LTSC 2019 (solo agente); <br> *ol* - Oracle Linux; <br> *ltsc2022* - Windows 11 LTSC 2022 (solo agente); <br> *ubuntu* - Ubuntu |zabbix agent:ubuntu-trunk |
|<SO>-latest | La última versión estable de un componente de Zabbix en un sistema operativo específico. <br> <br> **<OS>** - el sistema operativo base. Valores admitidos: <br> *alpine* - Alpine Linux; <br> *ltsc2019* - Windows 10 LTSC 2019 (solo agente); <br> *ol* - Oracle Linux; <br> *ltsc2022* - Windows 11 LTSC 2022 (solo agente); <br> *ubuntu* - Ubuntu|zabbix-agent:ol-latest |
|<OS>-X.X-latest |La última versión menor de un componente de Zabbix de una versión principal y un sistema operativo específicos. <br> <br> **<OS>** - el sistema operativo base. Valores admitidos: <br> *alpine* - Alpine Linux;  <br> *ltsc2019* - Windows 10 LTSC 2019 (solo agente); <br> *ol* - Oracle Linux; <br> *ltsc2022* - Windows 11 LTSC 2022 (solo agente); <br> *ubuntu* - Ubuntu<br><br>**X.X** - la versión principal de Zabbix (es decir, *6.0*, *7.0*, *7.2*). |zabbix-agent:alpine-7.0-latest |
|<OS>-X.X.* |La última versión menor de un componente de Zabbix de una versión principal y un sistema operativo específicos. <br> <br> **<OS>** - el sistema operativo base. Valores admitidos: <br> *alpine* - Alpine Linux;  <br> *ltsc2019* - Windows 10 LTSC 2019 (solo agente); <br> *ol* - Oracle Linux; <br> *ltsc2022* - Windows 11 LTSC 2022 (solo agente); <br> *ubuntu* - Ubuntu<br><br>**X.X** - la versión principal de Zabbix (es decir, *6.0*, *7.0*, *7.2*). <br><br> **\*** - la versión menor de Zabbix |zabbix-agent:alpine-7.0.1|

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

[comment]: # ({91a8c9e4-0b4b68c7})
#### Configuración inicial

Después de descargar las imágenes, inicie los contenedores ejecutando el comando `docker run` seguido de argumentos adicionales para especificar las [variables de entorno](#variables-de-entorno) y/o los [puntos-de-montaje](#volumes) requeridos. A continuación, se proporcionan algunos [ejemplos de configuración](#ejemplos). 

:::noteimportant
Zabbix no debe ejecutarse como PID1/como un proceso de inicio en contenedores en Zabbix 7.0.0-7.0.2.
:::

::: noteclassic
Para habilitar la comunicación entre los componentes de Zabbix, algunos puertos, como 10051/TCP para el servidor Zabbix (trapper), 10050/TCP para el agente Zabbix, 162/UDP para las trampas SNMP y 80/TCP para la interfaz web de Zabbix, se expondrán a una máquina host. La lista completa de puertos predeterminados que utilizan los componentes de Zabbix está disponible en la página [Requisitos](/manual/installation/requirements#default-port-numbers). Para el servidor y el agente de Zabbix, el puerto predeterminado se puede cambiar configurando la [variable de entorno](#environment-variables) ZBX_LISTENPORT. 
:::

[comment]: # ({/91a8c9e4-0b4b68c7})

[comment]: # ({36e4b354-de9f41d4})
##### Variables de entorno

Todas las imágenes de componentes de Zabbix proporcionan variables de entorno para controlar
la configuración. Las variables de entorno admitidas se enumeran en el repositorio de componentes. 

Estas variables de entorno son opciones de los archivos de configuración de Zabbix, pero con un método de nomenclatura diferente. Por ejemplo,
`ZBX_LOGSLOWQUERIES` es igual a `LogSlowQueries` de los archivos de configuración del [servidor](/manual/appendix/config/zabbix_server)  Zabbix y [proxy](/manual/appendix/config/zabbix_server) Zabbix.

::: noteimportant
Algunas de las opciones de configuración no se pueden
cambiar. Por ejemplo, `PIDFile` y `LogType`.
:::

Las siguientes variables de entorno son específicas de los componentes de Docker y no existen en los archivos de configuración de Zabbix:

|Variable|Componentes|Valor predeterminado |Descripción|
|--|--|--|------|
|`DB_SERVER_HOST`|Servidor<br>Proxy<br>Interfaz web|`mysql-server` para MYSQL <br> `postgres-server` para PostgreSQL | Nombre IP o DNS del servidor MySQL o PostgreSQL.|
|`DB_SERVER_PORT`|Servidor<br>Proxy<br>Interfaz web|`3306` para MYSQL <br> `5432` para PostgreSQL |Puerto del servidor MySQL o PostgreSQL.|
|`MYSQL_USER`|Servidor<br>Proxy<br>Interfaz web| `zabbix` | Usuario de la base de datos MySQL.|
|`MYSQL_PASSWORD`|Servidor<br>Proxy<br>Interfaz web|`zabbix` | Contraseña de la base de datos MySQL.|
|`MYSQL_DATABASE`|Servidor<br>Proxy<br>Interfaz web|`zabbix` para servidor Zabbix <br> `zabbix_proxy` para proxy Zabbix |Nombre de la base de datos Zabbix.|
|`POSTGRES_USER`|Servidor<br>Interfaz web|`zabbix` |Usuario de la base de datos PostgreSQL.|
|`POSTGRES_PASSWORD`|Servidor<br>Interfaz web|`zabbix` |Contraseña de la base de datos PostgreSQL.|
|`POSTGRES_DB`|Servidor<br>Interfaz web|`zabbix` para servidor Zabbix <br> `zabbix_proxy` para proxy Zabbix |Nombre de la base de datos Zabbix.|
|`PHP_TZ`|Interfaz web|`Europa/Riga`|Zona horaria en formato PHP. La lista completa de zonas horarias admitidas está disponible en [php.net](http://php.net/manual/en/timezones.php).|
|`ZBX_SERVER_NAME`|Interfaz web|`Zabbix Docker`|Nombre de instalación de Zabbix visible en la esquina superior derecha de la interfaz web. |
|`ZBX_JAVAGATEWAY_ENABLE`|Servidor<br>Proxy|`false`|Habilita la comunicación con la puerta de enlace de Java de Zabbix para recopilar comprobaciones relacionadas con Java.|
|`ZBX_ENABLE_SNMP_TRAPS`|Servidor<br>Proxy|`false` |Habilita la función de captura SNMP. Requiere una instancia **zabbix-snmptraps** y un volumen compartido */var/lib/zabbix/snmptraps* para el servidor Zabbix o el proxy Zabbix.|

[comment]: # ({/36e4b354-de9f41d4})

[comment]: # ({4a57d31e-7d10f7dc})
##### Volúmenes

Las imágenes permiten montar volúmenes utilizando los siguientes puntos de montaje:

|Volumen|<|Descripción|
|-|---------|----------------------------------------------|
|**Agente de Zabbix**|<|<|
| |*/etc/zabbix/zabbix\_agentd.d*|El volumen permite incluir archivos *\*.conf* y extender el agente Zabbix usando la función `UserParameter`|
|^|*/var/lib/zabbix/modules*|El volumen permite cargar módulos adicionales y extender el agente Zabbix usando la función [LoadModule](/manual/extensions/loadablemodules)|
|^|*/var/lib/zabbix/enc*|El volumen se utiliza para almacenar archivos relacionados con TLS. Estos nombres de archivos se especifican utilizando las variables de entorno `ZBX_TLSCAFILE`, `ZBX_TLSCRLFILE`, `ZBX_TLSKEY_FILE` y `ZBX_TLSPSKFILE`|
|**Servidor Zabbix**|<|<|
| |*/usr/lib/zabbix/alertscripts*|El volumen se utiliza para scripts de alerta personalizados. Es el parámetro `AlertScriptsPath` en [zabbix\_server.conf](/manual/appendix/config/zabbix_server)|
|^|*/usr/lib/zabbix/externalscripts*|El volumen es utilizado para [verificaciones externas](/manual/config/items/itemtypes/external). Es el parámetro `ExternalScripts` en [zabbix\_server.conf](/manual/appendix/config/zabbix_server)|
|^|*/var/lib/zabbix/modules*|El volumen permite cargar módulos adicionales y ampliar el servidor Zabbix usando la función [LoadModule](/manual/extensions/loadablemodules)|
|^|*/var/lib/zabbix/enc*|El volumen se utiliza para almacenar archivos relacionados con TLS. Estos nombres de archivos se especifican utilizando las variables de entorno `ZBX_TLSCAFILE`, `ZBX_TLSCRLFILE`, `ZBX_TLSKEY_FILE` y `ZBX_TLSPSKFILE`|
|^|*/var/lib/zabbix/ssl/certs*|El volumen se utiliza como ubicación de los archivos de certificado de cliente SSL para la autenticación del cliente. Es el parámetro `SSLCertLocation` en zabbix\_server.conf|
|^|*/var/lib/zabbix/ssl/keys*|El volumen se utiliza como ubicación de archivos de clave privada SSL para la autenticación del cliente. Es el parámetro `SSLKeyLocation` en [zabbix\_server.conf](/manual/appendix/config/zabbix_server)|
|^|*/var/lib/zabbix/ssl/ssl\_ca*|El volumen se utiliza como ubicación de los archivos de la autoridad certificadora (CA) para la verificación del certificado del servidor SSL. Es el parámetro `SSLCALocation` en [zabbix\_server.conf](/manual/appendix/config/zabbix_server)|
|^|*/var/lib/zabbix/snmptraps*|El volumen se utiliza como ubicación del archivo snmptraps.log. Podría compartirse mediante el contenedor zabbix-snmptraps y heredarse usando la opción volumes\_from Docker al crear una nueva instancia del servidor Zabbix. La función de procesamiento de capturas SNMP podría habilitarse usando un volumen compartido y cambiando la variable de entorno `ZBX_ENABLE_SNMP_TRAPS` a 'true'|
|^|*/var/lib/zabbix/mibs*|El volumen permite agregar nuevos archivos MIB. No admite subdirectorios, todos los MIB deben colocarse en `/var/lib/zabbix/mibs`|
|**Proxy Zabbix**|<|<|
| |*/usr/lib/zabbix/externalscripts*|El volumen es utilizado para [verificaciones externas](/manual/config/items/itemtypes/external). Es el parámetro `ExternalScripts` en [zabbix\_proxy.conf](/manual/appendix/config/zabbix_proxy)|
|^|*/var/lib/zabbix/db_data/*| El volumen permite almacenar archivos de bases de datos en dispositivos externos. Compatible solo con proxy Zabbix con SQLite3|
|^|*/var/lib/zabbix/modules*|El volumen permite cargar módulos adicionales y ampliar el servidor Zabbix usando la función [LoadModule](/manual/extensions/loadablemodules)|
|^|*/var/lib/zabbix/enc*|El volumen se utiliza para almacenar archivos relacionados con TLS. Estos nombres de archivos se especifican utilizando las variables de entorno `ZBX_TLSCAFILE`, `ZBX_TLSCRLFILE`, `ZBX_TLSKEY_FILE` y `ZBX_TLSPSKFILE`|
|^|*/var/lib/zabbix/ssl/certs*|El volumen se utiliza como ubicación de los archivos de certificado de cliente SSL para la autenticación del cliente. Es el parámetro `SSLCertLocation` en [zabbix\_proxy.conf](/manual/appendix/config/zabbix_proxy)|
|^|*/var/lib/zabbix/ssl/keys*|El volumen se utiliza como ubicación de archivos de clave privada SSL para la autenticación del cliente. Es el parámetro `SSLKeyLocation` en [zabbix\_proxy.conf](/manual/appendix/config/zabbix_proxy)|
|^|*/var/lib/zabbix/ssl/ssl\_ca*|El volumen se utiliza como ubicación de los archivos de la autoridad certificadora (CA) para la verificación del certificado del servidor SSL. Es el parámetro `SSLCALocation` en [zabbix\_proxy.conf](/manual/appendix/config/zabbix_proxy)|
|^|*/var/lib/zabbix/snmptraps*|El volumen se utiliza como ubicación del archivo snmptraps.log. Podría ser compartido por el contenedor zabbix-snmptraps y heredado usando la opción volumes\_from Docker al crear una nueva instancia del servidor Zabbix. La función de procesamiento de capturas SNMP podría habilitarse usando un volumen compartido y cambiando la variable de entorno `ZBX_ENABLE_SNMP_TRAPS` a 'true'|
|^|*/var/lib/zabbix/mibs*|El volumen permite agregar nuevos archivos MIB. No admite subdirectorios, todos los MIB deben colocarse en `/var/lib/zabbix/mibs`|
|**Interfaz web Zabbix basada en el servidor web Apache2**|<|<|
| |*/etc/ssl/apache2*|El volumen permite habilitar HTTPS para la interfaz web de Zabbix. El volumen debe contener los dos archivos `ssl.crt` y `ssl.key` preparados para conexiones SSL Apache2|
|**Interfaz web Zabbix basada en servidor web Nginx**|<|<|
| |*/etc/ssl/nginx*|El volumen permite habilitar HTTPS para la interfaz web de Zabbix. El volumen debe contener los dos archivos `ssl.crt`, `ssl.key` y `dhparam.pem` preparados para conexiones SSL de Nginx|
|**Zabbix snmptraps**|<|<|
| |*/var/lib/zabbix/snmptraps*|El volumen contiene el archivo de registro `snmptraps.log` cuyo nombre contiene las capturas SNMP recibidas|
|^|*/var/lib/zabbix/mibs*|El volumen permite agregar nuevos archivos MIB. No admite subdirectorios, todos los MIB deben colocarse en `/var/lib/zabbix/mibs`|

Para obtener información adicional, consulte los repositorios oficiales de Zabbix en Docker.
Hub.

[comment]: # ({/4a57d31e-7d10f7dc})

[comment]: # ({d61a6c8a-492bd3ba})
##### Ejemplos de uso

** Ejemplo 1 **

El ejemplo demuestra cómo ejecutar el servidor Zabbix con soporte para la base de datos MySQL,
interfaz web de Zabbix basada en el servidor web Nginx y Zabbix Java gateway.

1\. Crear una red dedicada para los contenedores componentes de Zabbix:

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

2\. Iniciar la instancia vacía del servidor MySQL

    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=utf8 --collation-server=utf8_bin \
          --default-authentication-plugin=mysql_native_password

3\. Iniciar la instancia Java gateway de Zabbix

    docker run --name zabbix-java-gateway -t \
          --network=zabbix-net \
          --restart unless-stopped \
          -d zabbix/zabbix-java-gateway:alpine-7.0-latest

4\. Iniciar la instancia del servidor Zabbix y enlazar con la instancia creada del servidor MySQL

    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

5\. Iniciar la interfaz web de Zabbix y enlazar la instancias creadas del servidor MySQL y
del servidor Zabbix.

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

**Ejemplo 2 **

El ejemplo demuestra cómo ejecutar el servidor Zabbix con soporte a la base de datos PostgreSQL,
interfaz web de Zabbix basada en el servidor web Nginx y capacidad de captura SNMP.

1\. Crear una red dedicada para los contenedores componentes de Zabbix:

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

2\. Iniciar la instancia vacía del servidor PostgreSQL

    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\. Iniciar la instancia snmptraps de Zabbix

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

4\. Iniciar la instancia del servidor Zabbix y enlazar con la instancia creada del servidor PostgreSQL

    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

5\. Iniciar la interfaz web de Zabbix y enlace la instancias creadas del servidor PostgreSQL y
del servidor Zabbix

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

**Ejemplo 3**

El ejemplo demuestra cómo ejecutar el servidor Zabbix con soporte a la base de datos MySQL,
interfaz web de Zabbix basada en el servidor web Nginx y Zabbix Java gateway
usando `podman` en Red Hat 8.

1\. Crear un nuevo pod llamado `zabbix` y exponer los puertos (interfaz web,
servidor de captura Zabbix):

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

2\. (opcional) Iniciar el contenedor del agente Zabbix en el pod `zabbix`:

    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-70:latest

3\. Crear el directorio`./mysql/` en el equipo e iniciar el servidor Oracle MySQL 8.0:

    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=utf8 --collation-server=utf8_bin \
          --default-authentication-plugin=mysql_native_password

4\. Iniciar el contenedor del servidor Zabbix:

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

5\. Iniciar el contenedor Java Gateway de Zabbix:

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

6\. Iniciar el contenedor de la interfaz web de Zabbix:

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

::: noteclassic
El pod `zabbix` expone el puerto 80/TCP (HTTP) a la máquina anfitriona desde el 8080/TCP del contenedor `zabbix-web-mysql`.
:::

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

[comment]: # ({12021858-c443c22e})
### Componente acoplable
Alternativamente, Zabbix se puede instalar usando el complemento Docker Compose.
Los archivos de redacción para definir y ejecutar componentes Zabbix de múltiples contenedores están
disponibles en el [repositorio Zabbix Docker](https://github.com/zabbix/zabbix-docker) oficial en GitHub.

::: noteimportant
Los archivos de composición oficiales de Zabbix son compatibles con la versión 3 de Docker Compose.
:::

Estos archivos de redacción se agregan como ejemplos; están sobrecargados.
Por ejemplo, contienen servidores proxy compatibles con MySQL y SQLite3.

Para obtener archivos de redacción de Docker proporcionados por Zabbix, clone el repositorio:

    git clone https://github.com/zabbix/zabbix-docker.git

Cambie a la versión requerida: 

    git checkout 7.0

Redacte archivos de configuración y cree e inicie contenedores:

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

Reemplace `docker-compose_v3_alpine_mysql_latest.yaml` en el comando anterior con el archivo de configuración requerido.

Las siguientes opciones están disponibles:

|Nombre de archivo|Descripción|
|--|--------|
|`docker-compose_v3_alpine_mysql_latest.yaml`|El archivo de redacción ejecuta la última versión de los componentes Zabbix 7.0 en Alpine Linux con soporte de base de datos MySQL.|
|`docker-compose_v3_alpine_mysql_local.yaml`|El archivo de redacción construye localmente la última versión de Zabbix 7.0 y ejecuta componentes de Zabbix en Alpine Linux con soporte de base de datos MySQL.|
|`docker-compose_v3_alpine_pgsql_latest.yaml`|El archivo de redacción ejecuta la última versión de los componentes Zabbix 7.0 en Alpine Linux con soporte de base de datos PostgreSQL.|
|`docker-compose_v3_alpine_pgsql_local.yaml`|El archivo de redacción construye localmente la última versión de Zabbix 7.0 y ejecuta componentes de Zabbix en Alpine Linux con soporte de base de datos PostgreSQL.|
|`docker-compose_v3_ol_mysql_latest.yaml`|El archivo de redacción ejecuta la última versión de los componentes Zabbix 7.0 en Oracle Linux con soporte de base de datos MySQL.|
|`docker-compose_v3_ol_mysql_local.yaml`|El archivo de redacción construye localmente la última versión de Zabbix 7.0 y ejecuta componentes de Zabbix en Oracle Linux con soporte de base de datos MySQL.|
|`docker-compose_v3_ol_pgsql_latest.yaml`|El archivo de redacción ejecuta la última versión de los componentes Zabbix 7.0 en Oracle Linux con soporte de base de datos PostgreSQL.|
|`docker-compose_v3_ol_pgsql_local.yaml`|El archivo de redacción construye localmente la última versión de Zabbix 7.0 y ejecuta componentes de Zabbix en Oracle Linux con soporte de base de datos PostgreSQL.|
|`docker-compose_v3_ubuntu_mysql_latest.yaml`|El archivo de redacción ejecuta la última versión de los componentes de Zabbix 7.0 en Ubuntu 20.04 con soporte de base de datos MySQL.|
|`docker-compose_v3_ubuntu_mysql_local.yaml`|El archivo de redacción construye localmente la última versión de Zabbix 7.0 y ejecuta componentes de Zabbix en Ubuntu 20.04 con soporte de base de datos MySQL.|
|`docker-compose_v3_ubuntu_pgsql_latest.yaml`|El archivo de redacción ejecuta la última versión de los componentes de Zabbix 7.0 en Ubuntu 20.04 con soporte de base de datos PostgreSQL.|
|`docker-compose_v3_ubuntu_pgsql_local.yaml`|El archivo de redacción construye localmente la última versión de Zabbix 7.0 y ejecuta componentes de Zabbix en Ubuntu 20.04 con soporte de base de datos PostgreSQL.|

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

[comment]: # ({549510ed-52e39127})
#### Almacenamiento

Los archivos de composición están configurados para admitir el almacenamiento local en una máquina anfitriona.
Docker Compose creará un directorio `zbx_env` en la carpeta con el archivo
de composición cuando ejecuta los componentes de Zabbix usando el archivo de composición.
El directorio contendrá la misma estructura que la descrita anteriormente en la
Sección [Volúmenes](#Volumes) y el directorio para el almacenamiento de la base de datos.

También hay volúmenes en modo de solo lectura para los archivos `/etc/localtime` y `/etc/timezone`.

[comment]: # ({/549510ed-52e39127})

[comment]: # ({38e65c62-0be3c140})
#### Variables de entorno

Los archivos de variables tienen la siguiente estructura de nombres: `.env_<tipo de componente>` y se encuentran en el [directorio](https://github.com/zabbix/zabbix-docker/tree/7.0/env_vars)  *env_vars*. Consulte las [variables de entorno](#variables-de-entorno) para obtener detalles sobre los nombres de las variables y la selección disponible.

[comment]: # ({/38e65c62-0be3c140})

[comment]: # ({ce41e6d4-ad55959c})
#### Ejemplos

**Ejemplo 1**

    git checkout 7.0
    docker compose -f ./docker-compose_v3_alpine_mysql_latest.yaml up -d

El comando descargará las últimas imágenes de Zabbix 7.0 para cada componente de Zabbix y las ejecutará en modo desconectado.

::: noteimportant
No olvide descargar archivos `.env_<tipo de componente>` del repositorio oficial de Zabbix de github.com con los archivos de redacción.
:::

**Ejemplo 2**

    git checkout 7.0
    docker compose -f ./docker-compose_v3_ubuntu_mysql_local.yaml up -d

El comando descargará la imagen base Ubuntu 22.04 (jammy), luego compilará los componentes Zabbix 7.0 localmente y los ejecutará en modo desconectado.

[comment]: # ({/ce41e6d4-ad55959c})
