Wenn Sie vorhaben, MariaDB auf Ihrem System zu installieren, möchten Sie es möglicherweise vom Rest des Systems isolieren, damit Sie nichts kaputt machen. Zugegeben, Sie können eine virtuelle Maschine verwenden, aber es würde viele Ressourcen erfordern, da Sie ein ganzes System übereinander installieren müssen. Warum also nicht Docker für MariaDB bereitstellen?
Wenn Sie nur begrenzte Hardware haben, kein Problem, Docker kann helfen! Docker ist eine leichtgewichtige Virtualisierungslösung. Und in diesem Tutorial erfahren Sie, wie Sie eine Produktions-Docker für MariaDB-Serverinstallation in einem Docker-Container mit weniger Ressourcenverbrauch bereitstellen.
Lesen Sie weiter und verschwenden Sie nie wieder Ihre Ressourcen!
Voraussetzungen
Dieses Tutorial wird eine praktische Demonstration sein. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie Folgendes haben.
- Ein Linux-Rechner – Diese Demo verwendet Ubuntu 20.04 LTS, aber alle Linux-Distributionen funktionieren.
- Docker auf Ihrem Computer installiert.
- Ein Nicht-Root-Benutzer mit sudo-Berechtigungen.
Arbeiten mit MariaDB-Docker-Image
Der beste Weg, um mit MariaDB auf Ihrem Computer zu arbeiten, ist die Verwendung des offiziellen Docker-Images für MariaDB. Das Image enthält eine Installation der neuesten stabilen Version von MariaDB sowie einige Skripte, die Ihnen bei der Verwaltung des Containers helfen.
1. Führen Sie das apt update
aus Befehl unten, um sicherzustellen, dass Ihr System auf dem neuesten Stand ist. Dieser Befehl ruft die neuesten Paketlisten aus den Repositories von Ubuntu ab und installiert alle verfügbaren Pakete.
sudo apt update -y

2. Als nächstes führen Sie systemctl
aus Befehl unten, um den docker
zu starten Service.
sudo systemctl start docker
Das Starten des Docker-Dienstes liefert keine Ausgabe. Wenn Sie jedoch Docker-bezogene Befehle ausführen, während Docker nicht ausgeführt wird, erhalten Sie die folgende Fehlermeldung.

3. Führen Sie den docker status
aus Befehl unten, um sicherzustellen, dass der docker
Dienst läuft.
sudo service docker status
Unten sehen Sie, dass der Docker-Dienst aktiv ist (wird ausgeführt).

4. Führen Sie abschließend gpasswd
aus Befehl unten, um Ihren aktuellen Benutzer zum Docker hinzuzufügen Gruppe. Dadurch kann der Benutzer docker
ausführen Befehle.
sudo gpasswd -a "${USER}" docker

Hinzufügen des aktuellen Benutzers zum Docker Gruppe bewahrt Sie vor dem folgenden Fehler, wenn Sie einen Docker-Befehl ausführen.

5. Führen Sie die folgende docker search
aus Befehl, um nach dem MariaDB-Image zu suchen. Dieser Befehl durchsucht den Docker Hub (offizieller Satz von Repositorys) nach Bildern, die mit mariadb
übereinstimmen und gibt die Ergebnisse zurück.
sudo docker search mariadb
Markieren Sie jedes Image, das Sie zur Installation von MariaDB verwenden möchten. Diese Demo verwendet das offizielle Image namens mariadb, weil es gut gewartet wird.
Die Spalte OFFIZIELL zeigt einen OK-Status, wenn ein Bild offiziell ist. Wenn das Bild nicht den OK-Status hat, wird das Bild von einem Community-Entwickler beigetragen. In diesem Fall müssen Sie sich an den Entwickler wenden, wenn Sie Probleme mit dem Bild haben.

6. Führen Sie nun den docker pull
aus Befehl, um das (in Schritt fünf) ausgewählte Image aus dem Docker-Repository herunterzuladen. Dieser Befehl lädt (pull
) das ausgewählte Bild aus seinem offiziellen Repository und speichert es auf Ihrem lokalen Computer.
sudo docker pull mariadb
Wenn der Befehl abgeschlossen ist, erhalten Sie die neueste stabile Version des MariaDB-Images auf Ihrem Server, wie unten gezeigt.

Wenn Sie es vorziehen, frühere Versionen zu installieren, können Sie die für dieses Image verfügbaren Tags verwenden. Navigieren Sie zu Bild-Tag/s -Spalten in Dockerhub, um alle Versionen anzuzeigen, führen Sie dann den Docker-Pull-Befehl aus und geben Sie die genaue Version an, wie unten gezeigt. sudo docker pull mariadb:10.2
7. Führen Sie abschließend die docker images
aus Befehl, um alle auf Ihrem Server vorhandenen Bilder aufzulisten. Zu diesem Zeitpunkt sollten Sie ein gültiges MariaDB-Docker-Image auf Ihrem Server haben.
sudo docker images
Unten können Sie sehen, dass mariadb der Name des Docker-Images mit einem Tag als neuestes ist.

Erstellen eines MariaDB-Containers zum Ausführen eines lokalen MariaDB-Servers
Nachdem Sie nun das MariaDB-Image auf Ihrem Server haben, können Sie einen Container mit diesem Image ausführen. Ein Container ist eine isolierte, ressourcengesteuerte und portable Laufzeitumgebung, die auf einem Betriebssystem ausgeführt wird.
Sie müssen zuerst ein neues opt/mariadb/backup erstellen Verzeichnis auf Ihrem Server, um die Sicherungsdatei zu speichern, die Sie in dieser Demo erstellen. Das Sichern Ihrer Daten in Ihrer Produktionsumgebung ist entscheidend, bevor Sie Änderungen vornehmen, falls etwas schief geht.
Wenn Sie das interne Volume eines Containers ändern, wird diese Änderung in das zugeordnete Hostverzeichnis kopiert. Um also eine Sicherungskopie aller Containerdaten zu behalten, erstellen Sie das Volume auf dem lokalen Server.
1. Führen Sie den folgenden Befehl aus, um opt/mariadb/backup
zu erstellen Verzeichnis. Das -p
Die Option stellt sicher, dass das übergeordnete Verzeichnis vorhanden ist, bevor dieses Verzeichnis erstellt wird.
Wenn eines der übergeordneten Verzeichnisse im Pfad nicht existiert, schlägt der Befehl fehl.
sudo mkdir -p opt/mariadb/backup

2. Führen Sie als nächstes den docker run
aus Befehl unten, um einen Docker-Container aus der mariadb
zu erstellen Bild. Dieser Befehl führt Folgendes aus:
- Karten (
-v
) das Standardverzeichnis für die MariaDB-Daten (/var/lib/mysql
) in Ihrem Docker-Container in Ihrem Hostverzeichnis (/opt/mariadb/backup
).
- Deklariert die MariaDB-Umgebungsvariable (
-e
)MYSQL_ROOT_PASSWORD
um das Root-Passwort für den MariaDB-Server zu speichern. Achten Sie darauf,ata123
zu ersetzen mit Ihrem sicheren Passwort.
- Teilt Docker mit, den Container im getrennten Modus zu starten (
-d
), sodass der Container im Hintergrund ausgeführt wird. Dadurch können Sie die aktuelle Sitzung verlassen und weiterarbeiten, während dieser Container im Hintergrund ausgeführt wird. Wenn nicht, erhalten Sie eine leere Eingabeaufforderung und müssen den laufenden Container beenden.
- Gibt den Namen des Containers an (
--name mariadbata
) erschaffen. Sie könnenmariadbata
ersetzen mit Ihrem eindeutigen Wunschnamen.
- Stellt den Standard-MariaDB-Port 3306 für den Host-Rechner bereit (
-p 3306:3306
) (wo der MariaDB-Dienst Ihre Client-Verbindungen abhört). Im Fall des Produktionsservers ordnen Sie den Standardport dem Produktionsport zu. Aber Sie können3306
ersetzen mit einer anderen Produktionsportnummer.
sudo docker run --name mariadbata -p 3306:3306 -v /opt/mariadb/backup:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=ata123 -d mariadb
Zu diesem Zeitpunkt wird der Container erstellt und im Hintergrund ausgeführt, aber Sie können sich nie sicher sein. Daher verifizieren Sie den Container im nächsten Schritt.

3. Führen Sie docker ps
aus Befehl, um zu überprüfen, ob Ihr Docker-Container aktiv ist oder nicht.
sudo docker ps
Sie können unten sehen, dass der Container „mariadbata“ seit 7 Minuten aktiv ist und Port 3306 auf allen Hostschnittstellen abhört. Sie können auch die ID (3a7fa779b559) des Containers sehen.
Sie können diese eindeutige ID verwenden, um eine Verbindung zum Container herzustellen, Container aufzulisten, Container zu stoppen oder den Container zu löschen.
4. Führen Sie nun docker exec
aus Befehl unten, um die Version des MariaDB-Servers in mariadbata
zu überprüfen Container.
sudo docker exec -it mariadbata mysql -V
Zum Zeitpunkt des Schreibens ist die neueste Version von mariadb 10.6.5, wie unten gezeigt, und Ihre Version kann anders sein. Da MariaDB ein Fork von MySQL ist, hat Docker den mysql-Client als Standardclient verwendet, um mit dem unten gezeigten MariaDB-Dienst zu interagieren.

5. Führen Sie den folgenden Befehl aus, um die MariaDB-Shell aufzurufen (/bin/bash
).
sudo docker exec -it mariadbata /bin/bash
Die Eingabeaufforderung ändert sich von der Ubuntu-Shell zur MariaDB-Shell, wie unten gezeigt.
Unten sehen Sie die Container-ID (3a7fa779b559), die Sie in Schritt drei gesehen haben. Die Container-ID in der Eingabeaufforderung zeigt an, dass Sie sich derzeit im Container „mariadbata“ befinden.

Wenn Sie sich im Container befinden, können Sie alle Befehle mit dem Präfix sudo ausführen, da Sie jetzt der Root-Benutzer dieses Containers sind.
Beispielsweise können Sie den folgenden Befehl apt update ausführen, um die Paketdatenbank im Container ohne das Präfix sudo zu aktualisieren.
apt update -y

6. Führen Sie abschließend den exit
aus Befehl, um die MariaDB-Shell zu verlassen und zu Ihrer Ubuntu-Host-Shell zurückzukehren.
exit

Zugriff auf MariaDB Shell vom Host-Terminal
Sie können auch direkt vom Host-Terminal auf die MariaDB-Shell zugreifen, indem Sie den MariaDB-Client auf dem Host installieren. Dies ist in Situationen hilfreich, in denen Sie nicht jedes Mal zur Container-Shell wechseln möchten.
1. Führen Sie apt install
aus Befehl unten, um den MariaDB-Client auf Ihrem Ubuntu-Host zu installieren.
sudo apt install -y mariadb-client

2. Führen Sie als Nächstes docker inspect
aus Befehl unten, um die IP-Adresse des laufenden Containers zu finden.
sudo docker inspect container-name | grep IPAddress

3. Führen Sie nun mysql
aus Befehl unten, um von Ihrem Host aus eine Verbindung zur Datenbankinstanz herzustellen (-h
) mit Ihrem Benutzernamen (root
) und Passwort (-p
). Denken Sie daran, host_ip
zu ersetzen mit der IP-Adresse Ihres laufenden Docker-Containers.
sudo mysql -u root -p -h host_ip
4. Geben Sie das zuvor eingerichtete Passwort ein (ata123 ) in Schritt zwei, wenn Sie dazu aufgefordert werden, und Sie erhalten die MariaDB-Client-Eingabeaufforderung, wie unten gezeigt.
Sie können dann jeden SQL-Code ausführen, den Sie zum Ausführen auf dem MariaDB-Server benötigen.

5. Führen Sie schließlich ls
aus Befehl unten, um die Sicherungsdateien aufzulisten (opt/mariadb/backup
) des MariaDB-Containers.
ls -l opt/mariadb/backup
Unten sehen Sie eine Liste ähnlicher Dateien. Die Ausgabe zeigt an, dass Sie erfolgreich eine Sicherung des Containers „mariadbata“ erstellt haben. Sie können die Dateien bei Bedarf an einen anderen Speicherort auf Ihrem Host kopieren.

Stoppen und Entfernen des Containers
Vielleicht möchten Sie RAM- oder CPU-Ressourcen freigeben. Wenn dies der Fall ist, können Sie den Container stoppen, indem Sie docker stop
ausführen Befehl und geben Sie entweder die Container-ID oder den Containernamen an.
1. Führen Sie einen der folgenden Befehle aus, um einen bestimmten Container zu stoppen.
# Stops Container by Container Name (mariadbata)
sudo docker stop mariadbata
# Stops Container by Container ID (3a7fa779b559)
sudo docker stop 3a7fa779b559
An diesem Punkt wird der Container angehalten, lebt aber weiterhin auf Ihrem Host, und die Daten bleiben erhalten.

2. Führen Sie nun docker ps
aus Befehl unten, um alle aufzulisten (-a
) Container.
docker ps -a
Wie Sie unten sehen, wird der Container immer noch angezeigt, befindet sich jedoch im Status Beendet, was darauf hinweist, dass der Container angehalten wurde.

3. Führen Sie abschließend den folgenden Befehl aus, um (rm
) der angehaltene Container (mariadbata
). Die Möglichkeit, einen Container zu entfernen, ist praktisch, wenn das Docker-Image möglicherweise nicht Ihren Anforderungen entspricht oder Sie einfach von vorne beginnen möchten.
Beachten Sie, dass Sie den Container zuerst anhalten müssen, bevor Sie ihn mit dem Befehl docker rm entfernen.
sudo docker rm mariadbata
Wenn Sie es vorziehen, den gesamten Container mit seinen Datenmengen zu entfernen, um Ihre Ressourcen zu schonen, hängen Sie die Option -v mit dem sudo-Docker-Befehl wie dem folgenden an.
sudo docker rm -v mariadbata

Führen Sie nun den nachstehenden docker ps-Befehl erneut aus, um alle Container aufzulisten und zu überprüfen, ob der Container vollständig entfernt wurde.
docker ps -a
Wie Sie unten sehen, die mariadbata Container ist mit all seinen Daten verschwunden.

Schlussfolgerung
In diesem Tutorial haben Sie gelernt, einen MariaDB-Docker-Container auf Ihrem Ubuntu-Hostcomputer zu erstellen. Sie haben auch gelernt, wie Sie mithilfe von Datenvolumencontainern einen dauerhaften Speicher für Ihre Docker-Container erstellen, um die Containerdaten zu sichern.
An dieser Stelle können Sie jetzt Ihren eigenen MariaDB-Docker-Container auf Ubuntu erstellen und verwalten.
Warum also nicht mit diesem neu gewonnenen Wissen einen Buddy CI/CD-Workflow mit einem MariaDB Cocker-Container als Datenbank erstellen? Oder sogar einen MariaDB-Dienst für Ihre Anwendungen erstellen?