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.
Zoals je hieronder kunt zien, trekt de opdracht automatisch de nieuwste versie van de afbeelding en tagt deze als latest.

Voer nu de docker images
-opdracht hieronder uit om alle beschikbare afbeeldingen op je server te bekijken.
Hieronder zie je de MongoDB-afbeelding getagd als latest.

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.
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.
Zodra de opdracht succesvol is voltooid, ziet u een uitvoer zoals hieronder weergegeven.

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 reguliereps
-opdracht in Linux.
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.

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 hetdocker logs
commando uit, zoals dit:sudo docker logs docker-container
. Vervangdocker-container
door de naam van je Docker-container.

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.
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.

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.
Door naar de prompt hieronder te kijken, kun je zien dat je nu in de MongoDB-shell bent.

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

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.

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.
Als de code werkt, krijg je een bericht zoals hieronder in je MongoDB-prompt.

3. Voer de quit()
query hieronder uit om de MongoDB-shell te verlaten.
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.
Zoals je hieronder ziet, print de MongoDB-server de MongoDB-serverversie uit als je succesvol verbinding maakt met de server.

Misschien wil je de beheerdersgebruiker verder testen. Voer hiervoor de onderstaande commando’s uit om alle gebruikers in de database weer te geven.
Hieronder zie je dat de beheerdersgebruiker die je hebt aangemaakt in de lijst staat.

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.
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.

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 deuse
query een nieuwe database aan en schakelt er automatisch naar over.

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.
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.

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.
In de uitvoer hieronder kun je zien dat de linux_version
-collectie is aangemaakt en wordt geleverd met een ObjectID.

5. Voer het show collections
-commando uit om een lijst met collecties te zien en te controleren of de nieuwe collectie linux_version
bestaat.
Je kunt hieronder zien dat je succesvol de linux_version-collectie hebt aangemaakt.

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.
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.

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.
Noteer de naam en het container-ID van de container die je wilt stoppen, opnieuw wilt starten of verwijderen, zoals hieronder getoond.

2. Voer vervolgens een van de onderstaande docker stop
-commando’s uit om een actieve MongoDB-container te stoppen.
3. Voer opnieuw het docker ps
-commando uit zoals je eerder deed (stap één) om te controleren of de container is gestopt.
Zoals je hieronder kunt zien, staat de container niet in de lijst met actieve containers, wat aangeeft dat je de container succesvol hebt gestopt.

4. Voer nu een van de docker start
opdrachten hieronder uit als u besluit een container te herstarten.
5. Voer tot slot de docker ps
opdracht opnieuw uit om te zien of de container actief is.
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, vervangmongodb
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?