sql >> Database teknologi >  >> RDS >> MariaDB

Populære Docker-billeder til MySQL og MariaDB Server

Et Docker-billede kan bygges af alle, der har evnen til at skrive et script. Det er derfor, der er mange lignende billeder, der bygges af fællesskabet, med mindre forskelle, men som virkelig tjener et fælles formål. Et godt (og populært) containerbillede skal have velskrevet dokumentation med klare forklaringer, et aktivt vedligeholdt repository og med løbende opdateringer. Tjek dette blogindlæg, hvis du vil lære, hvordan du bygger og udgiver dit eget Docker-billede til MySQL, eller dette blogindlæg, hvis du bare vil lære det grundlæggende i at køre MySQL på Docker.

I dette blogindlæg skal vi se på nogle af de mest populære Docker-billeder til at køre vores MySQL- eller MariaDB-server. De billeder, vi har valgt, er offentlige billeder til generelle formål, der i det mindste kan køre en MySQL-tjeneste. Nogle af dem inkluderer ikke-essentielle MySQL-relaterede applikationer, mens andre bare tjener som en almindelig mysqld-instans. Listen her er baseret på resultatet af Docker Hub, verdens største bibliotek og fællesskab for containerbilleder.

TLDR

Følgende tabel opsummerer de forskellige muligheder:

Aspekt MySQL (Docker) MariaDB (Docker) Percona (Docker) MySQL (Oracle) MySQL/MariaDB (CentOS) MariaDB (Bitnami)
Downloads 10 mio.+ 10 mio.+ 10 mio.+ 10 mio.+ 10 mio.+ 10 mio.+
Docker Hub mysql mariadb percona mysql/mysql-server mysql-80-centos7
mysql-57-centos7
mysql-56-centos7
mysql-55-centos7
mariadb-102-centos7
mariadb-101-centos7
bitnami/mariadb
Projektside mysql mariadb percona-docker mysql-docker mysql-container bitnami-docker-mariadb
Basisbillede Debian 9 Ubuntu 18.04 (bionic)
Ubuntu 14.04 (trofast)
CentOS 7 Oracle Linux 7 RHEL 7
CentOS 7
Debian 9 (minideb)
Oracle Linux 7
Understøttede databaseversioner 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
Understøttede platforme x86_64 x86
x86_64
arm64v8
ppc64le
x86
x86_64
x86_64 x86_64 x86_64
Billedstørrelse
(tag:seneste)
129 MB 120 MB 193 MB 99 MB 178 MB 87 MB
Første forpligtelse 18. maj 2014 16. november 2014 3. januar 2016 18. maj 2014 15. februar 2015 17. maj 2015
Bidragydere 18 9 15 14 30 20
Github Star 1267 292 113 320 89 152
Github Fork 1291 245 121 1291** 146 71

Taget fra Docker Hub-siden.
Forked fra MySQL docker-projektet.

mysql (Docker)

Billederne er bygget og vedligeholdt af Docker-fællesskabet med hjælp fra MySQL-teamet. Det kan betragtes som de mest populære offentligt tilgængelige MySQL-serverbilleder hostet på Docker Hub og en af ​​de tidligste på markedet (den første commit var 18. maj 2014). Det er blevet fordelt ~1300 gange med 18 aktive bidragydere. Den understøtter Docker-versionen ned til 1.6 efter bedste indsats. På nuværende tidspunkt er alle MySQL-hovedversionerne understøttet - 5.5, 5.6, 5.7 og 8.0 kun på x86_64-arkitektur.

De fleste af MySQL-billederne bygget af andre er inspireret af den måde, dette billede blev bygget på. MariaDB, Percona og MySQL Server (Oracle)-billeder følger lignende miljøvariabler, konfigurationsfilstruktur og containerinitialiseringsproces.

Følgende miljøvariabler er tilgængelige på de fleste af MySQL-containerbillederne på Docker Hub:

  • MYSQL_ROOT_PASSWORD
  • MYSQL_DATABASE
  • MYSQL_USER
  • MYSQL_PASSWORD
  • MYSQL_ALLOW_EMPTY_PASSWORD
  • MYSQL_RANDOM_ROOT_PASSWORD
  • MYSQL_ONETIME_PASSWORD

Billedstørrelsen (tag:nyeste) er gennemsnitligt lille (129 MB), nem at bruge, velholdt og opdateret regelmæssigt af vedligeholderen. Hvis din applikation kræver den nyeste MySQL-databasecontainer, er dette det mest anbefalede offentlige billede, du kan bruge.

mariadb (Docker)

Billederne vedligeholdes af Docker-fællesskabet med hjælp fra MariaDB-teamet. Det bruger den samme bygningsstruktur som mysql (Docker)-billedet, men det leveres med understøttelse af flere arkitekturer:

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

I skrivende stund understøtter billederne MariaDB version 5.5 op til 10.4, hvor billedet med den "seneste" tag-størrelse er omkring 120MB. Dette billede tjener som et generelt billede og følger instruktionerne, miljøvariablerne og konfigurationsfilstrukturen som mysql (Docker). De fleste applikationer, der krævede MySQL som databasebackend, er almindeligvis kompatible med MariaDB, da begge taler den samme protokol.

MariaDB-serveren plejede at være en forgrening af MySQL, men nu er den blevet omdirigeret væk fra den. Med hensyn til databasearkitekturdesign er nogle MariaDB-versioner ikke 100% kompatible og ikke længere en drop-in-erstatning med deres respektive MySQL-versioner. Tjek denne side for detaljer. Der er dog måder at migrere mellem hinanden ved at bruge logisk backup. Simpelthen sagt, at når du først er i MariaDB-økosystemet, skal du sandsynligvis holde fast i det. Blanding eller skift mellem MariaDB og MySQL i en klynge anbefales ikke.

Hvis du gerne vil konfigurere en mere avanceret MariaDB-opsætning (replikering, Galera, sharding), er der andre billeder bygget til at opnå dette mål meget nemmere, f.eks. bitnami/mariadb som forklaret længere nede.

percona (Docker)

Percona Server er en fork af MySQL skabt af Percona. Disse er de eneste officielle Percona Server Docker-billeder, skabt og vedligeholdt af Percona-teamet. Det understøtter både x86- og x86_64-arkitektur, og billedet er baseret på CentOS 7. Percona vedligeholder kun de seneste 3 store MySQL-versioner til containerbilleder - 5.6, 5.7 og 8.0.

Kodelageret påpeger, at første commit var 3. januar 2016 med 15 aktive bidragydere, hovedsagelig fra Perconas udviklingsteam. Percona Server til MySQL kommer med XtraDB-lagringsmotor (en drop-in-erstatning for InnoDB) og følger opstrøms Oracle MySQL-udgivelserne meget tæt (inklusive alle fejlrettelserne i den) med nogle ekstra funktioner som MyRocks storage-motor, TokuDB samt Perconas egne fejlrettelser. På en måde kan du tænke på det som en forbedret version af Oracles MySQL. Du kan nemt skifte mellem MySQL- og Percona Server-billeder, forudsat at du kører på den kompatible version.

Billederne genkender to yderligere miljøvariabler for TokuDB og RocksDB til MySQL (tilgængelig siden v5.6):

  • INIT_TOKUDB - Indstil til 1 for at tillade, at containeren startes med aktiveret TOKUDB-lagermotor.
  • INIT_ROCKSDB - Indstil til 1 for at tillade, at containeren startes med aktiveret ROCKSDB-lagermotor.

mysql-server (Oracle)

Depotet er fordelt fra mysql af Docker-teamet. Billederne er oprettet, vedligeholdt og understøttet af MySQL-teamet hos Oracle, der er bygget oven på Oracle Linux 7-grundbilledet. MySQL 8.0-billedet leveres med MySQL Community Server (minimal) og MySQL Shell, og serveren er konfigureret til at eksponere X-protokollen på port 33060 fra minimalt lager. Den minimale pakke er designet til brug af de officielle Docker-billeder til MySQL. Det skærer nogle af de ikke-essentielle dele af MySQL ud som innochecksum, myisampack, mysql_plugin, men er ellers det samme produkt. Derfor har den et meget lille billedfodaftryk, som er omkring 99 MB.

Et vigtigt punkt at bemærke er, at billederne har et indbygget sundhedstjekscript, hvilket er meget praktisk for nogle mennesker, der har brug for en nøjagtig tilgængelighedslogik. Ellers skal folk skrive en brugerdefineret Docker's HEALTHCHECK-kommando (eller script) for at kontrollere containerens tilstand.

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

Containerbillederne er bygget og vedligeholdt af CentOS-teamet, som inkluderer MySQL-databaseserver til OpenShift og generel brug. For RHEL-baserede billeder kan du hente dem fra Red Hats Container Catalog, mens de CentOS-baserede billeder hostes offentligt på Docker Hub på forskellige sider for hver større version (liste kun billeder med 10M+ downloads):

  • 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

Billedstrukturen er lidt anderledes, og den gør ikke brug af billedtag som andre, så billednavnet bliver i stedet en smule længere. Når det er sagt, skal du gå til den korrekte Docker Hub-side for at få den hovedversion, du vil trække.

Ifølge kodelagersiden har 30 bidragydere samarbejdet i projektet siden 15. februar 2015. Det understøtter kun MySQL 5.5 op til 8.0 og MariaDB 5.5 indtil 10.2 til x86_64-arkitektur. Hvis du er stærkt afhængig af Red Hat containeriseringsinfrastruktur som OpenShift, er disse sandsynligvis de mest populære eller velholdte billeder til MySQL og MariaDB.

Følgende miljøvariable påvirker MySQL/MariaDB-konfigurationsfilen, og de er alle valgfrie:

  • 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:32M eller 10 % af tilgængelig hukommelse)
  • MYSQL_SORT_BUFFER_SIZE (standard:256K)
  • MYSQL_READ_BUFFER_SIZE (standard:8M eller 5 % af tilgængelig hukommelse)
  • MYSQL_INNODB_BUFFER_POOL_SIZE (standard:32M eller 50 % af tilgængelig hukommelse)
  • MYSQL_INNODB_LOG_FILE_SIZE (standard:8M eller 15 % af tilgængelig hukommelse)
  • MYSQL_INNODB_LOG_BUFFER_SIZE (standard:8M eller 15 % af tilgængelig hukommelse)
  • MYSQL_DEFAULTS_FILE (standard:/etc/my.cnf)
  • MYSQL_BINLOG_FORMAT (standard:sætning)
  • MYSQL_LOG_QUERIES_ENABLED (standard:0)

Billederne understøtter MySQL auto-tuning, når MySQL-billedet kører med parametersættet --memory, og hvis du ikke har angivet værdi for følgende parametre, vil deres værdier automatisk blive beregnet baseret på den tilgængelige hukommelse:

  • 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%)
Severalnines DevOps Guide til Database Management Lær om, hvad du skal vide for at automatisere og administrere dine open source-databaser. Download gratis

bitnami/mariadb

Billederne er bygget og vedligeholdt af Bitnami, eksperter i softwarepakning i virtuel eller cloud-implementering. Billederne frigives dagligt med de seneste tilgængelige distributionspakker og bruger et minimalistisk Debian-baseret billede kaldet minideb. Således er billedstørrelsen for det seneste tag den mindste blandt alle, hvilket er omkring 87 MB. Projektet har 20 bidragydere, og den første commit fandt sted den 17. maj 2015. I skrivende stund understøtter det kun MariaDB 10.1 frem til 10.3.

Et fremragende træk ved dette billede er evnen til at implementere en meget tilgængelig MariaDB-opsætning via Docker-miljøvariabler. En MariaDB master-slave-replikeringsklynge med nul nedetid kan nemt konfigureres med Bitnami MariaDB Docker-billedet ved hjælp af følgende miljøvariable:

  • MARIADB_REPLICATION_MODE:Replikeringstilstanden. Mulige værdier master/slave. Ingen standardindstillinger.
  • MARIADB_REPLICATION_USER:Replikeringsbrugeren oprettet på masteren ved første kørsel. Ingen standardindstillinger.
  • MARIADB_REPLICATION_PASSWORD:Replikeringsbrugernes adgangskode. Ingen standardindstillinger.
  • MARIADB_MASTER_HOST:Værtsnavn/IP for replikeringsmaster (slaveparameter). Ingen standardindstillinger.
  • MARIADB_MASTER_PORT_NUMBER:Serverport for replikeringsmasteren (slaveparameter). Standard er 3306.
  • MARIADB_MASTER_ROOT_USER:Bruger på replikeringsmaster med adgang til MARIADB_DATABASE (slaveparameter). Som standard er root
  • MARIADB_MASTER_ROOT_PASSWORD:Adgangskode for bruger på replikeringsmaster med adgang til
  • MARIADB_DATABASE (slaveparameter). Ingen standardindstillinger.

I en replikeringsklynge kan du have en master og nul eller flere slaver. Når replikering er aktiveret, er masternoden i læse-skrivetilstand, mens slaverne er i skrivebeskyttet tilstand. For den bedste ydeevne er det tilrådeligt at begrænse læsningerne til slaverne.

Derudover understøtter disse billeder også implementering på Kubernetes som Helm Charts. Du kan læse mere om installationstrinnene i Bitnami MariaDB Chart GitHub-lageret.

Konklusioner

Der er tonsvis af MySQL-serverbilleder, der er blevet bidraget af fællesskabet, og vi kan ikke dække dem alle her. Husk, at disse billeder er populære, fordi de er bygget til generel brug. Nogle mindre populære billeder kan gøre meget mere avancerede ting, såsom databasebeholderorkestrering, automatisk bootstrapping og automatisk skalering. Forskellige billeder giver forskellige tilgange, der kan bruges til at løse andre problemer.


  1. SQL-tabel med listeindgang vs SQL-tabel med en række for hver post

  2. Hvad er Oracle-ækvivalenten til SQL Servers IsNull()-funktion?

  3. Konverter tidsstempeldatatype til unix-tidsstempel Oracle

  4. Brug kun tastaturnavigation i Word, Excel og PowerPoint (Del 3:Opgaveruder)