Attacher un stockage persistant à un conteneur

Red Hat Enterprise LinuxBeginner
Pratiquer maintenant

Introduction

Au cours de ce défi, vous allez attacher un stockage persistant à un conteneur à l'aide de podman. Par nature, les conteneurs sont éphémères, ce qui signifie que toute donnée créée à l'intérieur d'un conteneur est perdue lors de sa suppression. Pour préserver ces données, vous pouvez monter un répertoire du système hôte dans le conteneur. Ce répertoire monté est appelé volume persistant ; il garantit que vos données subsistent même si le conteneur est arrêté, supprimé ou recréé.

Attacher un stockage persistant à un conteneur

Dans ce défi, vous allez créer un répertoire sur le système hôte qui servira de volume persistant. Vous lancerez ensuite un nouveau conteneur en lui attachant ce volume. Enfin, vous vérifierez que les données écrites dans le volume depuis l'intérieur du conteneur persistent après un redémarrage de ce dernier.

Tâches

  • Créer un répertoire sur le système hôte pour servir de volume persistant.
  • Lancer un nouveau conteneur en lui attachant le volume persistant.
  • Vérifier que les données écrites dans le volume depuis le conteneur sont conservées après le redémarrage du conteneur.

Exigences

  • Créez un répertoire nommé /data sur le système hôte. Ce répertoire sera utilisé comme chemin hôte pour le montage du volume.
  • Lancez un conteneur en utilisant l'image nginx. Le conteneur doit être nommé my-nginx-container.
  • Montez le répertoire hôte /data sur le répertoire /usr/share/nginx/html à l'intérieur du conteneur.
  • À l'intérieur du conteneur en cours d'exécution, créez un fichier nommé /usr/share/nginx/html/my-file.txt contenant exactement le texte suivant : This is a persistent file.

Exemple

Une fois les tâches accomplies, vous devriez être en mesure de voir votre fichier personnalisé aux côtés des fichiers Nginx par défaut dans le répertoire monté du conteneur. Vous pouvez également consulter le répertoire hôte /data pour y trouver les mêmes fichiers.

[labex@host ~]$ podman exec my-nginx-container cat /usr/share/nginx/html/my-file.txt
This is a persistent file
[labex@host ~]$ podman exec my-nginx-container ls /usr/share/nginx/html
my-file.txt

Conseils

  • Utilisez la commande sudo mkdir pour créer le répertoire /data.
  • Vous devrez peut-être modifier le propriétaire avec sudo chown et les permissions avec sudo chmod pour garantir que le processus du conteneur puisse y écrire.
  • L'option -v ou --volume de la commande podman run est utilisée pour monter un répertoire hôte dans un conteneur. Le format est -v /host/path:/container/path.
  • Sur les systèmes où SELinux est activé (comme RHEL), vous devez définir le contexte SELinux approprié pour le répertoire hôte. Utilisez sudo semanage fcontext -a -t container_file_t "/data(/.*)?" et sudo restorecon -R /data pour configurer les étiquettes SELinux.
  • Si vous rencontrez des erreurs de permission, essayez de définir le propriétaire du répertoire pour qu'il corresponde à l'ID utilisateur du conteneur (généralement 1000:1000 pour nginx).
✨ Vérifier la solution et pratiquer

Résumé

Dans ce défi, vous avez appris à fournir un stockage persistant à un conteneur en utilisant un montage lié (bind mount). En montant un répertoire du système hôte dans un conteneur, vous garantissez que les données générées par votre application persistent même lorsque le conteneur est arrêté, supprimé ou redémarré. Cette technique est fondamentale pour exécuter des applications avec état (stateful) dans des conteneurs.