Sur quoi repose l'isolation des conteneurs dans Docker?
sobes.tech IA
Réponse de l'IA
L’isolation des conteneurs dans Docker repose sur les principales technologies et mécanismes du noyau Linux suivants :
-
Namespaces (espaces de noms) : Permettent d’isoler la visibilité et l’accès aux ressources système. Docker utilise plusieurs types de Namespaces :
PID namespace: Isoler les processus, chaque conteneur ne voit que ses propres processus (PID 1 à l’intérieur du conteneur).Net namespace: Isoler la pile réseau (interfaces réseau, adresses IP, ports, règles de routage).Mnt namespace: Isoler les points de montage du système de fichiers.UTS namespace: Isoler le nom d’hôte et le nom de domaine.IPC namespace: Isoler les ressources de communication inter-processus (semaphores, mémoire partagée).User namespace: Isoler les IDs utilisateur et groupe.
-
Control Groups (cgroups) : Permettent de limiter et de contrôler la consommation des ressources système (CPU, mémoire, I/O, trafic réseau) pour des groupes de processus. Docker utilise cgroups pour :
- Limiter la quantité de CPU ou la fraction de temps processeur.
- Limiter la mémoire disponible.
- Prioriser ou limiter l’entrée/sortie disque.
- Limiter le trafic réseau.
-
Union File Systems (UnionFS) : Créent des couches du système de fichiers. Docker utilise UnionFS comme OverlayFS, AUFS (plus ancien), Btrfs. Ils permettent :
- Créer des couches légères pour les images Docker.
- Utiliser efficacement l’espace disque en partageant les couches de base.
- Lors de l’écriture de modifications dans le conteneur, créer des couches COW (Copy-on-Write) sans modifier l’image de base.
-
Seccomp (Mode de calcul sécurisé) : Limite les appels système (syscalls) que peut effectuer un processus à l’intérieur du conteneur, réduisant ainsi la surface d’attaque. Docker utilise par défaut des profils seccomp pour la majorité des conteneurs.
-
AppArmor / SELinux : Pour une sécurité et une isolation supplémentaires, des modules de contrôle d’accès obligatoire (MAC), tels qu’AppArmor ou SELinux, peuvent être utilisés. Ils offrent un contrôle plus granulaire sur ce que les processus peuvent faire (par exemple, accès aux fichiers, ressources réseau). Docker peut utiliser des profils AppArmor ou SELinux si ceux-ci sont configurés sur le système hôte.