Hoe een Docker MongoDB-container te implementeren en te beheren

MongoDB is een populaire, open-source documentendatabase die hoge prestaties en grote flexibiliteit biedt. Maar heb je geprobeerd om een MongoDB-database te containerizen voor je projecten? Zo niet, dan staat je iets leuks te wachten!

In deze tutorial leer je hoe je MongoDB effectief kunt implementeren, beveiligen en beheren met Docker. Dus lees verder en word je eigen meester in het implementeren van Docker MongoDB-containers!

Vereisten

Deze tutorial bevat hands-on demonstraties. Zorg ervoor dat je het volgende hebt om mee te doen:

  • Een Ubuntu-machine – Deze tutorial gebruikt Ubuntu 20.04 LTS
  • A user with sudo permission
  • Docker – Deze tutorial gebruikt Docker 20.10.9

Downloaden van de Docker MongoDB-image

Voordat je een Docker MongoDB-container kunt implementeren en beheren, moet je eerst een MongoDB-image downloaden van de Docker Hub, zodat je de MongoDB-container lokaal kunt uitvoeren.

Voer de docker-opdracht hieronder uit om de MongoDB Community Edition (CE) afbeelding (pull mongo) te downloaden, die gehost wordt door Docker Hub. De nieuwste versie van deze afbeelding op het moment van schrijven is 4.2.

sudo docker pull mongo

Zoals je hieronder kunt zien, trekt de opdracht automatisch de nieuwste versie van de afbeelding en tagt deze als latest.

Pulling mongo image

Voer nu de docker images-opdracht hieronder uit om alle beschikbare afbeeldingen op je server te bekijken.

sudo docker images

Hieronder zie je de MongoDB-afbeelding getagd als latest.

Listing all Docker images

Het implementeren van een Docker MongoDB-container

Vanuit de gedownloade MongoDB-afbeelding kun je nu een MongoDB-container implementeren. Je zult je MongoDB-container initialiseren met het mongo uitvoerbaar bestand, een gegevensdirectory maken. Vervolgens zul je de mapping definiëren tussen het gegevensgebied van de Docker-container en de hostmachine.

1. Voer de mkdir-opdracht hieronder uit om een gegevensdirectory met de naam mongodata te maken om de MongoDB-database en logs op te slaan.

sudo mkdir -p /mongodata

2. Voer vervolgens de docker run-opdracht hieronder uit om een container met de naam mymongo te maken. Bovendien wordt de container gestart met een interactieve pseudo-TTY (-it), voor het geval dat er output moet worden getoond bij het starten van de container.

Tenslotte wordt de nieuw aangemaakte map mongodata gekoppeld (-v) aan de interne map, /data/db. De optie -d start de container in de detach-modus, zodat deze als een achtergrondproces draait en de console-uitvoer teruggeeft bij creatie.

Het systeem maakt automatisch de map /data/db aan wanneer u de container uitvoert om gegevens van de wijzigingen die u in de container aanbrengt, op te slaan. Deze map draait in een vergelijkbare modus als alleen-lezen en maakt persistent opslag van gegevens op het hostsysteem mogelijk.

sudo docker run -it -v mongodata:/data/db --name mymongo -d mongo

Zodra de opdracht succesvol is voltooid, ziet u een uitvoer zoals hieronder weergegeven.

Deploying MongoDB Container

3. Voer tot slot de docker ps-opdracht hieronder uit om de ID van de container te identificeren en de status te controleren. De docker ps-opdracht geeft alle informatie weer over de momenteel uitgevoerde container.

De docker ps-opdracht is vergelijkbaar met de reguliere ps-opdracht in Linux.

sudo docker ps

In de hieronder getoonde uitvoer ziet u een Poorten-sectie die alle poorten opsomt die aan de container zijn toegewezen voor het luisteren naar inkomende verbindingen.

In dit voorbeeld is poort 27017 gemapt naar de host. De onderstaande uitvoer geeft aan dat je toegang hebt tot de MongoDB-instantie op deze container via localhost:27017 vanaf de host.

Checking Docker MongoDB Container Status

Misschien wil je het logbestand van de mymongo container zien om te achterhalen wat er is gebeurd met je MongoDB-database/instance als er iets misging. Zo ja, voer het docker logs commando uit, zoals dit: sudo docker logs docker-container. Vervang docker-container door de naam van je Docker-container.

Reading Docker Container Log File

Het koppelen van de Docker MongoDB-container aan de Bash-shell

Je hebt zojuist een Docker MongoDB-container ingezet, maar hoe beheer je deze? Doe dit door de Docker-container aan de Bash-shell te koppelen met het docker exec commando eerst.

Het koppelen van je container aan de Bash-shell is cruciaal omdat de container momenteel in detached-modus draait (achtergrondmodus). En als de container op de achtergrond draait, ontvangt de container geen invoer en geeft geen uitvoer weer.

Voer het docker exec commando hieronder uit om je container (mymongo) aan de Bash-shell te koppelen.

sudo docker exec -it mymongo bash

Wanneer het commando is voltooid, zal je prompt veranderen naar iets dergelijks als hieronder. Het unieke alfanumerieke nummer (77782fa95314) is de container-ID.

Container-ID’s zijn essentieel om conflicten in namen te vermijden en containers effectief te identificeren tussen hosts, dus probeer ze niet te wijzigen.

Attaching Docker MongoDB Container to Bash Shell

Voer nu het mongo commando uit zonder enige argumenten om in te loggen op de MongoDB-shell in de container (mymongo). De MongoDB-shell is waar je je mongo-query’s/commando’s uitvoert.

Zodra je in de container bent, kun je elk commando uitvoeren zonder het sudo voorvoegsel aangezien je nu een rootgebruiker bent binnen de container. Elke verandering die je aanbrengt in de container zal geen invloed hebben op je hostsysteem.

mongo

Door naar de prompt hieronder te kijken, kun je zien dat je nu in de MongoDB-shell bent.

Logging in to the MongoDB shell

Als je liever alle beschikbare commando’s in de MongoDB-shell wilt zien, voer dan het help commando uit, zoals hieronder wordt getoond.

Listing Available Commands in MongoDB Shell

Creëren van een administratieve MongoDB-gebruiker

Nadat je een MongoDB-server hebt geïmplementeerd binnen een Docker-container, zul je nu een administratieve MongoDB-gebruiker creëren. Een administratieve gebruiker stelt je in staat om verbinding te maken met de MongoDB-server en databases te beheren.

1. Log opnieuw in op de MongoDB-shell en voer het use commando hieronder uit om eerst over te schakelen naar de admin database. Op deze manier krijgt de administratieve gebruiker de juiste rechten om de databases te beheren.

use admin
Switching to the Admin Database

Kopieer en plak de volgende code in de MongoDB-prompt om een administratieve gebruiker aan te maken.

De onderstaande code maakt gebruik van de db.createUser() methode om een gebruiker met administratieve rollen aan te maken. De gebruikersnaam (user) en wachtwoord (pwd) hieronder zijn hardgecodeerd, die je kunt wijzigen naar jouw voorkeur.

# Maak een administratieve gebruiker aan
db.createUser(
{
	# Stelt de gebruikersnaam in voor de administratieve gebruiker
	user: "ata",
	# Stelt het wachtwoord in voor de administratieve gebruiker
	pwd: "password123",
	# Stelt de rollen in voor de administratieve gebruiker
	roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)

Als de code werkt, krijg je een bericht zoals hieronder in je MongoDB-prompt.

Creating an Administrative New User

3. Voer de quit() query hieronder uit om de MongoDB-shell te verlaten.

quit()

4. Voer tot slot het volgende mongo commando uit om de administratieve gebruiker die je hebt aangemaakt (ata) te testen door verbinding te maken met de MongoDB-server. Voer het wachtwoord voor de administratieve gebruiker in wanneer daarom wordt gevraagd.

mongo -u ata -p --authenticationDatabase admin

Zoals je hieronder ziet, print de MongoDB-server de MongoDB-serverversie uit als je succesvol verbinding maakt met de server.

Connecting to the MongoDB Server

Misschien wil je de beheerdersgebruiker verder testen. Voer hiervoor de onderstaande commando’s uit om alle gebruikers in de database weer te geven.

use admin
show users

Hieronder zie je dat de beheerdersgebruiker die je hebt aangemaakt in de lijst staat.

Listing Users in Database

Het maken van een MongoDB-database

Het beheren van een Docker MongoDB-container is niet compleet zonder het maken van een database. Je zult een nieuwe MongoDB-database maken waarin je gegevens zult opslaan via de MongoDB-shell.

1. Voer vanuit een interactieve sessie binnen de Docker-container het onderstaande show dbs commando uit om alle databases in je server weer te geven.

show dbs

Hieronder zie je een admin-database, een config-database en een lokale database. De MongoDB-shell maakt standaard deze databases aan in elke MongoDB-server.

Listing all MongoDB Databases

2. Voer vervolgens het use commando hieronder uit om een nieuwe database te maken. Vervang <database_name> door de gewenste databasenaam. Maar voor dit voorbeeld is de database genaamd linux.

De use query schakelt de huidige database over naar degene die je opgeeft als deze bestaat. Als dat niet het geval is, maakt de use query een nieuwe database aan en schakelt er automatisch naar over.

use <database_name>
Creating a new MongoDB Database

3. Voer opnieuw het show dbs commando uit zoals je eerder hebt gedaan (stap één) om te zien of de door jou gemaakte database bestaat.

show dbs

Nog steeds de nieuw gemaakte database (Linux) niet op de lijst zien? MongoDB bouwt de database alleen wanneer je er voor de eerste keer gegevens in opslaat. De gegevens kunnen in de vorm van een collectie zijn, of zelfs een document.

Listing all MongoDB Databases

4. Kopieer/plak nu de onderstaande code in de MongoDB-shell en druk op Enter.

De onderstaande code maakt een nieuwe collectie genaamd linux_version, die je naar eigen wens kunt wijzigen. De collectie bevat gegevens in de indeling sleutel:waarde.

# Gebruik de insertOne-methode om gegevens in te voegen
db.linux_version.insertOne(
	# Sleutel:waarde-paren om in de database in te voegen
	{ "debian" : "11",
	"ubuntu" : "20.04",
	"rocky linux" : "8.4",
	"alma linux" : "8"
	}
)

In de uitvoer hieronder kun je zien dat de linux_version-collectie is aangemaakt en wordt geleverd met een ObjectID.

Showing collection with its ID

5. Voer het show collections-commando uit om een lijst met collecties te zien en te controleren of de nieuwe collectie linux_version bestaat.

show collections

Je kunt hieronder zien dat je succesvol de linux_version-collectie hebt aangemaakt.

Showing List of Collections

6. Voer tot slot het onderstaande commando uit om de ingevoegde gegevens in de linux_version-collectie te bekijken en te bevestigen dat deze correct zijn. De pretty()-methode stelt je in staat om de gegevens in een menselijk leesbaar formaat te bekijken.

db.linux_version.find().pretty()

Als je ooit de gegevens in de database wijzigt, gebruik dan de Update()-methode.

Je kunt zien dat de uitvoer hieronder in een veel leesbaarder formaat is.

Viewing Data from MongoDB Database

Het opnieuw starten van de Docker MongoDB-container

Op dit moment heb je een succesvol draaiende Docker MongoDB-container. Maar wat als je geen gebruik meer hebt voor de container, of wat als het niet werkt? Een paar Docker-commando’s kunnen helpen om een MongoDB Docker-container te stoppen, opnieuw op te starten en zelfs te verwijderen.

1. Voer het docker ps-commando hieronder uit om alle actieve containers weer te geven.

sudo docker ps

Noteer de naam en het container-ID van de container die je wilt stoppen, opnieuw wilt starten of verwijderen, zoals hieronder getoond.

Showing all running docker containers

2. Voer vervolgens een van de onderstaande docker stop-commando’s uit om een actieve MongoDB-container te stoppen.

sudo docker stop mymongo
sudo docker stop container-ID

3. Voer opnieuw het docker ps-commando uit zoals je eerder deed (stap één) om te controleren of de container is gestopt.

sudo docker ps

Zoals je hieronder kunt zien, staat de container niet in de lijst met actieve containers, wat aangeeft dat je de container succesvol hebt gestopt.

Listing all Containers

4. Voer nu een van de docker start opdrachten hieronder uit als u besluit een container te herstarten.

sudo docker start mymongo
sudo docker start container-ID

5. Voer tot slot de docker ps opdracht opnieuw uit om te zien of de container actief is.

sudo docker ps

Misschien heeft u geen verdere behoefte aan een container. Als dat het geval is, moet u eerst de container stoppen en vervolgens de rm opdracht uitvoeren om een container te verwijderen, zoals dit: sudo docker container rm mongodb. Net als in de vorige voorbeelden, vervang mongodb door ofwel de container naam of container ID.

Conclusie

In deze handleiding hebt u geleerd hoe u een Docker MongoDB-container implementeert en beheert door een beheerdersgebruiker te maken om een database aan te maken en data erin op te slaan. U hebt gemerkt dat u containers kunt stoppen, herstarten en verwijderen die u niet langer nodig hebt om uw Docker-images schoon te houden.

Het implementeren en beheren van MongoDB met Docker is de eerste stap om te profiteren van containerisatietechnologie en de overhead te verminderen. Waarom zou u deze eerste stap niet gebruiken om meer te ontdekken over MongoDB en te zien hoe een Docker MongoDB-container kan helpen bij uw projecten?

Source:
https://adamtheautomator.com/docker-mongodb/