Docker: Erstellen Sie einen MariaDB- oder MySQL-Container

In diesem Tutorial erkläre ich, wie man mit Docker einen MariaDB- oder MySQL-Container erstellt.

Heutzutage sind in Unternehmen immer mehr Anwendungen vorhanden, die eine Datenbank erfordern.

Bisher hatten wir oft einen dedizierten Server für MySQL- oder MariaDB-Datenbanken, oder alle Datenbanken koexistierten auf demselben Server und mit demselben Dienst. Um sie zu „isolieren“, mussten wir für jede Datenbank dedizierte Benutzer erstellen.

Das Problem bei dieser Lösung besteht in der gemeinsamen Nutzung desselben Dienstes. Wenn eine Anwendung durch eine Abfrage den Datenbankserver zum Absturz bringt, sind alle Anwendungen davon betroffen.

Mit Docker können wir mehrere verschiedene Instanzen auf demselben Server ausführen und MariaDB- und MySQL-Server isolieren.

Diese Lösung bietet uns auch Flexibilität hinsichtlich der Versionen, da bestimmte Herausgeber bestimmte Versionen wünschen.

Um zu beginnen, benötigen Sie einen Linux-Server mit installiertem Docker und Docker-Compose. Falls Sie dies benötigen, habe ich dieses Thema im folgenden Tutorial behandelt: Installieren von Docker auf Ubuntu und Debian.

Um die Bereitstellung von MariaDB- und/oder MySQL-Datenbanken zu erleichtern, habe ich eine Reihe von docker-compose.yml- und .env-Dateien erstellt, die unter dieser Adresse wiederverwendet werden können : https://git.rdr-it.com/docker/mariadb-or-mysql-container

Um das Tutorial und die Verwendung von Dateien zu veranschaulichen, werden wir zwei Datenbankcontainer bereitstellen, einen MariaDB und einen MySQL.

Bevor Sie beginnen, müssen Sie wissen, welche Versionen Sie benötigen, und die Versions-Tags abrufen:

Erstellen Sie auf dem Server einen Ordner, der den Container aufnehmen soll:

sudo mkdir mariadb-c1

Ich für meinen Teil erstelle normalerweise einen Containerordner im Stammverzeichnis und erstelle dann pro Container einen Unterordner.

Platzieren Sie es in dem Ordner, den Sie gerade erstellt haben, und klonen Sie das Repository hinein:

sudo git clone https://git.rdr-it.com/docker/mariadb-or-mysql-container.git .

Sobald das Repository geklont ist, bearbeiten wir die .env-Datei, die alle Container-Anpassungsparameter enthält.

sudo nano .env

Hier ist die Liste der zu bearbeitenden Parameter:

EinstellungWert
NAME_CONTAINERContainername
DB_ENGINEmariadb oder mysql
DB_VERSIONMarkieren Sie das gewünschte Bild für die Datenbank-Engine
PORT_EXPOSEVon wo aus der MySQL- oder MariaDB-Dienst verfügbar sein wird
MYSQL_DATABASEName der Datenbank, die erstellt wird
MYSQL_ROOT_PASSWORDRoot-Kontokennwort
MYSQL_USERBenutzer, der gleichzeitig mit der Datenbank erstellt wird
MYSQL_PASSWORDBenutzerkennwort MYSQL_USER

So sieht die Datei aus, um einen MariaDB-Container in Version 10.9 mit einer db1-Datenbank zu haben. Der Container wird auf Port 40001 des Hostservers verfügbar gemacht.

Jetzt muss nur noch der Container gestartet werden:

sudo docker compose up -d

Falls das Image nicht vorhanden ist, wird es zunächst heruntergeladen und anschließend der Container gestartet. Alternativ hätten Sie das Image auch zuvor mit dem Befehl „sudo docker-compose pull“ auf den Docker-Server hochladen können.

Mit dem Befehl sudo docker ps können wir sehen, dass unser Container läuft:

Wir wiederholen den Vorgang, diesmal um einen MySQL 5.7-Container zu erhalten:

Jetzt können wir sehen, dass ich zwei Container (Server) habe, MariaDB und MySQL, die auf demselben Server laufen:

Wenn Sie eine Datenbank in einem Container wiederherstellen müssen, lautet der Befehl wie folgt:

sudo docker exec -i <container-name> mysql --user <user> --password=<password-for-user> <database> < </home/my-user/backup-file.sql>

Sie wissen jetzt, wie Sie MariaDB- und MySQL-Container auf demselben Server bereitstellen.

Bei Verwendung eines Containers steht der MySQL/MariaDB-Server automatisch für den Remote-Zugriff zur Verfügung.

Romain Drouche
Systemarchitekt | MCSE: Kerninfrastruktur
IT-Infrastrukturexperte mit über 15 Jahren Berufserfahrung. Aktuell tätig als Projektmanager für Systeme und Netzwerke sowie als Experte für Informationssystemsicherheit, nutze ich mein Fachwissen, um die Zuverlässigkeit und Sicherheit technologischer Umgebungen zu gewährleisten.

Schreibe einen Kommentar