sql >> Databasteknik >  >> RDS >> MariaDB

Populära Docker-bilder för MySQL och MariaDB Server

En Docker-bild kan byggas av alla som har förmågan att skriva ett skript. Det är därför det finns många liknande bilder som byggs av samhället, med mindre skillnader men som verkligen tjänar ett gemensamt syfte. En bra (och populär) containerbild måste ha välskriven dokumentation med tydliga förklaringar, ett aktivt underhållet repository och med regelbundna uppdateringar. Kolla in det här blogginlägget om du vill lära dig hur du bygger och publicerar din egen Docker-bild för MySQL, eller det här blogginlägget om du bara vill lära dig grunderna i att köra MySQL på Docker.

I det här blogginlägget kommer vi att titta på några av de mest populära Docker-bilderna för att köra vår MySQL- eller MariaDB-server. Bilderna vi har valt är allmänna allmänna bilder som åtminstone kan köra en MySQL-tjänst. Vissa av dem inkluderar icke-nödvändiga MySQL-relaterade applikationer, medan andra bara fungerar som en vanlig mysqld-instans. Listan här är baserad på resultatet av Docker Hub, världens största bibliotek och community för containerbilder.

TLDR

Följande tabell sammanfattar de olika alternativen:

Aspekt MySQL (Docker) MariaDB (Docker) Percona (Docker) MySQL (Oracle) MySQL/MariaDB (CentOS) MariaDB (Bitnami)
Nedladdningar 10 miljoner+ 10 miljoner+ 10 miljoner+ 10 miljoner+ 10 miljoner+ 10 miljoner+
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
Projektsida mysql mariadb percona-docker mysql-docker mysql-container bitnami-docker-mariadb
Basbild Debian 9 Ubuntu 18.04 (bionic)
Ubuntu 14.04 (pålitlig)
CentOS 7 Oracle Linux 7 RHEL 7
CentOS 7
Debian 9 (minideb)
Oracle Linux 7
Databasversioner som stöds 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
Plattformar som stöds x86_64 x86
x86_64
arm64v8
ppc64le
x86
x86_64
x86_64 x86_64 x86_64
Bildstorlek
(tagg:senaste)
129 MB 120 MB 193 MB 99 MB 178 MB 87 MB
Första commit 18 maj 2014 16 november 2014 3 januari 2016 18 maj 2014 15 februari 2015 17 maj 2015
Bidragsgivare 18 9 15 14 30 20
Github Star 1267 292 113 320 89 152
Github Fork 1291 245 121 1291** 146 71

Taget från Docker Hub-sidan.
Forked från MySQL docker-projekt.

mysql (Docker)

Bilderna byggs och underhålls av Docker-communityt med hjälp av MySQL-teamet. Det kan anses vara de mest populära allmänt tillgängliga MySQL-serverbilderna som finns på Docker Hub och en av de tidigaste på marknaden (den första commit var 18 maj 2014). Det har splittrats ~1300 gånger med 18 aktiva bidragsgivare. Den stöder Docker-versionen ner till 1.6 på bästa sätt. I skrivande stund stöds alla huvudversioner av MySQL - 5.5, 5.6, 5.7 och 8.0 endast på x86_64-arkitektur.

De flesta MySQL-bilder som byggts av andra är inspirerade av hur denna bild byggdes. MariaDB, Percona och MySQL Server (Oracle)-avbildningar följer liknande miljövariabler, konfigurationsfilstruktur och processflöde för containerinitiering.

Följande miljövariabler är tillgängliga på de flesta av MySQL-behållaravbildningarna på Docker Hub:

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

Bildstorleken (tagg:senaste) är genomsnittligt liten (129MB), lätt att använda, väl underhållen och uppdateras regelbundet av underhållaren. Om din applikation kräver den senaste MySQL-databasbehållaren är detta den mest rekommenderade offentliga bilden du kan använda.

mariadb (Docker)

Bilderna underhålls av Docker-communityt med hjälp av MariaDB-teamet. Den använder samma byggnadsstruktur som mysql (Docker)-bilden, men den kommer med stöd för flera arkitekturer:

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

När detta skrivs stöder bilderna MariaDB version 5.5 fram till 10.4, där bilden med den "senaste" taggstorleken är runt 120MB. Den här bilden fungerar som en allmän bild och följer instruktionerna, miljövariablerna och konfigurationsfilstrukturen som mysql (Docker). De flesta applikationer som krävde MySQL som databasbackend är vanligtvis kompatibla med MariaDB, eftersom båda talar samma protokoll.

MariaDB-servern brukade vara en gaffel av MySQL men nu har den omdirigerats bort från den. När det gäller databasarkitekturdesign är vissa MariaDB-versioner inte 100% kompatibla och inte längre en drop-in-ersättning med deras respektive MySQL-versioner. Kolla in den här sidan för detaljer. Det finns dock sätt att migrera mellan varandra genom att använda logisk säkerhetskopiering. Enkelt sagt, att när du väl är i MariaDB-ekosystemet måste du förmodligen hålla fast vid det. Att blanda eller byta mellan MariaDB och MySQL i ett kluster rekommenderas inte.

Om du skulle vilja ställa in en mer avancerad MariaDB-installation (replikering, Galera, sharding), finns det andra bilder som är byggda för att uppnå det målet mycket lättare, t.ex. bitnami/mariadb som förklaras längre ner.

percona (Docker)

Percona Server är en gaffel av MySQL skapad av Percona. Dessa är de enda officiella Percona Server Docker-bilderna, skapade och underhållna av Percona-teamet. Den stöder både x86- och x86_64-arkitektur och bilden är baserad på CentOS 7. Percona underhåller bara de senaste 3 stora MySQL-versionerna för containerbilder - 5.6, 5.7 och 8.0.

Kodarkivet påpekar att första commit var 3 januari 2016 med 15 aktiva bidragsgivare mestadels från Perconas utvecklingsteam. Percona Server för MySQL kommer med XtraDB-lagringsmotor (en drop-in-ersättning för InnoDB) och följer uppströms Oracle MySQL-utgåvorna mycket noga (inklusive alla buggfixar i den) med några ytterligare funktioner som MyRocks lagringsmotor, TokuDB samt Perconas egna buggfixar. På ett sätt kan du se det som en förbättrad version av Oracles MySQL. Du kan enkelt växla mellan MySQL- och Percona Server-bilder, förutsatt att du använder den kompatibla versionen.

Bilderna känner igen två ytterligare miljövariabler för TokuDB och RocksDB för MySQL (tillgänglig sedan v5.6):

  • INIT_TOKUDB - Ställ in på 1 för att tillåta att behållaren startas med aktiverad TOKUDB-lagringsmotor.
  • INIT_ROCKSDB - Ställ in på 1 för att tillåta att behållaren startas med aktiverad ROCKSDB-lagringsmotor.

mysql-server (Oracle)

Förvaret är splittrat från mysql av Docker-teamet. Bilderna skapas, underhålls och stöds av MySQL-teamet på Oracle, byggt ovanpå Oracle Linux 7 basbild. MySQL 8.0-bilden kommer med MySQL Community Server (minimal) och MySQL Shell och servern är konfigurerad att exponera X-protokollet på port 33060 från minimalt arkiv. Det minimala paketet designades för användning av de officiella Docker-bilderna för MySQL. Det klipper bort några av de icke-essentiella delarna av MySQL som innochecksum, myisampack, mysql_plugin, men är annars samma produkt. Därför har den en mycket liten bildyta som är cirka 99 MB.

En viktig punkt att notera är att bilderna har ett inbyggt hälsokontrollskript, vilket är väldigt praktiskt för vissa människor som är i behov av en korrekt tillgänglighetslogik. Annars måste folk skriva ett anpassat Dockers HEALTHCHECK-kommando (eller skript) för att kontrollera behållarens hälsa.

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

Behållarbilderna byggs och underhålls av CentOS-teamet som inkluderar MySQL-databasserver för OpenShift och allmän användning. För RHEL-baserade bilder kan du hämta dem från Red Hats Container Catalog medan de CentOS-baserade bilderna finns offentligt på Docker Hub på olika sidor för varje större version (lista endast bilder med 10 miljoner nedladdningar):

  • 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

Bildstrukturen är lite annorlunda och den använder sig inte av bildtagg som andra, därför blir bildnamnet lite längre istället. Med det sagt måste du gå till rätt Docker Hub-sida för att få den huvudversion du vill hämta.

Enligt kodförrådets sida har 30 bidragsgivare samarbetat i projektet sedan 15 februari 2015. Det stöder MySQL 5.5 upp till 8.0 och MariaDB 5.5 till 10.2 endast för x86_64-arkitektur. Om du är mycket beroende av Red Hats containeriseringsinfrastruktur som OpenShift, är dessa förmodligen de mest populära eller välskötta bilderna för MySQL och MariaDB.

Följande miljövariabler påverkar MySQL/MariaDB-konfigurationsfilen och de är alla valfria:

  • MYSQL_LOWER_CASE_TABLE_NAMES (standard:0)
  • MYSQL_MAX_CONNECTIONS (standard:151)
  • MYSQL_MAX_ALLOWED_PACKET (standard:200 M)
  • 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 miljoner eller 10 % av tillgängligt minne)
  • MYSQL_SORT_BUFFER_SIZE (standard:256K)
  • MYSQL_READ_BUFFER_SIZE (standard:8 miljoner eller 5 % av tillgängligt minne)
  • MYSQL_INNODB_BUFFER_POOL_SIZE (standard:32 miljoner eller 50 % av tillgängligt minne)
  • MYSQL_INNODB_LOG_FILE_SIZE (standard:8 miljoner eller 15 % av tillgängligt minne)
  • MYSQL_INNODB_LOG_BUFFER_SIZE (standard:8 miljoner eller 15 % av tillgängligt minne)
  • MYSQL_DEFAULTS_FILE (standard:/etc/my.cnf)
  • MYSQL_BINLOG_FORMAT (standard:uttalande)
  • MYSQL_LOG_QUERIES_ENABLED (standard:0)

Bilderna stöder MySQL-autojustering när MySQL-bilden körs med parameteruppsättningen --memory och om du inte angav värde för följande parametrar, kommer deras värden att beräknas automatiskt baserat på tillgängligt minne:

  • 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 to Database ManagementLär dig om vad du behöver veta för att automatisera och hantera dina databaser med öppen källkod Ladda ner gratis

bitnami/mariadb

Bilderna byggs och underhålls av Bitnami, experter på mjukvarupaketering i virtuell eller molninstallation. Bilderna släpps dagligen med de senaste tillgängliga distributionspaketen och använder en minimalistisk Debian-baserad avbildning som heter minideb. Således är bildstorleken för den senaste taggen den minsta av alla som är runt 87MB. Projektet har 20 bidragsgivare med den första commit som ägde rum den 17 maj 2015. I skrivande stund stöder det bara MariaDB 10.1 fram till 10.3.

En enastående egenskap hos den här bilden är möjligheten att distribuera en mycket tillgänglig MariaDB-installation via Docker-miljövariabler. Ett MariaDB master-slave replikeringskluster utan driftstopp kan enkelt konfigureras med Bitnami MariaDB Docker-avbildningen med hjälp av följande miljövariabler:

  • MARIADB_REPLICATION_MODE:Replikeringsläget. Möjliga värden master/slave. Inga standardinställningar.
  • MARIADB_REPLICATION_USER:Replikeringsanvändaren som skapades på mastern vid första körningen. Inga standardinställningar.
  • MARIADB_REPLICATION_PASSWORD:Replikeringsanvändarnas lösenord. Inga standardinställningar.
  • MARIADB_MASTER_HOST:Värdnamn/IP för replikeringsmaster (slavparameter). Inga standardinställningar.
  • MARIADB_MASTER_PORT_NUMBER:Serverport för replikeringsmastern (slavparameter). Standard är 3306.
  • MARIADB_MASTER_ROOT_USER:Användare på replikeringsmaster med åtkomst till MARIADB_DATABASE (slavparameter). Grundinställning till root
  • MARIADB_MASTER_ROOT_PASSWORD:Lösenord för användare på replikeringsmaster med åtkomst till
  • MARIADB_DATABASE (slavparameter). Inga standardinställningar.

I ett replikeringskluster kan du ha en master och noll eller fler slavar. När replikering är aktiverad är masternoden i läs-skrivläge, medan slavarna är i skrivskyddat läge. För bästa prestanda är det tillrådligt att begränsa läsningarna till slavarna.

Dessutom stöder dessa bilder även distribution på Kubernetes som Helm Charts. Du kan läsa mer om installationsstegen i Bitnami MariaDB Chart GitHub-förvaret.

Slutsatser

Det finns massor av MySQL-serverbilder som har bidragit med av communityn och vi kan inte täcka dem alla här. Tänk på att dessa bilder är populära eftersom de är byggda för allmänt bruk. Vissa mindre populära bilder kan göra mycket mer avancerade saker, som databasbehållarorkestrering, automatisk bootstrapping och automatisk skalning. Olika bilder ger olika tillvägagångssätt som kan användas för att ta itu med andra problem.


  1. Hämta värden från första och sista raden per grupp

  2. En datamodell för en opinionsbyrå

  3. Kan inte binda argument vid index 2 eftersom indexet ligger utanför intervallet

  4. MySQL:välja rader där en kolumn är null