GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So stellen Sie einen Docker-MongoDB-Container bereit und verwalten ihn

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ären ps 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 die docker logs aus Befehl wie folgt:sudo docker logs docker-container . Ersetzen Sie docker-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 Beispielen mongodb 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?


Docker
  1. So stellen Sie einen Nginx-Container mit Docker auf Linode bereit

  2. Was ist containerd und in welcher Beziehung steht es zu Docker und Kubernetes?

  3. So stellen Sie PostgreSQL als Docker-Container bereit

  4. So sichern und wiederherstellen Sie Docker-Container

  5. So halten Sie Docker-Container an und setzen sie fort

Wie man SSH in einen Docker-Container einfügt und Befehle ausführt

Wie man Docker Container auf AlmaLinux 8 installiert und einrichtet

So stellen Sie einen Docker-Container in AWS Elastic Beanstalk bereit

So kopieren Sie Dateien zwischen Host und Docker-Container

So verwalten Sie Docker-Container

So stellen Sie Docker-Container in Jelastic Cloud bereit