Le noyau peut allouer et restreindre les ressources auxquelles les processus exécutés peuvent accéder via les espaces de noms. Les espaces de noms créent l'isolement et les conteneurs ne visualisent que les processus. Pour travailler facilement avec les conteneurs et les espaces de noms, le nsenter La commande Linux est requise et nous verrons comment utiliser Nsenter pour inspecter et exécuter des programmes dans les espaces de noms.
Comment inspecter les espaces de noms Linux à l'aide de Nsenter
Avant de plonger dans l'utilisation de Nsenter, nous devons comprendre les conteneurs et les espaces de noms Linux.
Que sont les conteneurs Linux?
Avec la technologie croissante, la demande de développement d'applications plus évolutives et sécurisées a étendu la nécessité d'utiliser des conteneurs. On peut dire que des conteneurs Linux peuvent être une technologie qui permet d'emballage et d'isoler les applications et les ressources dans leur environnement d'exécution, loin du système. En outre, vous pouvez également créer des conteneurs contenant des espaces de noms pour différents processus sur votre système Linux à l'aide de divers outils, tels que podman ou docker.
Pour cet exemple, nous créerons un nouveau conteneur à l'aide de Docker, comme indiqué dans l'image ci-dessous.
Sortez du conteneur et répertoriez les conteneurs disponibles à partir du système hôte. Vous noterez que le conteneur que nous avons créé est répertorié, y compris son ID de conteneur.
$ sudo docker ps -l
Alternativement, si vous utilisez podman Red Hat propose un conteneur dans son catalogue auquel vous pouvez accéder en utilisant la commande ci-dessous.
$ Podman Run - Name Namespace-Demo -it Registry.accès.chapeau rouge.com / ubi8 / ubi / bin / bash
Une fois le conteneur créé, énumérez l'ID de processus du conteneur créé à l'aide de la commande ci-dessous.
$ Runc List
Dans la sortie, vous devez noter l'ID de processus. Dans notre cas, l'ID est 39782.
En utilisant l'ID de processus ci-dessus, vous pouvez obtenir les espaces de noms associés en utilisant LSN ou nsenter.
Utiliser LSN, Utilisez la syntaxe ci-dessous.
$ lsns -p
Contrairement aux LSN, le nsenter offre plus d'options, vous donnant plus de contrôle.
Utilisation de Nsenter avec des espaces de noms Linux
Certaines des options courantes que vous pouvez utiliser avec Nsenter comprennent:
1. -T: Cet drapeau spécifie l'ID de processus cible.
2. -u: Il est utilisé pour entrer l'espace de noms du processus, et si aucun espace de noms n'est entré, il utilisera celui du processus cible.
Par exemple, pour obtenir le nom d'hôte de l'espace de noms avec l'ID 39782, la commande serait:
$ nsenter -t 39782 -U nom d'hôte
3. -un: utilisé pour entrer tous les espaces de noms disponibles. Dans notre cas, nous n'en avons qu'un. Si nous exécutons la commande ci-dessous, vous remarquerez que nous sommes à l'intérieur du conteneur.
Vous pouvez vous déconnecter en tapant sortie.
4. -N: Le drapeau est utilisé pour entrer l'espace de noms du réseau. Seules les informations réseau pour l'espace de noms donné sont visualisées.
Si vous deviez afficher les mêmes détails du réseau à partir du système complet, vous remarqueriez qu'il y a l'isolement.
L'isolement s'étend au Itinéraire IP, Et nous pouvons également obtenir l'itinéraire IP pour l'espace de noms en utilisant la commande ci-dessous.
$ nsenter -T 39782 -N ip
Dans l'image ci-dessus, vous pouvez remarquer comment la première sortie est pour l'espace de noms de l'ID de processus cible donné, mais la deuxième sortie est l'itinéraire IP pour le système complet.
5. -P: À l'aide de NSenter, vous pouvez également saisir l'espace de noms PID à l'aide du -p drapeau. Pour que cela fonctionne, vous devriez avoir le haut ou ps Commandes installées à l'intérieur du conteneur.
Si vous avez créé le podman conteneur, utilisez la commande ci-dessous pour installer procps-ng package, qui installe les top et ps pour aider à afficher les processus en cours d'exécution à l'aide du ps -ef Commande Linux.
$ yum install procps-ng
Vous pouvez maintenant saisir l'espace PID à l'aide de la commande ci-dessous.
$ nsenter -t 39782 -p -r ps -ef
Le -r Définit le répertoire racine, et si aucun n'est spécifié, comme dans la commande ci-dessous, il utilise celui de l'ID de processus cible.
La sortie donne le processus en cours d'exécution dans le conteneur.
Conclusion
En tant que développeur, vous ne pouvez pas échapper à l'utilisation de conteneurs Linux. La meilleure approche consiste à vous équiper d'outils qui vous permettent d'interagir avec les différents espaces de noms pour les processus dans des conteneurs séparés. Grâce aux conteneurs, l'isolement des processus exécutés sur Linux est possible. Nous avons couvert comment utiliser le nsenter Commande Linux pour entrer les espaces de noms de différents processus dans n'importe quel conteneur. Continuez à pratiquer et à essayer d'autres tactiques pour mieux comprendre l'outil.