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é
/datasur 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
/datasur 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.txtcontenant 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 mkdirpour créer le répertoire/data. - Vous devrez peut-être modifier le propriétaire avec
sudo chownet les permissions avecsudo chmodpour garantir que le processus du conteneur puisse y écrire. - L'option
-vou--volumede la commandepodman runest 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(/.*)?"etsudo restorecon -R /datapour 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).
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.



