Maison > Article > Opération et maintenance > Que fait chroot dans Docker ?
Dans Docker, chroot est une opération dans les systèmes Unix et Linux. Elle modifie le répertoire racine apparent d'un processus logiciel en cours d'exécution et de ses sous-processus. Il peut modifier le répertoire racine d'un processus afin que le programme ne puisse pas y accéder. autre que le répertoire.
L'environnement d'exploitation de ce tutoriel : système linux7.3, version docker-1.13.1, ordinateur Dell G3.
chroot
La technologie des conteneurs a émergé depuis le premier avènement de chroot en 1979.
Wikipédia définit le chroot comme suit :
est une opération dans les systèmes Unix et Linux pour modifier le répertoire racine apparent d'un processus logiciel en cours d'exécution et de ses processus enfants. Un programme exécuté dans cet environnement et définissant le répertoire racine via chroot ne peut pas accéder aux fichiers en dehors du répertoire racine spécifié, ne peut pas les lire et ne peut pas modifier son contenu.
En termes simples, chroot peut changer le répertoire racine d'un processus afin que le programme ne puisse pas accéder à d'autres répertoires en dehors du répertoire. C'est très similaire à ce que nous faisons dans un conteneur. Ci-dessous, nous utilisons un exemple pour démontrer le chroot.
Description de l'exemple chroot :
1), mkdir rootfs
#Créez un répertoire nommé : rootfs dans le répertoire courant
2), cd rootfs
#Entrez le répertoire nommé : rootfs
3) , docker export $ (docker create docker101tutorial) -o docker101tutorial.tar
#Exportez le système de fichiers du conteneur nommé : docker101tutorial en tant que fichier d'archive docker101tutorial.tar vers docker101tutorial.tar et enregistrez-le
#Cela peut aussi être simplement compris comme dans Création de certains répertoires et placé quelques fichiers binaires sous rootfs
4), tar -xf docker101tutorial.tar
#Extraire le contenu du fichier docker101tutorial.tar
5), ls
#Afficher le contenu du fichier dans le répertoire rootfs actuel
6), chroot /Users/xiaoqin.wu/rootfs /bin/sh
#Démarrez un processus sh et utilisez /Users/xiaoqin.wu/rootfs comme répertoire racine du processus sh
Comparaison Dans la figure ci-dessus, le résultat de la commande 5 : ls pour afficher le contenu du fichier dans le répertoire /Users/xiaoqin.wu/rootfs est cohérent avec le résultat de l'utilisation de la commande 7 : ls pour afficher le processus en cours dans le processus sh À ce stade, cela montre que l'utilisation de chroot réalise le processus actuel et que l'isolation de l'hôte et un conteneur isolé par répertoire sont terminés, mais il ne peut pas encore être appelé un conteneur.
Les raisons sont les suivantes :
Utilisez la commande 8 : netstat -nr pour afficher les informations de routage
Il ressort des résultats que les informations sur le réseau ne sont pas isolées. En fait, le processus et d'autres informations le sont. pas isolé pour le moment. Pour réaliser un conteneur complet, il faut mettre en œuvre trois autres technologies Linux, à savoir :
Namespace
Cgroup
United File System
Apprentissage recommandé : "Tutoriel vidéo Docker"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!