MongoDB ist eine Open-Source-NoSQL-Datenbank, die JSON-ähnliche Dokumente und Schemata verwendet, die eine schnelle iterative Entwicklung unterstützen. Seine Scale-out-Architektur ist beliebt bei Anwendungsentwicklern, die agile Methoden verwenden, um schnell voranzukommen. Da es in der agilen Community beliebt ist, ist die Verwendung von MongoDB mit Docker ein ausgezeichneter Ansatz für eine kontinuierliche Integration und Entwicklung (CI/CD)-Workflow.
Bevor Sie beginnen
Um die Beispiele in diesem Handbuch zu vervollständigen, richten Sie zuerst ein Linode mit installiertem Docker ein und sichern Sie es. Sie können dies erreichen, indem Sie die Docker Marketplace-App verwenden oder eine manuelle Installation durchführen. Anweisungen für beide Ansätze finden Sie unten.
In diesem Leitfaden wird davon ausgegangen, dass Sie mit der Befehlszeilenschnittstelle vertraut sind (CLI) auf einem Unix-ähnlichen System und dessen Verwendung zum Arbeiten mit Programmen.
Einen Linode mit Docker einrichten
Docker Marketplace-App
Mit der Docker Marketplace App können Sie schnell ein sicheres, aktualisiertes Linode einrichten. Anweisungen finden Sie in unserem Leitfaden zum Bereitstellen von Docker mit Marketplace-Apps. Für die Zwecke dieses Leitfadens empfehlen wir die Bereitstellung der Docker Marketplace-App mit den Docker-Optionen:
- Der eingeschränkte sudo-Benutzer, der für Linode erstellt werden soll
- Das Passwort für den eingeschränkten sudo-Benutzer
- Der eingeschränkte öffentliche sudo-Benutzer-SSH-Schlüssel, der für den Zugriff auf Linode verwendet wird
- Root-Zugriff über SSH deaktivieren? (ja)
Manuelle Installation
-
Machen Sie sich mit unserem Leitfaden „Erste Schritte“ vertraut und führen Sie die Schritte zum Aktualisieren Ihres Linode durch.
-
Füllen Sie die Abschnitte in unserem Abschnitt „Sichern Ihres Servers“ aus, um ein Standardbenutzerkonto zu erstellen, den SSH-Zugriff abzusichern und unnötige Netzwerkdienste zu entfernen.
-
Installieren Sie Docker auf Ihrem Linode, indem Sie die Schritte in unserer Anleitung zur Installation und Verwendung von Docker unter Ubuntu und Debian befolgen.
Docker-Installation überprüfen
Stellen Sie sicher, dass Docker auf Ihrem Linode installiert ist:
docker --version
Sie können eine Ausgabe ähnlich der folgenden erwarten:
Docker version 20.10.8, build 3967b7d
HinweisDieses Handbuch wurde für Nicht-Root-Benutzer geschrieben. Befehlen, die erhöhte Berechtigungen erfordern, wird das Präfix
sudo
vorangestellt . Wenn Sie mitsudo
nicht vertraut sind Befehl, besuchen Sie unseren Leitfaden für Benutzer und Gruppen.Alle Konfigurationsdateien sollten mit erhöhten Rechten bearbeitet werden. Denken Sie daran,
sudo
einzufügen bevor Sie Ihren Texteditor ausführen.
So installieren Sie einen MongoDB-Docker-Container
Docker macht das Erstellen eines MongoDB-Images sehr einfach, da sie eine offiziell gepflegte Version im Docker Hub aufbewahren. So installieren Sie es:
-
Laden Sie das MongoDB-Image von Docker Hub herunter und installieren Sie es:
sudo docker pull mongo
Die Ausgabe beim Herunterladen des Bildes sollte wie folgt aussehen:
Using default tag: latest latest: Pulling from library/mongo 16ec32c2132b: Pull complete 6335cf672677: Pull complete cbc70ccc8ebe: Pull complete 0d1a3c6bd417: Pull complete 960f3b9b27d3: Pull complete aff995a136b4: Pull complete 4249be7550a8: Pull complete cc105ff5aa3c: Pull complete 82819807d07a: Pull complete 81447d2c233f: Pull complete Digest: sha256:54d24682d00278f64bf21ff62b7ee62b59dae50f65139831a884b345922b0f8a Status: Downloaded newer image for mongo:latest docker.io/library/mongo:latest
Hinweis Dieser Befehl zieht standardmäßig die neueste Version (wie es in der ersten Zeile der Ausgabe steht). Um eine bestimmte Version abzurufen, fügen Sie dem Befehl das Tag für diese Version hinzu. Um beispielsweise MongoDB 4.4.6 zu installieren, geben Sie
docker pull mongo:4.4.6
ein . -
Stellen Sie sicher, dass das Image installiert wurde:
sudo docker images
Die Ausgabe sollte so aussehen:
REPOSITORY TAG IMAGE ID CREATED SIZE mongo latest 07630e791de3 2 weeks ago 449MB
-
Erstellen Sie einen Container mit dem
mongo
Bild im getrennten Modus, sodass es auf Ihrem System immer noch interaktiv ist:sudo docker run --name mongo_example -d mongo
-
Stellen Sie sicher, dass der Container ausgeführt wird:
sudo docker ps
Die Ausgabe sollte so aussehen:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1f88d00b9e78 mongo "docker-entrypoint.s…" 4 seconds ago Up 4 seconds 27017/tcp mongo_example
MongoDB läuft jetzt als Docker-Container.
Anmeldung bei MongoDB auf dem Container
-
Geben Sie Folgendes ein, um die Bash-Eingabeaufforderung innerhalb des Containers zu erhalten:
sudo docker exec -it mongo_example bash
-
Geben Sie an der Eingabeaufforderung des Containers
mongosh
ein Schale:mongosh
Vom mongosh
Shell können Sie Abfragen und Operationen direkt mit Ihrer Datenbank testen.
Hinweis Der altemongo
Shell ist in MongoDB v5.0 veraltet, ist aber immer noch als Alternative zumongosh
verfügbar .
So konfigurieren Sie MongoDB in einem Docker-Container
Einzelheiten zur Konfiguration von MongoDB finden Sie im MongoDB-Handbuch. Allerdings mongod
(Primärer Daemon von MongoDB) Flags werden normalerweise gesetzt, um MongoDB und den docker run
zu konfigurieren Der Befehl wurde entwickelt, um den mongod
zu übergeben Flaggen.
Um beispielsweise die Skript-Engine zu deaktivieren, fügen Sie das Flag wie folgt am Ende des Befehls hinzu:
sudo docker run --name mongo_example2 -d mongo --noscripting
Geben Sie als weiteres Beispiel Folgendes ein, um die Skript-Engine zu deaktivieren und IPv6 zu aktivieren:
sudo docker run --name mongo_example3 -d mongo --noscripting --ipv6
So speichern Sie MongoDB-Daten aus einem Docker-Container
Da MongoDB auf einem Docker-Container ausgeführt wird, bleiben seine Daten beim Beenden nicht bestehen (da es die Daten im Verzeichnis /data/db im Container selbst speichert). Wenn die MongoDB-Daten bestehen bleiben müssen, müssen Sie ein Docker-Volume erstellen und mounten oder ein Verzeichnis von Ihrem Hostsystem mounten.
Hinzufügen eines Docker-Volumes zu einem MongoDB-Container
Das Erstellen und Hinzufügen eines Volumes für den zu verwendenden Container ist einfach, wenn Sie mit Docker vertraut sind.
-
Erstellen Sie ein Docker-Volume, auf dem sich die Daten befinden sollen, indem Sie Folgendes eingeben:
sudo docker volume create mongo_volume
-
Erstellen Sie dann einen
docker run
Befehl, um das Volume an den Container anzuhängen und es/data/db
zuzuordnen container-Verzeichnis durch Eingabe von:sudo docker run -it -v mongo_volume:/data/db --name mongo_example4 -d mongo
Mounten eines Hostsystemverzeichnisses in einem MongoDB-Docker-Container
Wenn Sie möchten, dass Daten bestehen bleiben und außerhalb von Docker auf die Daten zugreifen, können Sie ein Verzeichnis auf Ihrem Hostsystem verwenden.
So mounten Sie ein Hostsystemverzeichnis:
-
Erstellen Sie ein Verzeichnis auf Ihrem System (falls Sie keines haben, das Sie verwenden möchten) auf der Stammebene Ihres Systems, indem Sie Folgendes eingeben:
sudo mkdir -p /mongo_data_directory
-
Führen Sie dann einen
docker run
aus Befehl, um das Verzeichnis zu mounten und es/data/db
zuzuordnen durch Eingabe von:sudo docker run -it -v /mongo_data_directory:/data/db --name mongo_example5 -d mongo
Weiterführende Literatur
Das Erlernen der Verwendung von MongoDB auf Docker ist für CI/CD-Workflows und eine schnelle iterative Entwicklung von entscheidender Bedeutung. Die Fortsetzung einiger MongoDB-Informationen von Docker im Docker Hub ist eine hervorragende Ergänzung zu diesem Artikel.
Um mehr über mongod
zu erfahren Optionen, die in docker run
übergeben werden sollen , überprüfen Sie den mongod
Abschnitt MongoDB-Paketkomponenten des MongoDB-Handbuchs.
Wenn Sie außerdem ein Upgrade auf MongoDB Enterprise planen, finden Sie Anweisungen unter MongoDB Enterprise mit Docker installieren im MongoDB-Handbuch mongod
.
Weitere Informationen
Weitere Informationen zu diesem Thema finden Sie in den folgenden Ressourcen. Obwohl diese in der Hoffnung bereitgestellt werden, dass sie nützlich sind, beachten Sie bitte, dass wir nicht für die Genauigkeit oder Aktualität extern gehosteter Materialien garantieren können.
- MongoDB auf Docker Hub