Un élément clé requis pour la conteneurisation est l'isolement du réseau et d'autres services, mais pas seulement l' isolement mais aussi la virtualisation . Les prisons FreeBSD, les «conteneurs» Linux (ou plus exactement les «espaces de noms») et les zones Solaris / illumos offrent tous un certain degré de «virtualisation» de ces services du système d'exploitation.
Par virtualisation, cela signifie que ces serveurs sont disponibles (ou potentiellement disponibles ) pour les choses à l'intérieur du "conteneur", mais d'une manière qui protège les autres choses sur le même hôte à l'extérieur du conteneur. (Par exemple, un conteneur peut avoir sa propre pile TCP / IP, avec sa propre adresse IP, son cache ARP, etc.)
La virtualisation de système d'exploitation (OS) est la façon dont nous nous référons généralement à ce type de virtualisation "légère", où les processus pensent qu'ils voient un noyau virtuel, mais partagent tous le même noyau réel sous le capot; ce noyau agit comme une sorte d'hyperviseur en garantissant que les frontières conteneur / virtualisation ne sont pas franchies. (Autrement dit, les services du système d'exploitation sont virtualisés.) Comparez cela à la virtualisation matérielle, où ce qui est virtualisé est le matériel - par exemple, les périphériques sont émulés dans le logiciel et présentés à un système d'exploitation fonctionnant dans le conteneur. C'est très puissant, mais assez gourmand en ressources - chaque machine virtuelle doit avoir sa propre copie du système d'exploitation.
MacOS récent prend en charge l'hyperviseur natif via Hypervisor.framework qui permet à des logiciels comme "XHyve" [Un port de FreeBSD BHyve] (Docker sur macOS l'utilise), mais il manque les services nécessaires sous le capot pour virtualiser entièrement les services du système d'exploitation.
En vérité, une grande partie de ce qui est nécessaire est probablement déjà présente, car le travail pour fournir des bacs à sable signifie qu'il existe déjà des points logiques où les appels système sont interceptés et traités différemment pour différentes applications. Cependant, c'est loin de l'histoire complète - la mise en œuvre d'un véritable réseau séparé, IPC et d'autres espaces de noms représente beaucoup de travail.
La meilleure raison pour laquelle Apple n'a pas fait cela est probablement la même raison pour laquelle Apple n'a pas publié de plate-forme adaptée à l'exécution de macOS dans le centre de données depuis de nombreuses années - manque de demande du marché ou manque perçu de demande du marché par la direction d'Apple. Les ordinateurs de bureau et les appareils mobiles sur lesquels ils ont concentré leur attention n'ont tout simplement pas autant besoin d'instances macOS virtuelles. (C'est triste, car j'aimerais avoir une prise en charge virtuelle de macOS - par exemple, exécuter macOS sur des machines virtuelles à Travis CI prend beaucoup de temps par rapport aux conteneurs Linux).
Vous seriez surpris - les conteneurs sont réellement pris en charge - le bac à sable OS X (et iOS) a évolué pour les utiliser. Ils ont été introduits dans 10.7 et sont désormais de facto standard dans 10.10 et iOS 8. Dans ce dernier, ils sont appliqués de manière plus stricte (principalement en raison de la sécurité de l'application), au point où une application ne peut se voir que, et les versions précédentes les méthodes d'énumération des processus ou des ressources renvoient désormais des résultats basés sur des conteneurs - similaires à l'espace de noms ipc Linux - mais plus puissants.
la source
J'imagine que la réponse est que personne n'en veut vraiment. Cela semble faisable. Ces opérations sont effectuées principalement dans un seul but, en conservant les performances des fournisseurs de VPS. Et personne ne veut vraiment qu'une instance VPS soit basée sur OS X.
la source
Alors qu'il utilise "bon vieux chroot (8)", j'ai commencé un projet qui a tendance à imiter le comportement de docker sur OS X et NetBSD. Il est libre comme discours et est disponible sur GitHub . Comme le dit le README, ce projet ne concerne ni la sécurité ni la production, mais aidera à tester les piles complètes en natif sur votre poste de travail.
la source
Docker (si je comprends bien) ne fait que "virtualiser" (superposer) le système de fichiers et le réseau (les processeurs / mem sont seulement limités), donc toutes les mêmes fonctionnalités devraient être là mais tout simplement pas commercialisées de la même manière.
la source