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 werden Sie sich freuen!
In diesem Tutorial erfahren Sie, wie Sie MongoDB mit Docker effektiv bereitstellen, sichern und verwalten. Lesen Sie also weiter und werden Sie Ihr eigener Meister der Bereitstellung von Docker MongoDB-Containern!
Voraussetzungen
Dieses Tutorial umfasst praktische Demonstrationen. Um mitzumachen, stellen Sie sicher, dass Sie Folgendes haben:
- Ein Ubuntu-Computer – Dieses Tutorial verwendet Ubuntu 20.04 LTS
- Ein Benutzer mit
sudo
Erlaubnis - Docker – Dieses Tutorial verwendet Docker 20.10.9
Herunterladen des Docker-MongoDB-Images
Bevor Sie einen Docker-MongoDB-Container bereitstellen und verwalten können, müssen Sie zunächst ein MongoDB-Image vom Docker Hub herunterladen, damit Sie den MongoDB-Container lokal ausführen können.
Führen Sie den docker
aus Befehl unten, um das MongoDB Community Edition(CE)-Image herunterzuladen (pull mongo
), die Docker Hub hostet. Die neueste Version dieses Images zum Zeitpunkt des Schreibens ist 4.2.
sudo docker pull mongo
Wie Sie unten sehen können, ruft der Befehl automatisch die neueste Version des Bildes ab und markiert sie als neueste .
Führen Sie nun die docker images
aus Befehl unten, um alle auf Ihrem Server verfügbaren Bilder aufzulisten.
sudo docker images
Unten sehen Sie das als neueste gekennzeichnete MongoDB-Image .
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 ausführbaren Mongo-Datei und erstellen ein Datenverzeichnis. Anschließend definieren Sie die Zuordnung zwischen dem Datenbereich des Docker-Containers und dem Hostcomputer.
1. Führen Sie mkdir
aus Befehl unten, um ein Datenverzeichnis mit dem Namen mongodata
zu erstellen zum Speichern der MongoDB-Datenbank und -Protokolle.
sudo mkdir -p /mongodata
2. Führen Sie als nächstes den docker run
aus Befehl unten, um einen Container mit dem Namen mymongo
zu erstellen . Außerdem wird der Container mit einem interaktiven Pseudo-TTY gestartet (-it
), falls die Ausgabe beim Starten des Containers angezeigt werden soll.
Schließlich das neu erstellte Verzeichnis mongodata gebunden ist (-v
) in das interne Verzeichnis /data/db . Das -d
Die Option startet den Container im getrennten Modus, sodass er als Hintergrundprozess ausgeführt wird und die Konsolenausgabe bei der Erstellung zurückgibt.
Das System erstellt automatisch /data/db Verzeichnis, wenn Sie den Container ausführen, um Daten der Änderungen zu speichern, die Sie im Container vornehmen. Dieses Verzeichnis wird in einem ähnlichen Modus wie Read-Only ausgeführt und ermöglicht eine dauerhafte Datenspeicherung auf dem Hostsystem.
sudo docker run -it -v mongodata:/data/db --name mymongo -d mongo
Sobald der Befehl erfolgreich abgeschlossen wurde, sehen Sie eine Ausgabe wie die folgende.
3. Führen Sie schließlich docker ps
aus Befehl unten, um die ID des Containers zu identifizieren und seinen Status zu überprüfen. Das docker ps
Der Befehl zeigt alle Informationen über den aktuell ausgeführten Container an.
Das
docker ps
Der Befehl ist vergleichbar mit dem regulärenps
Befehl unter Linux.
sudo docker ps
In der unten gezeigten Ausgabe sehen Sie einen Ports Abschnitt, der alle Ports auflistet, die dem Container zum Abhören eingehender Verbindungen zugewiesen sind.
In diesem Beispiel Port 27017 wird dem Host zugeordnet. Die folgende Ausgabe gibt an, dass Sie über localhost:27017 auf die MongoDB-Instanz in diesem Container zugreifen können vom Gastgeber.
Vielleicht möchten Sie die Protokolldatei von
mymongo
sehen Container, um festzustellen, was in Ihrer Mongo-Datenbank/Instanz passiert ist, wenn etwas damit schief gelaufen ist. Führen Sie in diesem Fall diedocker logs
aus Befehl wie folgt:sudo docker logs docker-container
. Ersetzen Siedocker-container
mit dem Namen Ihres Docker-Containers.
Anhängen des Docker-MongoDB-Containers an Bash Shell
Sie haben gerade einen Docker MongoDB-Container bereitgestellt, aber wie verwalten Sie ihn? Hängen Sie dazu den Docker-Container mit docker exec
an die Bash-Shell an Befehl zuerst.
Das Anhängen Ihres Containers an die Bash-Shell ist von entscheidender Bedeutung, da der Container derzeit im getrennten Modus (im Hintergrund ausgeführt) ausgeführt wird. Und wenn der Container im Hintergrund läuft, erhält der Container weder Eingaben noch zeigt er Ausgaben an.
Führen Sie docker exec
aus Befehl unten, um Ihren Container anzuhängen (mymongo
) an die Bash-Shell.
sudo docker exec -it mymongo bash
Wenn der Befehl abgeschlossen ist, ändert sich Ihre Eingabeaufforderung in etwas wie das folgende. 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, also versuchen Sie, sie nicht zu ändern.
Führen Sie nun mongo
aus Befehl ohne Argumente, um sich bei der MongoDB-Shell im Container (mymongo) anzumelden. In der MongoDB-Shell führen Sie Ihre Mongo-Abfragen/Befehle aus.
Sobald Sie sich im Container befinden, können Sie jeden Befehl ohne
sudo
ausführen Präfix, da Sie jetzt ein Root-Benutzer im Container sind. Jede Änderung, die Sie im Container vornehmen, wirkt sich nicht auf Ihr Hostsystem aus.
mongo
An der unten gezeigten Eingabeaufforderung können Sie erkennen, dass Sie sich jetzt in der MongoDB-Shell befinden.
Wenn Sie lieber alle verfügbaren Befehle in der MongoDB-Shell sehen möchten, führen Sie
help
aus Befehl, 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, eine Verbindung zum MongoDB-Server herzustellen und Datenbanken zu verwalten.
1. Melden Sie sich erneut bei der MongoDB-Shell an und führen Sie use
aus Befehl unten, um zuerst zum admin
zu wechseln Datenbank. Dadurch erhält der administrative Benutzer die richtigen Berechtigungen zum Verwalten der Datenbanken.
use admin
Kopieren Sie den folgenden Code und fügen Sie ihn in die MongoDB-Eingabeaufforderung ein, um einen Administratorbenutzer zu erstellen.
Der folgende Code verwendet db.createUser()
Methode zum Erstellen eines Benutzers mit Administratorrollen. Der Benutzername (user
) und Passwort (pwd
) unten sind fest codiert, die Sie je nach Ihren Vorlieben ändern können.
# Create an administrative user
db.createUser(
{
# Sets the username for the administrative user
user: "ata",
# Sets the password for the administrative user
pwd: "password123",
# Sets the roles for the administrative user
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Wenn der Code funktioniert, erhalten Sie eine Meldung wie die folgende in Ihrer MongoDB-Eingabeaufforderung.
3. Führen Sie quit()
aus Abfrage unten, um die MongoDB-Shell zu beenden.
quit()
4. Führen Sie abschließend den folgenden mongo
aus Befehl zum Testen des von Ihnen erstellten administrativen Benutzers (ata
) durch Verbindung mit dem MongoDB-Server. Geben Sie das Kennwort für den Administrator ein, wenn Sie dazu aufgefordert werden.
mongo -u ata -p --authenticationDatabase admin
Wie Sie unten sehen, druckt der MongoDB-Server die MongoDB-Serverversion aus, wenn Sie sich erfolgreich mit dem Server verbinden.
Vielleicht möchten Sie den administrativen Benutzer weiter testen. Führen Sie in diesem Fall die folgenden Befehle aus, um alle Benutzer in der Datenbank anzuzeigen.
use admin
show users
Unten sehen Sie, dass sich der von Ihnen erstellte Administrator in der Liste befindet.
Erstellen einer MongoDB-Datenbank
Die Verwaltung eines Docker MongoDB-Containers wäre nicht vollständig, ohne eine Datenbank zu erstellen. Sie erstellen eine neue MongoDB-Datenbank, in der Sie Daten über die MongoDB-Shell speichern.
1. Führen Sie in einer interaktiven Sitzung im Docker-Container show dbs
aus Befehl unten, um alle Datenbanken auf Ihrem Server aufzulisten.
show dbs
Unten sehen Sie eine Admin-Datenbank, eine Konfigurationsdatenbank und eine lokale Datenbank. Die MongoDB-Shell erstellt diese Datenbanken standardmäßig auf jedem MongoDB-Server.
2. Führen Sie als Nächstes use
aus Befehl unten, um eine neue Datenbank zu erstellen. Ersetzen Sie <database_name>
mit dem Datenbanknamen Ihrer Wahl. Aber für dieses Beispiel heißt die Datenbank linux
.
Die
use
query wechselt die aktuelle Datenbank zu der von Ihnen angegebenen, falls vorhanden. Wenn nicht,use
query erstellt eine neue Datenbank und wechselt automatisch zu ihr.
use <database_name>
3. Führen Sie show dbs
erneut aus Befehl, wie Sie es zuvor getan haben (Schritt eins), um zu sehen, ob die von Ihnen erstellte Datenbank existiert.
show dbs
Sehen Sie 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 nun den folgenden Code, fügen Sie ihn in die MongoDB-Shell ein und drücken Sie Enter .
Der folgende Code erstellt eine neue Sammlung namens linux_version
, die Sie in den von Ihnen bevorzugten Namen ändern können. Die Sammlung enthält Daten im Schlüssel:Wert-Paar-Format.
# Using insertOne method to insert data
db.linux_version.insertOne(
# Key:value pairs to insert to the database
{ "debian" : "11",
"ubuntu" : "20.04",
"rocky linux" : "8.4",
"alma linux" : "8"
}
)
In der Ausgabe unten sehen Sie die linux_version
-Sammlung erstellt und mit einer ObjectID versehen .
5. Führen Sie show collections
aus Befehl, um eine Liste der Sammlungen anzuzeigen und festzustellen, ob die neue Sammlung linux_version
existiert.
show collections
Sie können unten sehen, dass Sie die linux_version erfolgreich erstellt haben Sammlung.
6. Führen Sie schließlich den folgenden Befehl aus, um die Daten anzuzeigen und zu bestätigen, die Sie in linux_version
eingefügt haben Sammlung ist richtig. Mit der Methode pretty() können Sie die Daten in einem für Menschen lesbaren Format anzeigen.
db.linux_version.find().pretty()
Wenn Sie jemals die Daten in der Datenbank ändern, verwenden Sie
Update()
Methode.
Sie können sehen, dass die Ausgabe unten in einem gut lesbaren Format vorliegt.
Neustart des Docker-MongoDB-Containers
Inzwischen haben Sie einen erfolgreich ausgeführten Docker MongoDB-Container. Was aber, wenn Sie den Container nicht mehr brauchen oder nicht mehr funktionieren? Ein paar Docker-Befehle können helfen, einen MongoDB-Docker-Container zu stoppen, neu zu starten und sogar zu entfernen.
1. Führen Sie docker ps
aus Befehl unten, um alle laufenden Container aufzulisten.
sudo docker ps
Notieren Sie sich den Namen und die Container-ID des Containers, den Sie stoppen, neu starten oder entfernen möchten, wie unten gezeigt.
2. Führen Sie als Nächstes einen der docker stop
aus Befehle unten, um einen laufenden MongoDB-Container zu stoppen.
sudo docker stop mymongo
sudo docker stop container-ID
3. Führen Sie docker ps
erneut aus Befehl wie zuvor (Schritt eins), um zu überprüfen, ob der Container heruntergefahren wurde.
sudo docker ps
Wie Sie unten sehen können, befindet sich der Container nicht in der Liste der ausgeführten Container, was darauf hinweist, dass Sie den Container erfolgreich gestoppt haben.
4. Führen Sie nun einen der beiden docker start
aus Befehle unten, wenn Sie sich entscheiden, einen Container neu zu starten.
sudo docker start mymongo
sudo docker start container-ID
5. Führen Sie schließlich docker ps
erneut aus Befehl, um zu sehen, ob der Container ausgeführt wird.
sudo docker ps
Vielleicht haben Sie keine Verwendung mehr für einen Container. Wenn dies der Fall ist, müssen Sie zuerst den Container stoppen und
rm
ausführen Befehl zum Entfernen eines Containers wie folgt:sudo docker container rm mongodb
. Ersetzen Sie ähnlich wie in den vorherigen Beispielenmongodb
entweder mit dem Containernamen oder der 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 nicht mehr benötigte Container stoppen, neu starten und entfernen können, um Ihre Docker-Images sauber zu halten.
Die Bereitstellung und Verwaltung von MongoDB mit Docker ist der erste Schritt, um die Vorteile der Containerisierungstechnologie zu nutzen und den Overhead zu reduzieren. Warum nutzen Sie diesen ersten Schritt nicht, um MongoDB genauer zu erkunden und zu sehen, wie ein Docker-MongoDB-Container bei Ihren Projekten helfen kann?