MongoDB est une base de données de documents populaire et open source qui offre des performances élevées et une grande flexibilité. Mais avez-vous essayé de conteneuriser une base de données MongoDB pour vos projets ? Si ce n’est pas le cas, alors vous êtes sur le point de faire une découverte passionnante !
Dans ce tutoriel, vous apprendrez comment déployer, sécuriser et gérer MongoDB efficacement avec Docker. Alors continuez à lire et devenez le maître de votre propre déploiement de conteneurs MongoDB avec Docker !
Prérequis
Ce tutoriel comprend des démonstrations pratiques. Pour suivre, assurez-vous de disposer des éléments suivants :
- Une machine Ubuntu – Ce tutoriel utilise Ubuntu 20.04 LTS
- A user with
sudo
permission - Docker – Ce tutoriel utilise Docker 20.10.9
Téléchargement de l’image Docker MongoDB
Avant de pouvoir déployer et gérer un conteneur Docker MongoDB, vous devez d’abord télécharger une image MongoDB depuis le Docker Hub afin de pouvoir exécuter le conteneur MongoDB localement.
Exécutez la commande docker
ci-dessous pour télécharger l’image de la MongoDB Community Edition (CE) (pull mongo
), hébergée par Docker Hub. La dernière version de cette image au moment de la rédaction est la 4.2.
Comme vous pouvez le voir ci-dessous, la commande télécharge automatiquement la dernière version de l’image et la marque comme dernière.

Exécutez maintenant la commande docker images
ci-dessous pour lister toutes les images disponibles sur votre serveur.
Vous pouvez voir ci-dessous l’image MongoDB marquée comme dernière.

Déploiement d’un conteneur Docker MongoDB
À partir de l’image MongoDB que vous avez téléchargée, vous pouvez maintenant déployer un conteneur MongoDB. Vous initialiserez votre conteneur MongoDB avec l’exécutable mongo, créerez un répertoire de données. Vous définirez ensuite la correspondance entre la zone de données du conteneur Docker et la machine hôte.
1. Exécutez la commande mkdir
ci-dessous pour créer un répertoire de données nommé mongodata
afin de stocker la base de données MongoDB et les journaux.
2. Ensuite, exécutez la commande docker run
ci-dessous pour créer un conteneur portant le nom mymongo
. De plus, le conteneur est démarré avec un pseudo-TTY interactif (-it
), au cas où une sortie devrait être affichée lors du démarrage du conteneur.
Finalement, le répertoire nouvellement créé mongodata est lié (-v
) au répertoire interne, /data/db. L’option -d
lance le conteneur en mode détaché, ce qui le fait fonctionner en arrière-plan et renvoie la sortie de la console lors de sa création.
Le système crée automatiquement le répertoire /data/db lorsque vous exécutez le conteneur pour stocker les données des modifications que vous apportez dans le conteneur. Ce répertoire fonctionne dans un mode similaire à la lecture seule et permet le stockage persistant des données sur le système hôte.
Une fois que la commande est exécutée avec succès, vous verrez une sortie comme celle ci-dessous.

3. Enfin, exécutez la commande docker ps
ci-dessous pour identifier l’ID du conteneur et vérifier son statut. La commande docker ps
affiche toutes les informations sur le conteneur actuellement en cours d’exécution.
La commande
docker ps
est comparable à la commandeps
régulière sous Linux.
Dans la sortie ci-dessous, vous pouvez voir une section Ports qui répertorie tous les ports attribués au conteneur pour écouter les connexions entrantes.
Dans cet exemple, le port 27017 est mappé sur l’hôte. La sortie ci-dessous indique que vous pouvez accéder à l’instance MongoDB sur ce conteneur via localhost:27017 depuis l’hôte.

Peut-être voulez-vous voir le fichier journal du conteneur
mymongo
pour déterminer ce qui s’est passé sur votre base de données/instance mongo lorsque quelque chose a mal tourné avec elle. Si c’est le cas, exécutez la commandedocker logs
, comme ceci :sudo docker logs docker-container
. Remplacezdocker-container
par le nom de votre conteneur Docker.

Attacher le conteneur Docker MongoDB à l’interpréteur de commandes Bash
Vous venez de déployer un conteneur Docker MongoDB, mais comment le gérer ? Faites-le en attachant le conteneur Docker à l’interpréteur de commandes Bash avec la commande docker exec
d’abord.
Attacher votre conteneur à l’interpréteur de commandes Bash est crucial car le conteneur fonctionne actuellement en mode détaché (en arrière-plan). Et si le conteneur fonctionne en arrière-plan, le conteneur ne recevra ni entrée ni affichera de sortie.
Exécutez la commande docker exec
ci-dessous pour attacher votre conteneur (mymongo
) à l’interpréteur de commandes Bash.
Lorsque la commande est terminée, votre invite de commande changera pour quelque chose comme celui ci-dessous. Le numéro alphanumérique unique (77782fa95314) est l’ID du conteneur.
Les identifiants de conteneur sont essentiels pour éviter les conflits de nommage et identifier efficacement les conteneurs entre les hôtes, alors essayez de ne pas les changer.

Exécutez maintenant la commande mongo
sans arguments pour vous connecter à la coquille MongoDB dans le conteneur (mymongo). La coquille MongoDB est l’endroit où vous exécutez vos requêtes/commandes mongo.
Une fois dans le conteneur, vous pouvez exécuter n’importe quelle commande sans le préfixe
sudo
, car vous êtes maintenant un utilisateur root à l’intérieur du conteneur. Chaque modification que vous apportez dans le conteneur n’affectera pas votre système hôte.
En regardant l’invite affichée ci-dessous, vous pouvez voir que vous êtes maintenant dans la coquille MongoDB.

Si vous préférez voir toutes les commandes disponibles dans la coquille MongoDB, exécutez la commande
help
, comme indiqué ci-dessous.

Création d’un utilisateur administrateur MongoDB
Après avoir déployé un serveur MongoDB à l’intérieur d’un conteneur Docker, vous allez maintenant créer un utilisateur administrateur MongoDB. Un utilisateur administrateur vous permet de vous connecter au serveur MongoDB et de gérer les bases de données.
1. Connectez-vous à nouveau à la coquille MongoDB et exécutez la commande use
ci-dessous pour passer d’abord à la base de données admin
. Cela donne à l’utilisateur administrateur les permissions nécessaires pour gérer les bases de données.

Copiez et collez le code suivant dans l’invite MongoDB pour créer un utilisateur administratif.
Le code ci-dessous utilise la méthode db.createUser()
pour créer un utilisateur avec des rôles administratifs. Le nom d’utilisateur (user
) et le mot de passe (pwd
) ci-dessous sont codés en dur, que vous pouvez modifier selon vos préférences.
Si le code fonctionne, vous obtiendrez un message similaire à celui ci-dessous dans votre invite MongoDB.

3. Exécutez la requête quit()
ci-dessous pour quitter le shell MongoDB.
4. Enfin, exécutez la commande mongo
suivante pour tester l’utilisateur administratif que vous avez créé (ata
) en vous connectant au serveur MongoDB. Entrez le mot de passe de l’utilisateur administratif lorsqu’il vous sera demandé.
Comme vous le voyez ci-dessous, le serveur MongoDB imprime la version du serveur MongoDB si vous vous connectez avec succès au serveur.

Peut-être voulez-vous tester davantage l’utilisateur administratif. Si tel est le cas, exécutez les commandes ci-dessous pour afficher tous les utilisateurs dans la base de données.
Ci-dessous, vous pouvez voir que l’utilisateur administratif que vous avez créé est dans la liste.

Création d’une base de données MongoDB
Gérer un conteneur Docker MongoDB ne serait pas complet sans créer une base de données. Vous allez créer une nouvelle base de données MongoDB dans laquelle vous stockerez des données via le shell MongoDB.
1. Depuis une session interactive à l’intérieur du conteneur Docker, exécutez la commande show dbs
ci-dessous pour lister toutes les bases de données de votre serveur.
Ci-dessous, vous pouvez voir une base de données admin, une base de données config et une base de données locale. Le shell MongoDB crée ces bases de données par défaut dans chaque serveur MongoDB.

2. Ensuite, exécutez la commande use
ci-dessous pour créer une nouvelle base de données. Remplacez <database_name>
par le nom de base de données de votre choix. Mais pour cet exemple, la base de données est nommée linux
.
La requête
use
bascule la base de données actuelle vers celle que vous spécifiez si elle existe. Sinon, la requêteuse
crée une nouvelle base de données et bascule automatiquement vers celle-ci.

3. Exécutez à nouveau la commande show dbs
comme vous l’avez fait précédemment (étape un) pour voir si la base de données que vous avez créée existe.
Je ne vois toujours pas la nouvelle base de données créée (linux) dans la liste ? MongoDB construit la base de données uniquement lorsque vous y stockez des données pour la première fois. Les données peuvent être sous forme d’une collection ou même d’un document.

4. Maintenant, copiez/collez le code ci-dessous dans l’interpréteur MongoDB et appuyez sur Entrée.
Le code ci-dessous crée une nouvelle collection nommée linux_version
, que vous pouvez changer selon vos préférences. La collection contient des données au format clé:valeur.
Dans la sortie ci-dessous, vous pouvez voir que la collection linux_version
est créée et est accompagnée d’un ObjectID.

5. Exécutez la commande show collections
pour voir une liste de collections et vérifier si la nouvelle collection linux_version
existe.
Vous pouvez voir ci-dessous que vous avez créé avec succès la collection linux_version.

6. Enfin, exécutez la commande ci-dessous pour afficher et confirmer que les données que vous avez insérées dans la collection linux_version
sont correctes. La méthode pretty() vous permet de visualiser les données dans un format lisible par l’homme.
Si vous modifiez jamais les données dans la base de données, utilisez la méthode
Update()
.
Vous pouvez voir ci-dessous que la sortie est dans un format beaucoup plus lisible.

Redémarrage du conteneur MongoDB Docker
À présent, vous disposez d’un conteneur Docker MongoDB fonctionnant correctement. Mais que faire si vous n’avez plus besoin du conteneur, ou s’il ne fonctionne pas ? Quelques commandes Docker peuvent vous aider à arrêter, redémarrer, voire supprimer un conteneur Docker MongoDB.
1. Exécutez la commande docker ps
ci-dessous pour lister tous les conteneurs en cours d’exécution.
Notez le nom et l’ID du conteneur que vous souhaitez arrêter, redémarrer ou supprimer, comme indiqué ci-dessous.

2. Ensuite, exécutez l’une des commandes docker stop
ci-dessous pour arrêter un conteneur MongoDB en cours d’exécution.
3. Réexécutez la commande docker ps
comme vous l’avez fait précédemment (étape un) pour vérifier si le conteneur s’est arrêté.
Comme vous pouvez le voir ci-dessous, le conteneur ne figure pas dans la liste des conteneurs en cours d’exécution, ce qui indique que vous avez arrêté le conteneur avec succès.

4. Exécutez maintenant l’une des commandes docker start
ci-dessous si vous décidez de redémarrer un conteneur.
5. Enfin, relancez la commande docker ps
pour voir si le conteneur est en cours d’exécution.
Peut-être n’avez-vous plus besoin d’un conteneur. Si tel est le cas, vous devez d’abord arrêter le conteneur et exécuter la commande
rm
pour le supprimer, comme ceci :sudo docker container rm mongodb
. Comme dans les exemples précédents, remplacezmongodb
par le nom du conteneur ou son ID.
Conclusion
Dans ce tutoriel, vous avez appris comment déployer et gérer un conteneur Docker MongoDB en créant un utilisateur administrateur pour créer une base de données et y stocker des données. Vous avez réalisé que vous pouvez arrêter, redémarrer et supprimer des conteneurs dont vous n’avez plus besoin pour maintenir la propreté de vos images Docker.
Le déploiement et la gestion de MongoDB avec Docker sont la première étape vers l’exploitation de la technologie de conteneurisation et la réduction des frais généraux. Pourquoi ne pas utiliser cette première étape pour explorer MongoDB davantage et voir comment un conteneur Docker MongoDB peut vous aider dans vos projets ?