MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Beliebte Docker-Images für MySQL und MariaDB Server

Ein Docker-Image kann von jedem erstellt werden, der die Fähigkeit hat, ein Skript zu schreiben. Aus diesem Grund werden viele ähnliche Images von der Community erstellt, mit geringfügigen Unterschieden, die aber wirklich einem gemeinsamen Zweck dienen. Ein gutes (und beliebtes) Container-Image muss eine gut geschriebene Dokumentation mit klaren Erklärungen, ein aktiv gepflegtes Repository und regelmäßige Updates haben. Sehen Sie sich diesen Blogpost an, wenn Sie lernen möchten, wie Sie Ihr eigenes Docker-Image für MySQL erstellen und veröffentlichen, oder diesen Blogpost, wenn Sie nur die Grundlagen der Ausführung von MySQL auf Docker lernen möchten.

In diesem Blogbeitrag werden wir uns einige der beliebtesten Docker-Images zum Ausführen unseres MySQL- oder MariaDB-Servers ansehen. Die von uns ausgewählten Images sind öffentliche Allzweck-Images, die zumindest einen MySQL-Dienst ausführen können. Einige von ihnen enthalten unwesentliche MySQL-bezogene Anwendungen, während andere nur als einfache mysqld-Instanz dienen. Die Auflistung hier basiert auf dem Ergebnis von Docker Hub, der weltweit größten Bibliothek und Community für Container-Images.

TLDR

Die folgende Tabelle fasst die verschiedenen Optionen zusammen:

Aspekt MySQL (Docker) MariaDB (Docker) Percona (Docker) MySQL (Oracle) MySQL/MariaDB (CentOS) MariaDB (Bitnami)
Downloads 10M+ 10M+ 10M+ 10M+ 10M+ 10M+
Docker-Hub mysql mariadb Perkona mysql/mysql-server mysql-80-centos7
mysql-57-centos7
mysql-56-centos7
mysql-55-centos7
mariadb-102-centos7
mariadb-101-centos7
bitnami/mariadb
Projektseite mysql mariadb Percona-Docker mysql-docker mysql-Container bitnami-docker-mariadb
Basisbild Debian 9 Ubuntu 18.04 (bionisch)
Ubuntu 14.04 (vertrauenswürdig)
CentOS 7 Oracle Linux 7 RHEL 7
CentOS 7
Debian 9 (minideb)
Oracle Linux 7
Unterstützte Datenbankversionen 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
Unterstützte Plattformen x86_64 x86
x86_64
arm64v8
ppc64le
x86
x86_64
x86_64 x86_64 x86_64
Bildgröße
(Tag:neueste)
129 MB 120 MB 193 MB 99 MB 178 MB 87 MB
Erster Commit 18. Mai 2014 16. November 2014 3. Januar 2016 18. Mai 2014 15. Februar 2015 17. Mai 2015
Mitwirkende 18 9 15 14 30 20
Github Star 1267 292 113 320 89 152
Github-Fork 1291 245 121 1291** 146 71

Entnommen von der Docker-Hub-Seite.
Fork vom MySQL-Docker-Projekt.

mysql (Docker)

Die Images werden von der Docker-Community mit Hilfe des MySQL-Teams erstellt und gepflegt. Es kann als das beliebteste öffentlich verfügbare MySQL-Server-Image angesehen werden, das auf Docker Hub gehostet wird, und als eines der frühesten auf dem Markt (das erste Commit war am 18. Mai 2014). Es wurde ~1300 Mal mit 18 aktiven Mitwirkenden gegabelt. Es unterstützt die Docker-Version bis hinunter zu 1.6 auf Best-Effort-Basis. Zum jetzigen Zeitpunkt werden alle MySQL-Hauptversionen unterstützt – 5.5, 5.6, 5.7 und 8.0 nur auf x86_64-Architektur.

Die meisten von anderen erstellten MySQL-Images sind von der Art und Weise inspiriert, wie dieses Image erstellt wurde. MariaDB-, Percona- und MySQL Server (Oracle)-Images folgen ähnlichen Umgebungsvariablen, einer ähnlichen Konfigurationsdateistruktur und einem ähnlichen Container-Initialisierungsprozess.

Die folgenden Umgebungsvariablen sind in den meisten MySQL-Container-Images auf Docker Hub verfügbar:

  • MYSQL_ROOT_PASSWORD
  • MYSQL_DATABASE
  • MYSQL_USER
  • MYSQL_PASSWORT
  • MYSQL_ALLOW_EMPTY_PASSWORD
  • MYSQL_RANDOM_ROOT_PASSWORD
  • MYSQL_ONETIME_PASSWORD

Die Bildgröße (Tag:neueste) ist durchschnittlich klein (129 MB), einfach zu verwenden, gut gepflegt und wird regelmäßig vom Betreuer aktualisiert. Wenn Ihre Anwendung den neuesten MySQL-Datenbankcontainer erfordert, ist dies das am meisten empfohlene öffentliche Image, das Sie verwenden können.

mariadb (Docker)

Die Images werden von der Docker-Community mit Hilfe des MariaDB-Teams gepflegt. Es verwendet die gleiche Gebäudestruktur wie das mysql (Docker)-Image, aber es bietet Unterstützung für mehrere Architekturen:

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

Zum Zeitpunkt der Erstellung dieses Artikels unterstützen die Images MariaDB Version 5.5 bis 10.4, wobei das Image mit der „neuesten“ Tag-Größe etwa 120 MB beträgt. Dieses Image dient als Allzweck-Image und folgt den Anweisungen, Umgebungsvariablen und der Struktur der Konfigurationsdatei als mysql (Docker). Die meisten Anwendungen, die MySQL als Datenbank-Backend benötigten, sind im Allgemeinen mit MariaDB kompatibel, da beide dasselbe Protokoll verwenden.

Der MariaDB-Server war früher ein Fork von MySQL, aber jetzt wurde er davon umgeleitet. In Bezug auf das Design der Datenbankarchitektur sind einige MariaDB-Versionen nicht 100% kompatibel und kein Drop-in-Ersatz mehr mit ihren jeweiligen MySQL-Versionen. Weitere Informationen finden Sie auf dieser Seite. Es gibt jedoch Möglichkeiten, mithilfe der logischen Sicherung untereinander zu migrieren. Einfach gesagt, wenn Sie erst einmal im MariaDB-Ökosystem sind, müssen Sie wahrscheinlich dabei bleiben. Das Mischen oder Wechseln zwischen MariaDB und MySQL in einem Cluster wird nicht empfohlen.

Wenn Sie ein fortgeschritteneres MariaDB-Setup einrichten möchten (Replikation, Galera, Sharding), gibt es andere Images, die erstellt wurden, um dieses Ziel viel einfacher zu erreichen, z. B. bitnami/mariadb, wie weiter unten erklärt.

percona (Docker)

Percona Server ist ein Fork von MySQL, der von Percona erstellt wurde. Dies sind die einzigen offiziellen Percona Server Docker-Images, die vom Percona-Team erstellt und gepflegt werden. Es unterstützt sowohl die x86- als auch die x86_64-Architektur und das Image basiert auf CentOS 7. Percona verwaltet nur die letzten 3 wichtigen MySQL-Versionen für Container-Images – 5.6, 5.7 und 8.0.

Das Code-Repository weist darauf hin, dass der erste Commit am 3. Januar 2016 mit 15 aktiven Mitwirkenden erfolgte, hauptsächlich vom Percona-Entwicklungsteam. Percona Server für MySQL wird mit der XtraDB-Speicher-Engine (einem Drop-in-Ersatz für InnoDB) geliefert und folgt den Upstream-Veröffentlichungen von Oracle MySQL sehr genau (einschließlich aller darin enthaltenen Fehlerkorrekturen) mit einigen zusätzlichen Funktionen wie der MyRocks-Speicher-Engine, TokuDB sowie der von Percona eigene Bugfixes. In gewisser Weise können Sie es sich als verbesserte Version von Oracles MySQL vorstellen. Sie können einfach zwischen MySQL- und Percona-Server-Images wechseln, vorausgesetzt, Sie verwenden die kompatible Version.

Die Bilder erkennen zwei zusätzliche Umgebungsvariablen für TokuDB und RocksDB für MySQL (verfügbar seit v5.6):

  • INIT_TOKUDB - Auf 1 setzen, damit der Container mit aktivierter TOKUDB-Speicher-Engine gestartet werden kann.
  • INIT_ROCKSDB - Auf 1 setzen, damit der Container mit aktivierter ROCKSDB-Speicher-Engine gestartet werden kann.

Mysql-Server (Oracle)

Das Repository wird vom Docker-Team von mysql gegabelt. Die Images werden vom MySQL-Team bei Oracle erstellt, gepflegt und unterstützt und bauen auf dem Basis-Image von Oracle Linux 7 auf. Das MySQL 8.0-Image wird mit MySQL Community Server (minimal) und MySQL Shell geliefert, und der Server ist so konfiguriert, dass er das X-Protokoll auf Port 33060 aus dem minimalen Repository verfügbar macht. Das Minimalpaket wurde für die Verwendung durch die offiziellen Docker-Images für MySQL entwickelt. Es schneidet einige der unwesentlichen Teile von MySQL wie innochecksum, myisampack, mysql_plugin heraus, ist aber ansonsten das gleiche Produkt. Daher hat es einen sehr kleinen Image-Footprint, der etwa 99 MB beträgt.

Ein wichtiger zu beachtender Punkt ist, dass die Bilder ein integriertes Zustandsprüfungsskript haben, was für einige Leute sehr praktisch ist, die eine genaue Verfügbarkeitslogik benötigen. Andernfalls müssen die Leute einen benutzerdefinierten HEALTHCHECK-Befehl (oder ein Skript) von Docker schreiben, um den Zustand des Containers zu überprüfen.

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

Die Container-Images werden vom CentOS-Team erstellt und gewartet, das den MySQL-Datenbankserver für OpenShift und die allgemeine Verwendung umfasst. RHEL-basierte Images können Sie aus dem Container-Katalog von Red Hat ziehen, während die CentOS-basierten Images öffentlich im Docker Hub auf verschiedenen Seiten für jede Hauptversion gehostet werden (nur Images mit mehr als 10 Millionen Downloads auflisten):

  • 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

Die Bildstruktur ist etwas anders und verwendet kein Bild-Tag wie andere, daher wird der Bildname stattdessen etwas länger. Allerdings müssen Sie zur richtigen Docker-Hub-Seite gehen, um die Hauptversion zu erhalten, die Sie abrufen möchten.

Laut der Code-Repository-Seite haben seit dem 15. Februar 2015 30 Mitwirkende an dem Projekt mitgearbeitet. Es unterstützt MySQL 5.5 bis 8.0 und MariaDB 5.5 bis 10.2 nur für die x86_64-Architektur. Wenn Sie sich stark auf die Containerisierungsinfrastruktur von Red Hat wie OpenShift verlassen, sind dies wahrscheinlich die beliebtesten oder am besten gepflegten Images für MySQL und MariaDB.

Die folgenden Umgebungsvariablen beeinflussen die MySQL/MariaDB-Konfigurationsdatei und sie sind alle optional:

  • MYSQL_LOWER_CASE_TABLE_NAMES (Standard:0)
  • MYSQL_MAX_CONNECTIONS (Standard:151)
  • MYSQL_MAX_ALLOWED_PACKET (Standard:200M)
  • MYSQL_FT_MIN_WORD_LEN (Standard:4)
  • MYSQL_FT_MAX_WORD_LEN (Standard:20)
  • MYSQL_AIO (Standard:1)
  • MYSQL_TABLE_OPEN_CACHE (Standard:400)
  • MYSQL_KEY_BUFFER_SIZE (Standard:32 MB oder 10 % des verfügbaren Speichers)
  • MYSQL_SORT_BUFFER_SIZE (Standard:256 KB)
  • MYSQL_READ_BUFFER_SIZE (Standard:8 MB oder 5 % des verfügbaren Speichers)
  • MYSQL_INNODB_BUFFER_POOL_SIZE (Standard:32 MB oder 50 % des verfügbaren Speichers)
  • MYSQL_INNODB_LOG_FILE_SIZE (Standard:8 MB oder 15 % des verfügbaren Speichers)
  • MYSQL_INNODB_LOG_BUFFER_SIZE (Standard:8 MB oder 15 % des verfügbaren Speichers)
  • MYSQL_DEFAULTS_FILE (Standard:/etc/my.cnf)
  • MYSQL_BINLOG_FORMAT (Standard:Anweisung)
  • MYSQL_LOG_QUERIES_ENABLED (Standard:0)

Die Images unterstützen die automatische MySQL-Optimierung, wenn das MySQL-Image mit dem --memory-Parametersatz ausgeführt wird, und wenn Sie für die folgenden Parameter keinen Wert angegeben haben, werden ihre Werte automatisch basierend auf dem verfügbaren Speicher berechnet:

  • MYSQL_KEY_BUFFER_SIZE (Standard:10 %)
  • MYSQL_READ_BUFFER_SIZE (Standard:5 %)
  • MYSQL_INNODB_BUFFER_POOL_SIZE (Standard:50 %)
  • MYSQL_INNODB_LOG_FILE_SIZE (Standard:15 %)
  • MYSQL_INNODB_LOG_BUFFER_SIZE (Standard:15 %)
Multiplenines DevOps-Leitfaden zur DatenbankverwaltungErfahren Sie, was Sie wissen müssen, um Ihre Open-Source-Datenbanken zu automatisieren und zu verwalten.Kostenlos herunterladen

bitnami/mariadb

Die Images werden von Bitnami, Experten für Softwarepaketierung in virtuellen oder Cloud-Bereitstellungen, erstellt und gewartet. Die Images werden täglich mit den neuesten verfügbaren Distributionspaketen veröffentlicht und verwenden ein minimalistisches Debian-basiertes Image namens minideb. Daher ist die Bildgröße für das neueste Tag mit etwa 87 MB die kleinste von allen. Das Projekt hat 20 Mitwirkende, wobei der erste Commit am 17. Mai 2015 stattfand. Zum jetzigen Zeitpunkt unterstützt es nur MariaDB 10.1 bis 10.3.

Ein herausragendes Merkmal dieses Images ist die Möglichkeit, ein hochverfügbares MariaDB-Setup über Docker-Umgebungsvariablen bereitzustellen. Ein MariaDB-Master-Slave-Replikationscluster ohne Ausfallzeiten kann einfach mit dem Bitnami MariaDB Docker-Image unter Verwendung der folgenden Umgebungsvariablen eingerichtet werden:

  • MARIADB_REPLICATION_MODE:Der Replikationsmodus. Mögliche Werte Master/Slave. Keine Standardwerte.
  • MARIADB_REPLICATION_USER:Der Replikationsbenutzer, der bei der ersten Ausführung auf dem Master erstellt wurde. Keine Standardwerte.
  • MARIADB_REPLICATION_PASSWORD:Das Kennwort des Replikationsbenutzers. Keine Standardwerte.
  • MARIADB_MASTER_HOST:Hostname/IP des Replikationsmasters (Slave-Parameter). Keine Standardwerte.
  • MARIADB_MASTER_PORT_NUMBER:Server-Port des Replikationsmasters (Slave-Parameter). Standardmäßig 3306.
  • MARIADB_MASTER_ROOT_USER:Benutzer auf Replikationsmaster mit Zugriff auf MARIADB_DATABASE (Slave-Parameter). Standardmäßig root
  • MARIADB_MASTER_ROOT_PASSWORD:Passwort des Benutzers auf dem Replikationsmaster mit Zugriff auf
  • MARIADB_DATABASE (Slave-Parameter). Keine Standardwerte.

In einem Replikationscluster können Sie einen Master und null oder mehr Slaves haben. Wenn die Replikation aktiviert ist, befindet sich der Master-Knoten im Lese-/Schreibmodus, während sich die Slaves im Nur-Lese-Modus befinden. Für die beste Leistung ist es ratsam, die Lesevorgänge auf die Slaves zu beschränken.

Darüber hinaus unterstützen diese Images auch die Bereitstellung auf Kubernetes als Helm-Charts. Weitere Informationen zu den Installationsschritten finden Sie im Bitnami MariaDB Chart GitHub-Repository.

Schlussfolgerungen

Es gibt unzählige MySQL-Server-Images, die von der Community beigesteuert wurden, und wir können sie hier nicht alle behandeln. Denken Sie daran, dass diese Bilder beliebt sind, weil sie für allgemeine Zwecke erstellt wurden. Einige weniger beliebte Images können viel fortgeschrittenere Aufgaben erledigen, wie z. B. Datenbank-Container-Orchestrierung, automatisches Bootstrapping und automatische Skalierung. Unterschiedliche Bilder bieten unterschiedliche Ansätze, die verwendet werden können, um andere Probleme anzugehen.