La conteneurisation d'Apple : des conteneurs Linux sur macOS

Pour les développeurs qui cherchent à abolir les frontières entre les environnements de conteneurisation macOS et Linux, Apple a lancé un projet open source majeur baptisé Containerization. Ce paquet Swift est conçu pour faire tourner des conteneurs Linux directement sur macOS, en tirant parti du puissant Virtualization.framework sur les puces Apple Silicon.

Qu'est-ce que Containerization d'Apple ?

Containerization est bien plus qu'une simple enveloppe ; c'est une solution complète pour la gestion locale de conteneurs. Elle permet aux développeurs de :

  • Manipuler des images OCI : Interagir avec les images OCI (Open Container Initiative) standard, ce qui est crucial pour les flux de travail conteneurisés modernes.
  • Interagir avec des registres distants : Télécharger et envoyer des images de conteneurs depuis divers registres distants.
  • Créer et remplir des systèmes de fichiers ext4 : Essentiel pour des environnements Linux robustes.
  • Interagir avec la famille de sockets Netlink : Permettant des capacités réseau avancées.
  • Optimiser le noyau Linux : Fournit des outils pour créer une configuration de noyau Linux optimisée, ce qui se traduit par des temps de démarrage remarquablement rapides pour les conteneurs.
  • Générer des machines virtuelles légères : Chaque conteneur s'exécute au sein de sa propre VM minimale, assurant isolation et performance.
  • Gérer l'environnement d'exécution : Contrôle total sur l'environnement d'exécution du conteneur.
  • Générer et interagir avec des processus conteneurisés : Exécuter et gérer en toute transparence des applications au sein de conteneurs.
  • Utiliser Rosetta 2 : Une fonctionnalité remarquable qui permet l'exécution de conteneurs linux/amd64 même sur les Mac équipés d'Apple Silicon, améliorant considérablement la compatibilité.

Comment ça marche : la philosophie de conception

Au cœur de Containerization, chaque conteneur Linux s'exécute dans une machine virtuelle dédiée, légère et épurée. Un principe de conception clé est l'attribution d'adresses IP dédiées à chaque conteneur, ce qui simplifie le routage réseau en évitant les port forwarding complexes. Des temps de démarrage inférieurs à la seconde sont obtenus grâce à une configuration de noyau Linux hautement optimisée et un système de fichiers racine léger intégré à vminitd, un système init minimal qui agit comme le processus initial au sein de la VM. vminitd offre une API GRPC via vsock pour configurer l'exécution et lancer les processus, garantissant une gestion efficace des E/S, des signaux et des événements.

Configuration requise

Pour créer et exécuter Containerization, vous aurez besoin d'un Mac Apple Silicon. Bien que les applications construites avec le paquet fonctionnent sous macOS 15 ou une version ultérieure, certaines fonctionnalités avancées, comme la mise en réseau de conteneurs non isolés, nécessitent macOS 16 bêta ou une version plus récente.

Premiers pas

La construction de Containerization nécessite macOS 15 ou plus récent avec Xcode 26 bêta (ou macOS 26 bêta+). Apple fournit des instructions claires pour configurer votre environnement :

  1. Installer Swiftly et Static Linux SDK : Utilisez make cross-prep.
  2. Construire le paquet : Exécutez simplement make all.
  3. Tester le paquet : Exécutez make test integration. Un noyau est requis pour les tests d'intégration ; vous pouvez en obtenir un par défaut en utilisant make fetch-default-kernel.
  4. Générer la documentation : Générez facilement la documentation API localement avec make docs et make serve-docs.

Le projet fournit également cctl (containerization control), un exécutable servant d'exemple pratique pour manipuler des images OCI, se connecter à des registres, créer des systèmes de fichiers racine et exécuter de simples conteneurs Linux.

Gestion du noyau

Containerization inclut une configuration de noyau Linux optimisée, garantissant un démarrage rapide et un environnement léger. Les développeurs peuvent compiler ce noyau ou utiliser des options préconstruites, comme celles du projet Kata Containers, à condition que les pilotes VIRTIO soient compilés dans le noyau.

Contributions et état du projet

Apple est ouverte aux contributions à Containerization. Le projet est en développement actif, actuellement en version 0.1.0, avec une stabilité de la source garantie au sein des versions mineures. Cela signifie que les développeurs peuvent l'intégrer en toute confiance dans leurs projets tout en restant à jour avec les améliorations futures.

Le projet Containerization d'Apple est un outil open source puissant et pratique, offrant aux utilisateurs de macOS un moyen efficace et natif d'exploiter la puissance des conteneurs Linux, en faisant un ajout inestimable à la boîte à outils de tout développeur.

Original Article: Voir l’original

Partager cet article