GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment déployer et gérer un conteneur Docker MongoDB

MongoDB est une base de données de documents open source populaire 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 ? Sinon, vous allez vous régaler !

Dans ce didacticiel, vous apprendrez à déployer, sécuriser et gérer efficacement MongoDB avec Docker. Alors lisez la suite et devenez votre propre maître du déploiement de conteneurs Docker MongoDB !

Prérequis

Ce didacticiel comprend des démonstrations pratiques. Pour suivre, assurez-vous d'avoir les éléments suivants :

  • Une machine Ubuntu – Ce didacticiel utilise Ubuntu 20.04 LTS
  • Un utilisateur avec sudo autorisation
  • Docker – Ce didacticiel 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 à partir du Docker Hub afin de pouvoir exécuter le conteneur MongoDB localement.

Exécutez le docker commande ci-dessous pour télécharger l'image MongoDB Community Edition (CE) (pull mongo ), hébergé par Docker Hub. La dernière version de cette image au moment de la rédaction est la 4.2.

sudo docker pull mongo

Comme vous pouvez le voir ci-dessous, la commande extrait automatiquement la dernière version de l'image et la marque comme dernière .

Exécutez maintenant les docker images commande ci-dessous pour lister toutes les images disponibles sur votre serveur.

sudo docker images

Ci-dessous, vous pouvez voir l'image MongoDB étiquetée comme dernière .

Déployer 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 allez initialiser votre conteneur MongoDB avec l'exécutable mongo, créer un répertoire de données. Vous définirez ensuite le mappage entre la zone de données du conteneur Docker et la machine hôte.

1. Exécutez le mkdir commande ci-dessous pour créer un répertoire de données nommé mongodata pour stocker la base de données et les journaux MongoDB.

sudo mkdir -p /mongodata

2. Ensuite, exécutez le docker run commande ci-dessous pour créer un conteneur nommé mymongo . De plus, le conteneur est démarré avec un pseudo-TTY interactif (-it ), dans le cas où la sortie doit être affichée au démarrage du conteneur.

Enfin, le répertoire nouvellement créé mongodata est lié (-v ) dans le répertoire interne, /data/db . Le -d démarre le conteneur en mode détaché, il s'exécute donc en arrière-plan et renvoie la sortie de la console lors de la création.

Le système crée automatiquement le /data/db lorsque vous exécutez le conteneur pour stocker les données des modifications que vous apportez au conteneur. Ce répertoire s'exécute dans un mode similaire au mode lecture seule et permet le stockage persistant des données sur le système hôte.

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

Une fois la commande terminée avec succès, vous verrez une sortie comme celle ci-dessous.

3. Enfin, exécutez le docker ps commande ci-dessous pour identifier l'ID du conteneur et vérifier son état. Le docker ps La commande affiche toutes les informations sur le conteneur en cours d'exécution.

Le docker ps la commande est comparable à la commande ps normale commande sous Linux.

sudo docker ps

Dans la sortie ci-dessous, vous pouvez voir un Ports section qui répertorie tous les ports affectés au conteneur pour écouter les connexions entrantes.

Dans cet exemple, le port 27017 est mappé à l'hôte. La sortie ci-dessous indique que vous pouvez accéder à l'instance MongoDB sur ce conteneur via localhost:27017 de l'hôte.

Peut-être voulez-vous voir le fichier journal de mymongo conteneur pour déterminer ce qui s'est passé sur votre base de données/instance mongo en cas de problème. Si c'est le cas, exécutez les docker logs commande, comme ceci :sudo docker logs docker-container . Remplacer docker-container avec le nom de votre nom de conteneur Docker.

Attacher le conteneur Docker MongoDB à Bash Shell

Vous venez de déployer un conteneur Docker MongoDB, mais comment le gérez-vous ? Pour ce faire, attachez le conteneur Docker au shell Bash avec le docker exec commande en premier.

Attacher votre conteneur au shell Bash est crucial car le conteneur fonctionne actuellement en mode détaché (en arrière-plan). Et si le conteneur s'exécute en arrière-plan, le conteneur ne recevra ni entrée ni sortie d'affichage.

Exécutez le docker exec commande ci-dessous pour attacher votre conteneur (mymongo ) au shell Bash.

sudo docker exec -it mymongo bash

Une fois la commande terminée, votre invite se transformera en quelque chose comme celle ci-dessous. Le numéro alphanumérique unique (77782fa95314 ) est l'ID du conteneur.

Les ID de conteneur sont essentiels pour éviter les conflits de noms et identifier efficacement les conteneurs entre les hôtes, alors essayez de ne pas les modifier.

Exécutez maintenant le mongo commande sans aucun argument pour se connecter au shell MongoDB dans le conteneur (mymongo). Le shell MongoDB est l'endroit où vous exécutez vos requêtes/commandes mongo.

Une fois que vous êtes dans le conteneur, vous pouvez exécuter n'importe quelle commande sans le sudo préfixe puisque vous êtes maintenant un utilisateur root à l'intérieur du conteneur. Chaque modification que vous apportez au conteneur n'affectera pas votre système hôte.

mongo

En regardant l'invite ci-dessous, vous pouvez dire que vous êtes maintenant dans le shell MongoDB.

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

Création d'un utilisateur administratif MongoDB

Après avoir déployé un serveur MongoDB dans un conteneur Docker, vous allez maintenant créer un utilisateur administratif MongoDB. Un utilisateur administratif vous permet de vous connecter au serveur MongoDB et de gérer les bases de données.

1. Connectez-vous à nouveau au shell MongoDB et exécutez le use commande ci-dessous pour passer d'abord à l'admin base de données. Cela fournit à l'utilisateur administratif les autorisations appropriées pour gérer les bases de données.

use admin

Copiez et collez le code suivant dans l'invite MongoDB pour créer un utilisateur administratif.

Le code ci-dessous utilise le db.createUser() méthode pour créer un utilisateur avec des rôles administratifs. Le nom d'utilisateur (user ) et mot de passe (pwd ) ci-dessous sont codés en dur, que vous pouvez modifier en fonction de vos préférences.

# 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" } ]
}
)

Si le code fonctionne, vous recevrez un message comme celui ci-dessous dans votre invite MongoDB.

3. Exécutez le quit() requête ci-dessous pour quitter le shell MongoDB.

quit()

4. Enfin, exécutez le mongo suivant commande pour tester l'utilisateur administratif que vous avez créé (ata ) en se connectant au serveur MongoDB. Entrez le mot de passe de l'utilisateur administratif lorsque vous y êtes invité.

mongo -u ata -p --authenticationDatabase admin

Comme vous le voyez ci-dessous, le serveur MongoDB imprime la version du serveur MongoDB si vous vous connectez au serveur avec succès.

Peut-être souhaitez-vous tester davantage l'utilisateur administratif. Si tel est le cas, exécutez les commandes ci-dessous pour afficher tous les utilisateurs de la base de données.

use admin
show users

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

La gestion d'un conteneur Docker MongoDB ne serait pas complète sans la création d'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. À partir d'une session interactive dans le conteneur Docker, exécutez le show dbs commande ci-dessous pour répertorier toutes les bases de données de votre serveur.

show dbs

Ci-dessous, vous pouvez voir une base de données d'administration, une base de données de configuration 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 le use commande ci-dessous pour créer une nouvelle base de données. Remplacer <database_name> avec le nom de la base de données de votre choix. Mais pour cet exemple, la base de données est nommée linux .

L'use query bascule la base de données actuelle vers celle que vous spécifiez si elle existe. Sinon, le use query crée une nouvelle base de données et bascule automatiquement vers celle-ci.

use <database_name>

3. Réexécutez le show dbs commande comme vous l'avez fait précédemment (première étape) pour voir si la base de données que vous avez créée existe.

show dbs

Vous ne voyez toujours pas la base de données nouvellement créée (linux) sur 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 se présenter sous la forme d'une collection ou même d'un document.

4. Maintenant, copiez/collez le code ci-dessous dans le shell MongoDB et appuyez sur Entrée .

Le code ci-dessous crée une nouvelle collection nommée linux_version , que vous pouvez changer pour le nom que vous préférez. La collection contient des données au format paires clé:valeur.

# 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"
	}
)

Dans la sortie ci-dessous, vous pouvez voir le linux_version la collection est créée et est fournie avec un ObjectID .

5. Exécutez les show collections commande pour voir une liste de collections et voir si la nouvelle collection linux_version existe.

show collections

Vous pouvez voir ci-dessous que vous avez créé avec succès la linux_version le recueil.

6. Enfin, exécutez la commande ci-dessous pour afficher et confirmer les données que vous avez insérées dans le linux_version la collecte est correcte. La méthode jolie() vous permet d'afficher les données dans un format lisible par l'homme.

db.linux_version.find().pretty()

Si jamais vous modifiez les données dans la base de données, utilisez le Update() méthode.

Vous pouvez voir que la sortie ci-dessous est dans un format très lisible.

Redémarrage du conteneur Docker MongoDB

À présent, vous avez un conteneur Docker MongoDB en cours d'exécution. Mais que se passe-t-il si vous n'avez plus besoin du conteneur ou s'il ne fonctionne pas ? Quelques commandes Docker peuvent aider à arrêter, redémarrer et même supprimer un conteneur MongoDB Docker.

1. Exécutez le docker ps commande ci-dessous pour répertorier tous les conteneurs en cours d'exécution.

sudo docker ps

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'un des docker stop commandes ci-dessous pour arrêter un conteneur MongoDB en cours d'exécution.

sudo docker stop mymongo
sudo docker stop container-ID

3. Réexécutez le docker ps comme vous l'avez fait précédemment (première étape) pour vérifier si le conteneur s'est arrêté.

sudo docker ps

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 réussi à arrêter le conteneur.

4. Maintenant, exécutez l'un des docker start commandes ci-dessous si vous décidez de redémarrer un conteneur.

sudo docker start mymongo
sudo docker start container-ID

5. Enfin, relancez le docker ps commande pour voir si le conteneur est en cours d'exécution.

sudo docker ps

Peut-être n'avez-vous plus besoin d'un conteneur. Si c'est le cas, vous devez d'abord arrêter le conteneur et exécuter le rm commande pour supprimer un conteneur, comme ceci :sudo docker container rm mongodb . Comme dans les exemples précédents, remplacez mongodb avec le nom ou l'ID du conteneur.

Conclusion

Dans ce didacticiel, vous avez appris à 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 les conteneurs dont vous n'avez plus besoin pour garder vos images Docker propres.

Déployer et gérer MongoDB avec Docker est la première étape pour tirer parti de la technologie de conteneurisation et réduire les frais généraux. Pourquoi ne pas utiliser cette première étape pour explorer davantage MongoDB et voir comment un conteneur Docker MongoDB peut vous aider dans vos projets ?


Docker
  1. Comment déployer un conteneur nginx avec Docker sur Linode

  2. Comment installer Docker et déployer une pile LAMP

  3. Qu'est-ce que containerd et quel est son lien avec Docker et Kubernetes ?

  4. Comment déployer PostgreSQL en tant que conteneur Docker

  5. Comment créer une image Docker à partir d'un conteneur et d'un Dockerfile

Comment se connecter en SSH à un conteneur Docker et exécuter des commandes

Comment installer et configurer Docker Container sur AlmaLinux 8

Comment déployer un conteneur Docker sur AWS Elastic Beanstalk

Comment copier des fichiers entre l'hôte et le conteneur Docker

Comment gérer les conteneurs Docker

Comment déployer un conteneur Docker sur Jelastic Cloud