sql >> Base de Datos >  >> RDS >> MariaDB

Imágenes populares de Docker para MySQL y MariaDB Server

Cualquiera que tenga la capacidad de escribir un script puede crear una imagen de Docker. Es por eso que la comunidad está construyendo muchas imágenes similares, con pequeñas diferencias pero que en realidad tienen un propósito común. Una buena (y popular) imagen de contenedor debe tener una documentación bien escrita con explicaciones claras, un repositorio mantenido activamente y con actualizaciones periódicas. Consulte esta publicación de blog si desea obtener información sobre cómo crear y publicar su propia imagen de Docker para MySQL, o esta publicación de blog si solo desea obtener información básica sobre la ejecución de MySQL en Docker.

En esta publicación de blog, veremos algunas de las imágenes de Docker más populares para ejecutar nuestro servidor MySQL o MariaDB. Las imágenes que hemos elegido son imágenes públicas de propósito general que al menos pueden ejecutar un servicio MySQL. Algunos de ellos incluyen aplicaciones no esenciales relacionadas con MySQL, mientras que otros simplemente sirven como una instancia simple de mysqld. La lista aquí se basa en el resultado de Docker Hub, la biblioteca y comunidad de imágenes de contenedores más grande del mundo.

TLDR

La siguiente tabla resume las diferentes opciones:

Aspecto MySQL (Docker) MariaDB (Docker) Percona (Docker) MySQL (Oracle) MySQL/MariaDB (CentOS) MariaDB (Bitnami)
Descargas 10M+ 10M+ 10M+ 10M+ 10M+ 10M+
Docker Hub mysql mariadb percona mysql/servidor-mysql mysql-80-centos7
mysql-57-centos7
mysql-56-centos7
mysql-55-centos7
mariadb-102-centos7
mariadb-101-centos7
bitnami/mariadb
Página del proyecto mysql mariadb percona-docker mysql-docker contenedor mysql bitnami-docker-mariadb
Imagen base Debian 9 Ubuntu 18.04 (biónico)
Ubuntu 14.04 (de confianza)
CentOS 7 Oracle Linux 7 RHEL 7
CentOS 7
Debian 9 (minideb)
Oracle Linux 7
Versiones de bases de datos compatibles 5,5
5,6
5,7
8,0
5,5
10,0
10,1
10,2
10,3
10,4
5.6
5.7
8.0
5,5
5,6
5,7
8,0
5,5
5,6
5,7
8,0
10,1
10,2
10.1
10.2
10.3
Plataformas compatibles x86_64 x86
x86_64
arm64v8
ppc64le
x86
x86_64
x86_64 x86_64 x86_64
Tamaño de la imagen
(etiqueta:más reciente)
129 MB 120 MB 193 MB 99 MB 178 MB 87 MB
Primera confirmación 18 de mayo de 2014 16 de noviembre de 2014 3 de enero de 2016 18 de mayo de 2014 15 de febrero de 2015 17 de mayo de 2015
Contribuidores 18 9 15 14 30 20
Estrella de Github 1267 292 113 320 89 152
Bifurcación de Github 1291 245 121 1291** 146 71

Tomado de la página de Docker Hub.
Bifurcado del proyecto docker de MySQL.

mysql (Docker)

Las imágenes son creadas y mantenidas por la comunidad de Docker con la ayuda del equipo de MySQL. Puede considerarse la imagen de servidor MySQL disponible públicamente más popular alojada en Docker Hub y una de las primeras en el mercado (la primera confirmación fue el 18 de mayo de 2014). Se ha bifurcado ~ 1300 veces con 18 colaboradores activos. Es compatible con la versión de Docker hasta la 1.6 con el mejor esfuerzo. En este momento, se admiten todas las versiones principales de MySQL:5.5, 5.6, 5.7 y 8.0 solo en la arquitectura x86_64.

La mayoría de las imágenes de MySQL creadas por otros están inspiradas en la forma en que se creó esta imagen. Las imágenes de MariaDB, Percona y MySQL Server (Oracle) siguen variables de entorno, estructura de archivo de configuración y flujo de proceso de inicialización de contenedor similares.

Las siguientes variables de entorno están disponibles en la mayoría de las imágenes de contenedores de MySQL en Docker Hub:

  • MYSQL_ROOT_PASSWORD
  • MYSQL_DATABASE
  • USUARIO_MYSQL
  • MYSQL_PASSWORD
  • MYSQL_ALLOW_EMPTY_PASSWORD
  • MYSQL_RANDOM_ROOT_PASSWORD
  • MYSQL_ONETIME_PASSWORD

El tamaño de la imagen (etiqueta:más reciente) es medianamente pequeño (129 MB), fácil de usar, bien mantenido y actualizado regularmente por el mantenedor. Si su aplicación requiere el último contenedor de base de datos MySQL, esta es la imagen pública más recomendada que puede usar.

mariadb (Docker)

Las imágenes son mantenidas por la comunidad de Docker con la ayuda del equipo de MariaDB. Utiliza el mismo estilo de estructura de construcción que la imagen mysql (Docker), pero viene con soporte para múltiples arquitecturas:

  • Linux x86-64 (amd64)
  • ARMv8 de 64 bits (arm64v8)
  • x86/i686 (i386)
  • IBM POWER8 (ppc64le)

En el momento de escribir este artículo, las imágenes son compatibles con la versión 5.5 de MariaDB hasta la 10.4, donde la imagen con la etiqueta "más reciente" tiene un tamaño de alrededor de 120 MB. Esta imagen sirve como una imagen de uso general y sigue las instrucciones, las variables de entorno y la estructura del archivo de configuración como mysql (Docker). La mayoría de las aplicaciones que requieren MySQL como backend de la base de datos suelen ser compatibles con MariaDB, ya que ambas utilizan el mismo protocolo.

El servidor MariaDB solía ser una bifurcación de MySQL, pero ahora se ha desviado de él. En términos de diseño de la arquitectura de la base de datos, algunas versiones de MariaDB no son 100% compatibles y ya no son un reemplazo directo con sus respectivas versiones de MySQL. Echa un vistazo a esta página para más detalles. Sin embargo, hay formas de migrar entre sí mediante la copia de seguridad lógica. En pocas palabras, una vez que esté en el ecosistema de MariaDB, probablemente deba seguir con él. No se recomienda mezclar o cambiar entre MariaDB y MySQL en un clúster.

Si desea configurar una configuración de MariaDB más avanzada (replicación, Galera, fragmentación), hay otras imágenes creadas para lograr ese objetivo mucho más fácilmente, por ejemplo, bitnami/mariadb como se explica más adelante.

percona (Docker)

Percona Server es una bifurcación de MySQL creada por Percona. Estas son las únicas imágenes oficiales de Percona Server Docker, creadas y mantenidas por el equipo de Percona. Es compatible con la arquitectura x86 y x86_64 y la imagen se basa en CentOS 7. Percona solo mantiene las últimas 3 versiones principales de MySQL para imágenes de contenedores:5.6, 5.7 y 8.0.

El repositorio de código señala que la primera confirmación fue el 3 de enero de 2016 con 15 colaboradores activos, en su mayoría del equipo de desarrollo de Percona. Percona Server para MySQL viene con el motor de almacenamiento XtraDB (un reemplazo directo para InnoDB) y sigue muy de cerca las versiones anteriores de Oracle MySQL (incluidas todas las correcciones de errores) con algunas características adicionales como el motor de almacenamiento MyRocks, TokuDB y Percona. propias correcciones de errores. En cierto modo, puede considerarlo como una versión mejorada de MySQL de Oracle. Puede cambiar fácilmente entre las imágenes de MySQL y Percona Server, siempre que esté ejecutando la versión compatible.

Las imágenes reconocen dos variables de entorno adicionales para TokuDB y RocksDB para MySQL (disponible desde v5.6):

  • INIT_TOKUDB:establezca en 1 para permitir que el contenedor se inicie con el motor de almacenamiento TOKUDB habilitado.
  • INIT_ROCKSDB:establezca en 1 para permitir que el contenedor se inicie con el motor de almacenamiento ROCKSDB habilitado.

servidor mysql (Oracle)

El repositorio está bifurcado de mysql por el equipo de Docker. Las imágenes son creadas, mantenidas y respaldadas por el equipo de MySQL en Oracle construidas sobre la imagen base de Oracle Linux 7. La imagen MySQL 8.0 viene con MySQL Community Server (mínimo) y MySQL Shell y el servidor está configurado para exponer el protocolo X en el puerto 33060 desde un repositorio mínimo. El paquete mínimo fue diseñado para que lo usen las imágenes oficiales de Docker para MySQL. Elimina algunas de las piezas no esenciales de MySQL como innochecksum, myisampack, mysql_plugin, pero por lo demás es el mismo producto. Por lo tanto, ocupa muy poco espacio en la imagen, alrededor de 99 MB.

Un punto importante a tener en cuenta es que las imágenes tienen un script de verificación de estado incorporado, que es muy útil para algunas personas que necesitan una lógica de disponibilidad precisa. De lo contrario, las personas deben escribir un comando (o secuencia de comandos) HEALTHCHECK de Docker personalizado para verificar el estado del contenedor.

mysql-xx-centos7 y mariadb-xx-centos7 (CentOS)

Las imágenes del contenedor son creadas y mantenidas por el equipo de CentOS, que incluye un servidor de base de datos MySQL para OpenShift y uso general. Para las imágenes basadas en RHEL, puede extraerlas del catálogo de contenedores de Red Hat, mientras que las imágenes basadas en CentOS se alojan públicamente en Docker Hub en diferentes páginas para cada versión principal (solo enumera las imágenes con más de 10 millones de descargas):

  • MySQL 8.0:https://hub.docker.com/r/centos/mysql-80-centos7
  • MySQL 5.7:https://hub.docker.com/r/centos/mysql-57-centos7
  • MySQL 5.6:https://hub.docker.com/r/centos/mysql-56-centos7
  • MySQL 5.5:https://hub.docker.com/r/centos/mysql-55-centos7
  • MariaDB 10.2:https://hub.docker.com/r/centos/mariadb-102-centos7
  • MariaDB 10.1:https://hub.docker.com/r/centos/mariadb-101-centos7

La estructura de la imagen es un poco diferente y no utiliza una etiqueta de imagen como otras, por lo que el nombre de la imagen se vuelve un poco más largo. Habiendo dicho eso, debe ir a la página correcta de Docker Hub para obtener la versión principal que desea extraer.

Según la página del repositorio de código, 30 colaboradores han colaborado en el proyecto desde el 15 de febrero de 2015. Es compatible con MySQL 5.5 hasta 8.0 y MariaDB 5.5 hasta 10.2 solo para arquitectura x86_64. Si confía mucho en la infraestructura de contenedorización de Red Hat como OpenShift, estas son probablemente las imágenes más populares o mejor mantenidas para MySQL y MariaDB.

Las siguientes variables de entorno influyen en el archivo de configuración de MySQL/MariaDB y todas son opcionales:

  • MYSQL_LOWER_CASE_TABLE_NAMES (predeterminado:0)
  • MYSQL_MAX_CONEXIONES (predeterminado:151)
  • MYSQL_MAX_ALLOWED_PACKET (predeterminado:200M)
  • MYSQL_FT_MIN_WORD_LEN (predeterminado:4)
  • MYSQL_FT_MAX_WORD_LEN (predeterminado:20)
  • MYSQL_AIO (predeterminado:1)
  • MYSQL_TABLE_OPEN_CACHE (predeterminado:400)
  • MYSQL_KEY_BUFFER_SIZE (predeterminado:32M o 10 % de la memoria disponible)
  • MYSQL_SORT_BUFFER_SIZE (predeterminado:256K)
  • MYSQL_READ_BUFFER_SIZE (predeterminado:8M o 5% de la memoria disponible)
  • MYSQL_INNODB_BUFFER_POOL_SIZE (predeterminado:32 M o 50 % de la memoria disponible)
  • MYSQL_INNODB_LOG_FILE_SIZE (predeterminado:8M o 15% de la memoria disponible)
  • MYSQL_INNODB_LOG_BUFFER_SIZE (predeterminado:8M o 15% de la memoria disponible)
  • MYSQL_DEFAULTS_FILE (predeterminado:/etc/my.cnf)
  • MYSQL_BINLOG_FORMAT (predeterminado:declaración)
  • MYSQL_LOG_QUERIES_ENABLED (predeterminado:0)

Las imágenes admiten el ajuste automático de MySQL cuando la imagen de MySQL se ejecuta con el conjunto de parámetros --memory y si no especificó un valor para los siguientes parámetros, sus valores se calcularán automáticamente en función de la memoria disponible:

  • MYSQL_KEY_BUFFER_SIZE (predeterminado:10%)
  • MYSQL_READ_BUFFER_SIZE (predeterminado:5%)
  • MYSQL_INNODB_BUFFER_POOL_SIZE (predeterminado:50%)
  • MYSQL_INNODB_LOG_FILE_SIZE (predeterminado:15%)
  • MYSQL_INNODB_LOG_BUFFER_SIZE (predeterminado:15%)
Guía de DevOps para la gestión de bases de datos de VariousninesConozca lo que necesita saber para automatizar y gestionar sus bases de datos de código abiertoDescargar gratis

bitnami/mariadb

Las imágenes son construidas y mantenidas por Bitnami, expertos en paquetes de software en implementación virtual o en la nube. Las imágenes se publican diariamente con los últimos paquetes de distribución disponibles y utilizan una imagen minimalista basada en Debian llamada minideb. Por lo tanto, el tamaño de la imagen para la última etiqueta es el más pequeño de todos, alrededor de 87 MB. El proyecto tiene 20 colaboradores y la primera confirmación ocurrió el 17 de mayo de 2015. En este momento, solo es compatible con MariaDB 10.1 hasta 10.3.

Una característica destacada de esta imagen es la capacidad de implementar una configuración de MariaDB de alta disponibilidad a través de las variables de entorno de Docker. Un clúster de replicación maestro-esclavo de MariaDB sin tiempo de inactividad se puede configurar fácilmente con la imagen de Bitnami MariaDB Docker utilizando las siguientes variables de entorno:

  • MARIADB_REPLICATION_MODE:El modo de replicación. Valores posibles maestro/esclavo. Sin valores predeterminados.
  • MARIADB_REPLICATION_USER:El usuario de replicación creado en el maestro en la primera ejecución. Sin valores predeterminados.
  • MARIADB_REPLICATION_PASSWORD:la contraseña de los usuarios de replicación. Sin valores predeterminados.
  • MARIADB_MASTER_HOST:nombre de host/IP del maestro de replicación (parámetro esclavo). Sin valores predeterminados.
  • MARIADB_MASTER_PORT_NUMBER:Puerto del servidor del maestro de replicación (parámetro esclavo). El valor predeterminado es 3306.
  • MARIADB_MASTER_ROOT_USER:Usuario en el maestro de replicación con acceso a MARIADB_DATABASE (parámetro esclavo). El valor predeterminado es root
  • MARIADB_MASTER_ROOT_PASSWORD:Contraseña del usuario en el maestro de replicación con acceso a
  • MARIADB_DATABASE (parámetro esclavo). Sin valores predeterminados.

En un clúster de replicación, puede tener un maestro y cero o más esclavos. Cuando la replicación está habilitada, el nodo maestro está en modo de lectura y escritura, mientras que los esclavos están en modo de solo lectura. Para obtener el mejor rendimiento, es recomendable limitar las lecturas a los esclavos.

Además, estas imágenes también admiten la implementación en Kubernetes como Helm Charts. Puede leer más sobre los pasos de instalación en el repositorio Bitnami MariaDB Chart GitHub.

Conclusiones

Hay toneladas de imágenes de servidor MySQL que han sido aportadas por la comunidad y no podemos cubrirlas todas aquí. Tenga en cuenta que estas imágenes son populares porque están diseñadas para uso general. Algunas imágenes menos populares pueden hacer cosas mucho más avanzadas, como la orquestación de contenedores de bases de datos, el arranque automático y el escalado automático. Diferentes imágenes proporcionan diferentes enfoques que pueden usarse para abordar otros problemas.