Diese Anleitung erklärt Schritt für Schritt, wie Sie in nur wenigen Minuten einen neuen MySQL-Server einrichten, der im Docker-Container läuft.
Eines der großartigen Dinge an Docker ist, dass Sie es schnell verwenden können, um Anwendungen auszuprobieren, ohne es direkt auf Ihrem Computer zu installieren. Beispielsweise können Sie Docker verwenden, um eine Datenbank in einem Container als Remote-Server auszuführen und zu testen, wie Ihre Anwendung damit interagiert.
Das Ausführen von MySQL mit Docker-Containern ist ein weit verbreiteter Mechanismus. MySQL ist eine der beliebtesten Datenbanken, die mit Docker-Containern verwendet wird.
Um MySQL als Docker-Container zu erstellen, sollte Docker auf dem Hostcomputer installiert sein. Wenn Sie es nicht installiert haben, finden Sie hier eine Schritt-für-Schritt-Anleitung zur Installation von Docker in Ubuntu.
1. Ziehen Sie das MySQL-Docker-Image
Das erste, was Sie tun müssen, um den MySQL-Server in Docker zu erstellen und zu testen, ist, ein offizielles MySQL-Image aus Docker Hub abzurufen.
Sie können eine bestimmte Version herunterladen, z. B. 8.0, 5.7, 5.6, oder sich für die neueste Version entscheiden, wie im folgenden Befehl gezeigt:
sudo docker pull mysql:latest
Wenn Sie eine bestimmte Version von MySQL wünschen, ersetzen Sie die latest
mit der Versionsnummer.
Sie können die docker images
ausführen Befehl, um eine Liste der Docker-Images anzuzeigen, die Sie aus dem Docker-Hub gezogen haben.
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 2fe463762680 13 hours ago 514MB
Wie Sie sehen können, steht das MySQL-Image jetzt unserem lokal installierten Docker zur Verfügung.
2. Einrichten eines Docker-Volumes
Wie Sie wissen, sind Docker-Container im Prinzip temporär, und alle Daten oder Konfigurationen gehen voraussichtlich verloren, wenn der Container gelöscht wird.
Docker-Volumes bieten jedoch einen Mechanismus zum Persistieren von Daten, die in einem Docker-Container erstellt wurden. Daher sind sie Dockers bevorzugter Mechanismus zum Speichern persistenter Daten von Docker-Containern.
MySQL speichert seine Datendateien im Verzeichnis /var/lib/mysql
Verzeichnis. Vor der Bereitstellung müssen Sie also ein Docker-Volume einrichten, um Ihre Datenbank zu speichern. Andernfalls gehen Ihre Daten beim Neustart des Containers verloren.
Lassen Sie uns ein neues Volume erstellen und es mysql-data
nennen . Es wird verwendet, um alle Ihre Datenbankinformationen zu speichern.
sudo docker volume create mysql-data
Sie können alle Docker bekannten Volumes auflisten, indem Sie den folgenden Befehl ausführen:
sudo docker volume ls
DRIVER VOLUME NAME
local mysql-data
Wie Sie sehen können, hat unser neu erstelltes Docker-Volume den Namen mysql-data
ist hier und bereit, Daten bereitzustellen. Es kann dann an einen frisch gesponnenen MySQL-Container angehängt werden.
3. Ausführen eines MySQL-Docker-Containers
Nachdem Sie nun ein MySQL-Docker-Image auf Ihrem Computer und ein Volume zum Speichern der Daten haben, können Sie einen Container bereitstellen. Sie müssen auch ein Passwort für den MySQL-Root-Benutzer festlegen, indem Sie MYSQL_ROOT_PASSWORD
verwenden Umgebungsvariable.
Lassen Sie uns nun den Container ausführen:
sudo docker run -d --name=mysql-server -p 3306:3306 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=your_password mysql
Das ist es. Dadurch wird die neueste Version der MySQL-Instanz gestartet, auf die mit dem angegebenen Root-Passwort von überall aus remote zugegriffen werden kann.
Um die Dinge transparenter zu machen, lassen Sie uns diese Syntax aufschlüsseln. Zuerst ist hier, was jeder Parameter in diesem Befehl bedeutet:
-d
führt diesen Container in einem getrennten Modus aus, sodass er im Hintergrund ausgeführt wird.--name
weist den Namenmysql-server
zu zu Ihrer Containerinstanz. Wenn Sie dies nicht angeben, generiert Docker einen zufälligen Namen.-p
bindet den MySQL-Container-Port3306
an denselben Port auf Ihrem Hostcomputer. Sie können eine Verbindung zu127.0.0.1
herstellen auf Port3306
Verwendung von MySQL-Clients (mysql
), die auf Ihrem Host ausgeführt werden.-v
Option bindet diesen Datenordner innerhalb des Container-Volumes (/var/lib/mysql
) auf das lokale Docker-Volume (mysql-data
), die Sie im vorherigen Schritt erstellt haben.-e
setzt eine Umgebungsvariable. In diesem Fall das MySQL-Root-Passwort.mysql
ist der Name des Images, das wir verwenden, um den Container zu erstellen.
Sie können überprüfen, ob der Container läuft, indem Sie die laufenden Container auflisten:
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0fc229e3df77 mysql "docker-entrypoint.s…" 37 minutes ago Up 34 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql-server
4. Herstellen einer Verbindung zum MySQL Container
Sie können eine interaktive MySQL-Shell erhalten, indem Sie sie an den Container anhängen und mysql
ausführen Befehl. Dies stellt die vollständige MySQL-Befehlszeilenschnittstelle bereit, um alle vertrauten Befehle und Flags zu verwenden.
sudo docker exec -it mysql-server mysql -u root -p
Sie können sich auch über mysql
mit der MySQL-Docker-Instanz verbinden Client, wenn Sie ihn auf Ihrem Host vorinstalliert haben.
Beachten Sie, dass der MySQL-Client standardmäßig versucht, eine Verbindung über einen UNIX-Socket herzustellen, wenn Sie ihn anweisen, eine Verbindung zu localhost
herzustellen . Verwenden Sie also 127.0.0.1
und nicht localhost
.
mysql -u root -h 127.0.0.1 -p
Natürlich können Sie auch einen GUI-basierten Client wie MySQL Workbench verwenden, um sich mit der Datenbank zu verbinden. Geben Sie beispielsweise in Ihrer MySQL Workbench für „Hostname“ die IP-Adresse der Maschine an, auf der Sie den Docker-Container gestartet haben.
Natürlich können Sie in den oben gezeigten Beispielen für einen Hostnamen die IP-Adresse der Maschine verwenden, auf der der MySQL-Docker-Container arbeitet, anstatt 127.0.0.1.
Sie finden diese Adresse, indem Sie ifconfig
ausführen Befehl ohne Argumente.
Mit der IP-Adresse des Rechners können Sie remote auf den MySQL-Server zugreifen.
5. MySQL-Container stoppen, starten und neu starten
Dieser Befehl wird vorübergehend gestoppt der laufende MySQL-Container (und kann später fortgesetzt/neu gestartet werden):
sudo docker stop mysql-server
Zum Start Führen Sie im MySQL-Container Folgendes aus:
sudo docker start mysql-server
Der folgende Befehl wird zum Neustart verwendet der laufende MySQL-Container:
sudo docker restart mysql-server
Schlussfolgerung
Wie Sie sehen können, ist die Ausführung von MySQL in Docker viel schneller und einfacher als die lokale Installation von MySQL Server. Es gibt jedoch noch viele weitere Dinge zu beachten, wenn Sie MySQL auf Docker für andere Zwecke als zum Testen verwenden möchten.
Weitere Informationen finden Sie auf der MySQL-Seite auf Docker Hub und im offiziellen MySQL-Handbuch zu diesem Thema.
Lassen Sie mich wissen, wenn Sie Fragen oder Anregungen haben. Ich melde mich gerne bei Ihnen.