MongoDB ist eine beliebte, Open-Source-Dokumentendatenbank, die hohe Leistung und große Flexibilität bietet. Aber haben Sie schon einmal versucht, eine MongoDB-Datenbank für Ihre Projekte zu containerisieren? Wenn nicht, dann haben Sie etwas Besonderes vor!
In diesem Tutorial erfahren Sie, wie Sie MongoDB effektiv mit Docker bereitstellen, absichern und verwalten können. Lesen Sie weiter und werden Sie zum Meister der Bereitstellung von Docker MongoDB-Containern!
Voraussetzungen
Dieses Tutorial beinhaltet praktische Demonstrationen. Um mitzumachen, stellen Sie sicher, dass Sie Folgendes haben:
- Eine Ubuntu-Maschine – In diesem Tutorial wird Ubuntu 20.04 LTS verwendet.
- A user with
sudo
permission - Docker – In diesem Tutorial wird Docker 20.10.9 verwendet.
Herunterladen des Docker MongoDB-Images
Bevor Sie einen Docker MongoDB-Container bereitstellen und verwalten können, müssen Sie zuerst ein MongoDB-Image von der Docker Hub herunterladen, damit Sie den MongoDB-Container lokal ausführen können.
Führen Sie den folgenden docker
-Befehl aus, um das MongoDB Community Edition (CE) Image herunterzuladen (pull mongo
), das von Docker Hub gehostet wird. Die neueste Version dieses Images zum Zeitpunkt des Schreibens ist 4.2.
Wie Sie unten sehen können, zieht der Befehl automatisch die neueste Version des Images und markiert es als latest.

Führen Sie nun den Befehl docker images
unten aus, um alle verfügbaren Images auf Ihrem Server aufzulisten.
Unten sehen Sie das MongoDB-Image, das als latest markiert ist.

Bereitstellen eines Docker MongoDB Containers
Aus dem heruntergeladenen MongoDB-Image können Sie jetzt einen MongoDB-Container bereitstellen. Sie initialisieren Ihren MongoDB-Container mit der Mongo-Ausführbaren, erstellen ein Datenverzeichnis. Sie definieren dann die Zuordnung zwischen dem Datenbereich des Docker-Containers und der Host-Maschine.
1. Führen Sie den Befehl mkdir
unten aus, um ein Datenverzeichnis namens mongodata
zu erstellen, um die MongoDB-Datenbank und -Protokolle zu speichern.
2. Führen Sie als nächstes den Befehl docker run
unten aus, um einen Container mit dem Namen mymongo
zu erstellen. Darüber hinaus wird der Container mit einem interaktiven Pseudo-TTY gestartet (-it
), falls Ausgaben angezeigt werden sollen, wenn der Container gestartet wird.
Schließlich wird das neu erstellte Verzeichnis mongodata mit dem internen Verzeichnis /data/db verknüpft (-v
). Die Option -d
startet den Container im detach-Modus, sodass er im Hintergrund läuft und die Konsolenausgabe nach der Erstellung zurückgibt.
Das System erstellt automatisch das Verzeichnis /data/db, wenn Sie den Container ausführen, um Daten von Änderungen, die Sie im Container vornehmen, zu speichern. Dieses Verzeichnis läuft im Modus „nur lesen“ und ermöglicht die persistente Datenspeicherung auf dem Host-System.
Nach erfolgreicher Ausführung des Befehls sehen Sie eine Ausgabe wie die untenstehende.

3. Führen Sie abschließend den Befehl docker ps
aus, um die ID des Containers zu ermitteln und seinen Status zu überprüfen. Der Befehl docker ps
zeigt alle Informationen über den aktuell ausgeführten Container an.
Der Befehl
docker ps
entspricht dem regulärenps
-Befehl in Linux.
In der untenstehenden Ausgabe sehen Sie einen Bereich Ports, der alle dem Container zugewiesenen Ports auflistet, um eingehende Verbindungen anzuhören.
In diesem Beispiel wird der Port 27017 auf den Host abgebildet. Die folgende Ausgabe zeigt an, dass Sie über localhost:27017 vom Host aus auf die MongoDB-Instanz in diesem Container zugreifen können.

Vielleicht möchten Sie die Protokolldatei des Containers
mymongo
einsehen, um festzustellen, was mit Ihrer MongoDB-Datenbank/-Instanz passiert ist, wenn etwas damit schief gelaufen ist. Wenn ja, führen Sie dasdocker logs
-Befehl aus, wie folgt:sudo docker logs docker-container
. Ersetzen Siedocker-container
durch den Namen Ihres Docker-Containers.

Anhängen des Docker MongoDB-Containers an die Bash-Shell
Sie haben gerade einen Docker MongoDB-Container bereitgestellt, aber wie verwalten Sie ihn? Tun Sie dies, indem Sie den Docker-Container zunächst mit dem Bash-Shell mit dem Befehl docker exec
anhängen.
Das Anhängen Ihres Containers an die Bash-Shell ist entscheidend, da der Container derzeit im Detached-Modus (im Hintergrund ausgeführt) läuft. Und wenn der Container im Hintergrund läuft, empfängt der Container weder Eingaben noch zeigt er Ausgaben an.
Führen Sie den Befehl docker exec
unten aus, um Ihren Container (mymongo
) an die Bash-Shell anzuhängen.
Wenn der Befehl abgeschlossen ist, ändert sich Ihr Eingabeaufforderungstext in etwas Ähnliches wie unten angegeben. Die eindeutige alphanumerische Nummer (77782fa95314) ist die Container-ID.
Container-IDs sind unerlässlich, um Namenskonflikte zu vermeiden und Container zwischen Hosts effektiv zu identifizieren. Versuchen Sie also, sie nicht zu ändern.

Führen Sie jetzt den Befehl mongo
ohne Argumente aus, um sich in die MongoDB-Shell im Container (mymongo) einzuloggen. Die MongoDB-Shell ist der Ort, an dem Sie Ihre Mongo-Abfragen/-Befehle ausführen.
Sobald Sie sich im Container befinden, können Sie jeden Befehl ohne das Präfix
sudo
ausführen, da Sie jetzt ein Root-Benutzer innerhalb des Containers sind. Jede Änderung, die Sie im Container vornehmen, wirkt sich nicht auf Ihr Host-System aus.
Anhand des unten gezeigten Prompts können Sie erkennen, dass Sie sich jetzt in der MongoDB-Shell befinden.

Wenn Sie alle verfügbaren Befehle in der MongoDB-Shell anzeigen möchten, führen Sie den Befehl
help
aus, wie unten gezeigt.

Erstellen eines administrativen MongoDB-Benutzers
Nachdem Sie einen MongoDB-Server in einem Docker-Container bereitgestellt haben, erstellen Sie jetzt einen administrativen MongoDB-Benutzer. Ein administrativer Benutzer ermöglicht es Ihnen, sich mit dem MongoDB-Server zu verbinden und Datenbanken zu verwalten.
1. Melden Sie sich erneut in der MongoDB-Shell an und führen Sie den Befehl use
unten aus, um zunächst zur Datenbank admin
zu wechseln. Dadurch erhält der administrative Benutzer die erforderlichen Berechtigungen zur Verwaltung der Datenbanken.

Kopieren und fügen Sie den folgenden Code in die MongoDB-Eingabeaufforderung ein, um einen Administrationsbenutzer zu erstellen.
Der unten stehende Code verwendet die Methode db.createUser()
, um einen Benutzer mit administrativen Rollen zu erstellen. Der Benutzername (user
) und das Passwort (pwd
) sind fest codiert und können nach Ihren Wünschen geändert werden.
Wenn der Code funktioniert, erhalten Sie eine Nachricht wie unten in Ihrer MongoDB-Eingabeaufforderung.

3. Führen Sie die Abfrage quit()
aus, um die MongoDB-Shell zu verlassen.
4. Führen Sie schließlich den folgenden mongo
-Befehl aus, um den Administrationsbenutzer, den Sie erstellt haben (ata
), zu testen, indem Sie eine Verbindung zum MongoDB-Server herstellen. Geben Sie das Passwort für den Administrationsbenutzer ein, wenn Sie dazu aufgefordert werden.
Wie unten zu sehen ist, gibt der MongoDB-Server die MongoDB-Serverversion aus, wenn Sie erfolgreich eine Verbindung zum Server herstellen.

Vielleicht möchten Sie den administrativen Benutzer weiter testen. Führen Sie dazu die unten stehenden Befehle aus, um alle Benutzer in der Datenbank anzuzeigen.
Unten sehen Sie, dass der von Ihnen erstellte administrative Benutzer in der Liste enthalten ist.

Erstellen einer MongoDB-Datenbank
Die Verwaltung eines Docker MongoDB-Containers wäre nicht vollständig ohne die Erstellung einer Datenbank. Sie erstellen eine neue MongoDB-Datenbank, in die Sie Daten über die MongoDB-Shell speichern werden.
1. Führen Sie von innerhalb einer interaktiven Sitzung im Docker-Container den Befehl show dbs
aus, um alle Datenbanken auf Ihrem Server aufzulisten.
Unten sehen Sie eine Admin-Datenbank, eine Konfigurationsdatenbank und eine lokale Datenbank. Die MongoDB-Shell erstellt diese Datenbanken standardmäßig in jedem MongoDB-Server.

2. Führen Sie als Nächstes den Befehl use
aus um eine neue Datenbank zu erstellen. Ersetzen Sie <database_name>
durch den gewünschten Datenbanknamen. Für dieses Beispiel ist die Datenbank jedoch als linux
benannt.
Die Abfrage
use
wechselt die aktuelle Datenbank zu der von Ihnen angegebenen, wenn sie existiert. Wenn nicht, erstellt die Abfrageuse
eine neue Datenbank und wechselt automatisch dazu.

3. Führen Sie erneut den Befehl show dbs
aus, wie Sie es zuvor getan haben (Schritt eins), um zu überprüfen, ob die erstellte Datenbank existiert.
Sie sehen die neu erstellte Datenbank (Linux) immer noch nicht in der Liste? MongoDB erstellt die Datenbank nur, wenn Sie zum ersten Mal Daten darin speichern. Die Daten können in Form einer Sammlung oder sogar eines Dokuments vorliegen.

4. Kopieren Sie jetzt den folgenden Code in die MongoDB-Shell und drücken Sie Enter.
Der untenstehende Code erstellt eine neue Sammlung mit dem Namen linux_version
, den Sie nach Belieben ändern können. Die Sammlung enthält Daten im Format Schlüssel:Wert-Paare.
In der untenstehenden Ausgabe sehen Sie, dass die Sammlung linux_version
erstellt wurde und über eine ObjectID verfügt.

5. Führen Sie den Befehl show collections
aus, um eine Liste der Sammlungen anzuzeigen und zu überprüfen, ob die neue Sammlung linux_version
existiert.
Wie Sie unten sehen können, haben Sie erfolgreich die Sammlung linux_version erstellt.

6. Führen Sie abschließend den Befehl unten aus, um die Daten, die Sie in der Sammlung linux_version
eingefügt haben, anzuzeigen und zu bestätigen. Die Methode pretty() ermöglicht es Ihnen, die Daten in einem für Menschen lesbaren Format anzuzeigen.
Wenn Sie jemals die Daten in der Datenbank ändern, verwenden Sie die
Update()
-Methode.
Sie können untenstehend die Ausgabe in einem viel lesbareren Format sehen.

Neustart des Docker MongoDB-Containers
Zu diesem Zeitpunkt haben Sie einen erfolgreich laufenden Docker MongoDB-Container. Aber was ist, wenn Sie den Container nicht mehr benötigen oder wenn er nicht funktioniert? Ein paar Docker-Befehle können helfen, einen MongoDB Docker-Container anzuhalten, neu zu starten und sogar zu entfernen.
1. Führen Sie den Befehl docker ps
unten aus, um alle laufenden Container aufzulisten.
Notieren Sie sich den Namen und die Container-ID des Containers, den Sie anhalten, neu starten oder entfernen möchten, wie unten gezeigt.

2. Führen Sie anschließend einen der docker stop
-Befehle unten aus, um einen laufenden MongoDB-Container anzuhalten.
3. Führen Sie erneut den Befehl docker ps
aus, wie Sie es zuvor getan haben (Schritt eins), um zu überprüfen, ob der Container heruntergefahren wurde.
Wie Sie unten sehen können, ist der Container nicht in der Liste der laufenden Container aufgeführt, was darauf hinweist, dass Sie den Container erfolgreich angehalten haben.

4. Führen Sie jetzt eines der docker start
-Befehle unten aus, wenn Sie einen Container neu starten möchten.
5. Führen Sie abschließend den Befehl docker ps
erneut aus, um zu sehen, ob der Container läuft.
Vielleicht haben Sie keinen weiteren Verwendungszweck für einen Container. Wenn ja, müssen Sie zuerst den Container anhalten und dann den Befehl
rm
ausführen, um einen Container zu entfernen, wie folgt:sudo docker container rm mongodb
. Ähnlich wie in den vorherigen Beispielen ersetzen Siemongodb
durch den Container-Namen oder die Container-ID.
Schlussfolgerung
In diesem Tutorial haben Sie gelernt, wie Sie einen Docker MongoDB-Container bereitstellen und verwalten, indem Sie einen Administratorbenutzer erstellen, um eine Datenbank zu erstellen und Daten darin zu speichern. Sie haben erkannt, dass Sie Container stoppen, neu starten und entfernen können, die Sie nicht mehr benötigen, um Ihre Docker-Images sauber zu halten.
Die Bereitstellung und Verwaltung von MongoDB mit Docker ist der erste Schritt, um die Containerisierungstechnologie zu nutzen und den Overhead zu reduzieren. Warum nicht diesen ersten Schritt nutzen, um MongoDB weiter zu erkunden und zu sehen, wie ein Docker MongoDB-Container bei Ihren Projekten helfen kann?