Introduction
Volumes de données Docker est un concept important lors de la conteneurisation de vos applications. Connaître ce concept est essentiel pour garantir la meilleure expérience de votre application conteneurisée ainsi qu’une persistance et une gestion des données fiables. Cependant, bien que ce concept soit important, il est également déroutant et complexe pour de nombreux développeurs. Il est important pour les développeurs et les spécialistes DevOps de comprendre comment configurer les volumes de données Docker, de comprendre leur utilisation correcte, de connaître les différents types de volumes et de savoir quel type choisir pour leur application.
Ce tutoriel est axé sur l’explication du concept et de l’utilisation des volumes de données Docker. Une fois ce tutoriel terminé, vous maîtriserez la configuration et l’utilisation de tout type de volume de données Docker.
Prérequis
Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :
- Ubuntu installé. Consultez notre tutoriel Comment configurer votre serveur Ubuntu 18.04 pour une référence rapide.
- Utilisateur Ubuntu avec privilèges sudo. Cette étape peut être compliquée, surtout si vous n’êtes pas familier avec Linux. Lisez Configuration du fichier Linux Sudoers pour un guide détaillé.
- Docker installé sur Ubuntu. Pour installer Docker sur votre Ubuntu, vous pouvez suivre notre blog Comment installer & exploiter Docker sur Ubuntu dans le cloud public.
Bien que ce tutoriel se concentre sur la gestion de Docker sur Ubuntu, docker les commandes sont applicables sur tous les systèmes d’exploitation sur lesquels Docker est installé.
Comprendre le fonctionnement des conteneurs Docker
Pour bien comprendre les volumes de données Docker, vous devez savoir comment fonctionnent les conteneurs Docker. Dans cette section, nous proposons un aperçu des bases pour les nouveaux utilisateurs de Docker. Si vous savez comment fonctionne Docker ou si vous êtes un utilisateur expérimenté de Docker, vous pouvez ignorer cette section et commencer avec les volumes de données.
Les conteneurs Docker permettent d’exécuter une application par-dessus le système d’exploitation hôte en installant la plateforme Docker. Comme la plateforme Docker est installée sur le système d’exploitation hôte, une abstraction se forme entre la machine hôte et l’application invitée. Contrairement à une machine virtuelle, un conteneur Docker partage son noyau Linux avec le système d’exploitation hôte. Comme Docker n’a pas besoin d’un système d’exploitation supplémentaire installé par-dessus la machine hôte, les applications Docker sont légères et accessibles sur toutes les machines hôtes tant que Docker est installé sur cette machine hôte.
Comme il n’y a pas d’OS invité supplémentaire, la plateforme Docker partage les ressources avec la machine hôte. Le démarrage de l’application Docker est rapide, mais la complexité survient lorsqu’il faut partager les ressources. Docker ne dispose pas de sa propre mémoire ou de son propre stockage pour la persistance des données. Ces ressources doivent provenir de la machine hôte. Les personnes habituées à utiliser des machines virtuelles trouvent ce processus de partage et de gestion des ressources difficile. Ne pas avoir les connaissances appropriées peut conduire à des résultats inattendus et indésirables. Bien que ce tutoriel suppose que vous êtes familier avec l’écosystème Docker, n’hésitez pas à parcourir notre tutoriel détaillé Qu’est-ce que Docker ? Un aperçu de l’écosystème Docker pour un rappel rapide.
Persister les données à l’aide des volumes de données Docker
Lorsque vous travaillez avec Docker, vous ne pouvez pas y créer un volume directement. Par conséquent, pour stocker des données, nous devons créer un conteneur de volume Docker avec un volume qui lui est attaché. Pour connecter notre application Docker à ce conteneur de volume de données, nous utilisons la commande --volume-from de Docker pour obtenir le conteneur et l’attacher à notre application.
Nous allons passer en revue le processus étape par étape :
- Tout d’abord, créez un nouveau conteneur appelé,
my-container en exécutant la commande ci-dessous :
1docker create -v /tmp --name my-container ubuntu
Cela créera un nouveau conteneur dans le dossier /tmp . Vous pouvez modifier le répertoire du dossier si nécessaire. - Maintenant que votre conteneur de données est prêt, vous pouvez y écrire en exécutant un nouveau conteneur Ubuntu avec l’option
--volume-from et en exécutant ensuite le
bash. Tout ce que nous écrivons dans le
tmp le répertoire sera sauvegardé dans le dossier
/tmp de notre machine hôte :
1docker run -t -i --volumes-from my-container ubuntu /bin/bash
L’option de ligne de commande -t appelle un terminal depuis l’intérieur du conteneur. L’option -i rend la connexion interactive. À l’invite bash du conteneur Ubuntu, créez un fichier dans /tmp:
1echo "Some sample data" > /tmp/sample_file - Enfin, quittez ce bash en exécutant la commande
exit . Ensuite, exécutez la commande ci-dessous :
1docker run -t -i --volumes-from my-container ubuntu /bin/bash
Vous trouverez votre sample_file dans ce répertoire. Il n’y a aucune restriction sur le nombre de volumes à spécifier. Vous pouvez ajouter autant de volumes que vous le souhaitez en utilisant l’option --volumes-from . Vous pouvez également créer autant de conteneurs de volumes de données que vous le souhaitez.
Accéder aux données entre l’hôte et le conteneur Docker
Pour les lecteurs expérimentés en virtualisation, cette option est similaire à l’option de dossier partagé dans les machines virtuelles. Ici, au lieu de créer un conteneur de données-uniquement , nous exécutons notre application Docker en utilisant l’image Docker et remplaçons l’un de ses répertoires par le contenu d’un répertoire du système hôte.
Un scénario courant consisterait à sauvegarder les fichiers de journalisation (logs) sur la machine hôte. Cela peut être nécessaire pour que nous puissions analyser ces fichiers selon les besoins sans avoir à entrer dans la machine. Pour ce scénario, supposez que vous utilisez l’ Docker Nginx image et que vous souhaitez stocker ses fichiers de journalisation sur la machine hôte. L’image Docker Nginx écrit les journaux dans le répertoire /var/log/nginx , mais il s’agit de /var/log/nginx à l’intérieur du conteneur Docker Nginx. Ainsi, cet emplacement n’est pas accessible à la machine hôte.
Pour atteindre notre objectif, nous devrons créer un dossier partagé pour stocker les journaux entre la machine hôte et l’image Docker Nginx. Ci-dessous, nous illustrerons ce processus dans un guide étape par étape simple :
- Tout d’abord, créez un répertoire sur votre machine hôte où vous souhaitez stocker les journaux :
Ensuite, démarrez votre conteneur en exécutant la commande ci-dessous :1mkdir ~/my-nginxlogs
1docker run -d -v ~/my-nginxlogs:/var/log/nginx -p 5000:80 -i nginx
- Cette commande
run accepte quelques arguments, alors décomposons-la pour mieux comprendre :
- -p 5000:80 : Configure une redirection de port. Le conteneur Nginx écoute sur le port 80 par défaut, et cela mappe le port du conteneur Nginx 80 au port 5000 sur le système hôte.
- -d : Détache le processus et l’exécute en arrière-plan.
- -v ~/my-nginxlogs:/var/log/nginx : Nous relions le répertoire /var/log/nginx depuis l’intérieur du conteneur Nginx au répertoire /my-nginxlogs de la machine hôte. Ce : sépare le chemin de l’hôte du chemin du conteneur. Le chemin de l’hôte vient toujours en premier.
Maintenant que notre conteneur Nginx est en cours d’exécution, vérifiez d’abord si le serveur Nginx est actif sur le port de notre machine hôte 5000 en ouvrant votre navigateur Web et en accédant à l’URL : http://localhost:5000. Une fois que la page d’accueil apparaît, votre serveur Nginx est prêt et crée des journaux dans son dossier /var/log/nginx .
Si vous ouvrez le dossier /my-nginxlogs de votre machine hôte, vous y verrez les fichiers de journalisation du conteneur Docker Nginx. Si vous apportez des modifications au dossier /my-nginxlogs sur la machine hôte pendant que le conteneur Nginx est en cours d’exécution, les modifications seront également reflétées dans le dossier /var/log/nginx du conteneur.
Conclusion
Dans ce tutoriel, nous avons adopté une approche globale pour comprendre les volumes de données Docker. Nous avons examiné la création de volumes pour votre application, le partage de données entre l’hôte et le conteneur Docker, les types de données et la persistance des données. Cela vous aidera à rendre les données persistantes dans vos applications conteneurisées ainsi qu’à gérer l’état et la configuration de l’application.
Pour en savoir plus sur Docker, consultez les tutoriels suivants sur our blog:
- Comment héberger un dépôt d’images Docker et créer des images Docker avec une instance GitLab auto-gérée sur Ubuntu 20.04
- Construire et déployer une application Flask avec Docker sur Ubuntu 20.04
- Configuration d'un registre Docker privé sur Ubuntu 18.04
- Comment partager des données entre un conteneur Docker et un hôte
- Nettoyer les ressources Docker – Images, conteneurs et volumes
Bonne informatique !
Commentaires
Aucun commentaire pour l'instant. Soyez le premier.