
Un "runc" open-source de nouvelle génération qui permet aux conteneurs rootless d'exécuter des charges de travail telles que Systemd, Docker, Kubernetes, tout comme des machines virtuelles.
Sysbox est un runtime de conteneurs open-source et gratuit (un « runc » spécialisé), initialement développé par Nestybox (acquis par Docker en 05/2022), qui améliore les conteneurs de deux manières clés :
Améliore l'isolation des conteneurs :
Espace de noms utilisateur Linux sur tous les conteneurs (c'est-à-dire que l'utilisateur root dans le conteneur n'a aucun privilège sur l'hôte).
Virtualise des parties de procfs et sysfs à l'intérieur du conteneur.
Masque les informations de l'hôte à l'intérieur du conteneur.
Verrouille les montages initiaux du conteneur, et plus encore.
Permet aux conteneurs d'exécuter les mêmes charges de travail que les VM :
Avec Sysbox, les conteneurs peuvent exécuter des logiciels de niveau système tels que systemd, Docker, Kubernetes, K3s, buildx (y compris les builds multi-architectures), des applications héritées, des applications multi-architectures, et plus encore, de manière transparente et sécurisée.
Ces logiciels peuvent s'exécuter dans les conteneurs Sysbox sans modification et sans utiliser de versions spéciales du logiciel (par exemple, des variantes rootless).
Pas de conteneurs privilégiés, pas d'images complexes, pas de points d'entrée compliqués, pas de montages de volumes spéciaux, etc.
Pensez à Sysbox comme à un « superchargeur de conteneurs » : il permet à vos gestionnaires de conteneurs / orchestrateurs existants (par exemple, Docker, Kubernetes, etc.) de déployer des conteneurs dotés d'une isolation renforcée et capables d'exécuter presque toutes les charges de travail qui s'exécutent dans des VM.
Sysbox fait cela en faisant ressembler le conteneur à un environnement de type VM autant que possible, grâce à des techniques avancées de virtualisation OS.
Contrairement aux runtimes alternatifs tels que Kata et KubeVirt, il n'utilise pas de VM. Cela le rend plus facile à utiliser (en particulier dans les environnements cloud en évitant la virtualisation imbriquée), bien qu'il n'offre pas le niveau d'isolation que fournissent les runtimes basés sur des VM. Voir ici pour une comparaison.
Il n'est pas nécessaire d'apprendre de nouveaux outils ou de modifier vos images de conteneurs ou vos flux de travail existants pour profiter de Sysbox. Il suffit de l'installer et de pointer votre gestionnaire de conteneurs / orchestrateurs vers lui pour déployer des conteneurs améliorés.
Sysbox peut coexister avec d'autres runtimes de conteneurs sur le même hôte (par exemple, le runc OCI par défaut, Kata, etc.). Vous pouvez facilement choisir quels conteneurs ou pods exécuter avec chacun, selon vos besoins.
Sysbox est un logiciel libre et open-source, sous licence Apache License, Version 2.0. Voir le fichier LICENSE pour plus de détails.
Sysbox a été initialement développé par Nestybox. Comme Nestybox fait désormais partie de Docker, Docker est le principal sponsor du projet Sysbox.
Cela dit, Sysbox est un projet communautaire open-source et n'est pas officiellement supporté par Docker (c'est-à-dire que les abonnements Docker n'incluent pas le support Sysbox). Le support est fourni au mieux possible via ce dépôt Github ou via le Sysbox Slack Workspace.
Nous encourageons la participation de la communauté pour faire évoluer et améliorer Sysbox, dans le but d'accroître les cas d'utilisation et les avantages qu'il procure. Les mainteneurs et contributeurs externes sont les bienvenus.
Sysbox résout des problèmes tels que :
Renforcer l'isolation des microservices conteneurisés (root dans le conteneur correspond à un utilisateur non privilégié sur l'hôte).
Permettre un utilisateur root très puissant à l'intérieur du conteneur sans compromettre la sécurité de l'hôte.
Sécuriser les pipelines CI/CD en permettant Docker-in-Docker (DinD) ou Kubernetes-in-Docker (KinD) sans conteneurs privilégiés non sécurisés ni montage du socket Docker de l'hôte.
Permettre l'utilisation de conteneurs comme environnements « type VM » pour le développement, les tests locaux, l'apprentissage, etc., avec une isolation solide et la capacité d'exécuter systemd, Docker, des IDE, et plus encore à l'intérieur du conteneur.
Exécuter des applications héritées dans des conteneurs (au lieu de VM moins efficaces).
Remplacer les VM par une alternative conteneurisée plus facile, plus rapide, plus efficace et plus portable, déployable facilement dans des environnements cloud.
Partitionner des hôtes bare-metal en plusieurs environnements de calcul isolés avec 2 fois la densité des VM (c'est-à-dire déployer deux fois plus de conteneurs de type VM que de VM sur le même matériel avec les mêmes performances).
Partitionner des instances cloud (par exemple, EC2, GCP, etc.) en plusieurs environnements de calcul isolés sans recourir à une virtualisation imbriquée coûteuse.
Sysbox s'installe facilement sur les hôtes Linux (bare-metal, VM, sur site, cloud, etc.). Il fonctionne sur tous les principaux services IaaS et Kubernetes basés sur le cloud (par exemple, EC2, GCP, GKE, EKS, AKS, Rancher, etc.)
Une fois installé, Sysbox opère en arrière-plan : vous utilisez Docker, Kubernetes, etc. pour déployer des conteneurs avec lui.
Par exemple, cette simple commande Docker crée un conteneur avec Sysbox :
$ docker run --runtime=sysbox-runc -it any_image
Vous obtenez un conteneur bien isolé, capable d'exécuter sans effort des microservices ainsi que des logiciels de niveau système qui s'exécutent normalement sur des VM (par exemple, systemd, Docker, Kubernetes, etc).
Plus d'informations sur l'utilisation de Sysbox ici.
Comme indiqué, Sysbox permet à des conteneurs non privilégiés d'exécuter des charges de travail de niveau système telles que systemd, Docker, Kubernetes, etc., de manière transparente, tout en offrant une approche équilibrée entre isolation des conteneurs, performances, efficacité et portabilité.
Et cela avec un minimum de changements de configuration dans votre infrastructure existante : installez simplement Sysbox et configurez votre gestionnaire/orchestrateur de conteneurs pour lancer des conteneurs avec lui, en utilisant l'image de votre choix.
Notez que bien que Sysbox renforce l'isolation des conteneurs standard et élimine le besoin de conteneurs privilégiés non sécurisés dans de nombreux scénarios, il n'offre pas (encore) le même niveau d'isolation que les alternatives basées sur des VM ou les OS en espace utilisateur comme gVisor. Par conséquent, pour les scénarios où le plus haut niveau d'isolation est requis, des alternatives telles que KubeVirt peuvent être préférables (au détriment de performances et d'efficacité réduites et d'une complexité et d'un coût plus élevés).
Voir ce billet de blog pour plus d'informations.
Le projet Sysbox s'adresse à toute personne souhaitant expérimenter, inventer, apprendre et construire des systèmes en utilisant des conteneurs système. C'est de la virtualisation OS de pointe, et les contributions sont les bienvenues.
Avant l'acquisition par Docker en 05/2022, Nestybox proposait Sysbox Enterprise comme version améliorée de Sysbox (par exemple, plus de sécurité, plus de charges de travail et un support officiel).
Après l'acquisition, Sysbox Enterprise n'est plus proposé en tant que produit autonome mais a été intégré à Docker Desktop (voir Docker Hardened Desktop).
REMARQUE : Sysbox Enterprise n'étant plus proposé en tant que produit autonome, Docker prévoit de rendre certaines fonctionnalités de Sysbox Enterprise disponibles dans Sysbox Community Edition. Les fonctionnalités restent à définir (TBD) et vos retours sont les bienvenus.
Le tableau ci-dessous résume les principales fonctionnalités du runtime de conteneurs Sysbox.
Il fournit également une comparaison entre Sysbox Community Edition (c'est-à-dire ce dépôt) et l'édition Sysbox Enterprise précédemment disponible (désormais dépréciée).
Plus d'informations sur les fonctionnalités de Sysbox ici.
Si vous avez des questions, vous pouvez nous joindre ici.
Nous appelons les conteneurs déployés par Sysbox des conteneurs système, pour souligner le fait qu'ils peuvent exécuter non seulement des microservices (comme le font les conteneurs classiques), mais aussi des logiciels système tels que Docker, Kubernetes, Systemd, des conteneurs internes, etc.
Plus d'informations sur les conteneurs système ici.
L'hôte Sysbox doit répondre aux exigences suivantes :
Il doit exécuter l'une des distributions Linux prises en charge et être une machine avec une architecture prise en charge (par exemple, amd64, arm64).
Nous recommandons un minimum de 4 CPU (par exemple, 2 cœurs avec 2 hyperthreads) et 4 Go de RAM. Bien que cela ne soit pas une exigence stricte, des configurations plus petites peuvent ralentir Sysbox.
La méthode d'installation dépend de l'environnement dans lequel Sysbox sera installé :
Pour installer Sysbox sur un cluster Kubernetes, utilisez le daemonset sysbox-deploy-k8s.
Sinon, utilisez le paquet Sysbox pour votre distribution.
Alternativement, si un paquet pour votre distribution n'est pas encore disponible, ou si vous souhaitez obtenir les derniers changements en amont, vous pouvez compiler et installer Sysbox à partir des sources.
Une fois Sysbox installé, vous créez un conteneur en utilisant votre gestionnaire de conteneurs ou orchestrateur (par exemple, Docker ou Kubernetes) et une image de votre choix.
Exemple de commande Docker :
$ docker run --runtime=sysbox-runc --rm -it --hostname my_cont registry.nestybox.com/nestybox/ubuntu-bionic-systemd-docker
root@my_cont:/#
Exemple de spécification de pod Kubernetes :
apiVersion: v1
kind: Pod
metadata:
name: ubu-bio-systemd-docker
annotations:
io.kubernetes.cri-o.userns-mode: "auto:size=65536"
spec:
runtimeClassName: sysbox-runc
containers:
- name: ubu-bio-systemd-docker
image: registry.nestybox.com/nestybox/ubuntu-bionic-systemd-docker
command: ["/sbin/init"]
restartPolicy: Never
Vous pouvez choisir l'image de conteneur que vous voulez, Sysbox n'impose aucune exigence sur l'image.
Nestybox met à disposition plusieurs images de référence dans ses dépôts Dockerhub et GitHub Container Registry. Ce sont des images qui incluent généralement systemd, Docker, Kubernetes, et plus encore à l'intérieur des conteneurs. Les Dockerfiles sont ici. N'hésitez pas à les utiliser et à les modifier selon vos besoins.
Nous nous efforçons de fournir une bonne documentation ; c'est un composant clé du projet Sysbox.
Nous avons plusieurs documents pour vous aider à démarrer et à tirer le meilleur parti de Sysbox.
Document de compatibilité des distributions Sysbox
Guide de démarrage rapide Sysbox
Sysbox est rapide et efficace, comme décrit dans ce billet de blog Nestybox.
Les conteneurs créés par Sysbox ont des performances similaires à ceux créés par l'OCI runc (le runtime par défaut pour Docker et Kubernetes).
Même les conteneurs déployés à l'intérieur des conteneurs système ont d'excellentes performances, bien qu'il y ait un léger surcoût pour les E/S réseau (comme prévu car les paquets émis par les conteneurs internes passent par une interface réseau / un pont supplémentaire à l'intérieur du conteneur système).
Maintenant, si vous utilisez Sysbox pour déployer des conteneurs système qui remplacent des VM, alors les gains de performance et d'efficacité sont significatifs : vous pouvez déployer 2 fois plus de conteneurs système que de VM sur le même serveur et obtenir les mêmes performances, et ce avec une fraction de la consommation de mémoire et de stockage. Le billet de blog mentionné ci-dessus en dit plus à ce sujet.
Sysbox a été fork de l'excellent OCI runc au début de 2019 et repose sur le travail effectué par les développeurs d'OCI runc.
Cela dit, Sysbox ajoute des fonctionnalités significatives par-dessus. Il est écrit en Go, et il est actuellement composé de trois composants : sysbox-runc, sysbox-fs, et sysbox-mgr.
Sysbox utilise de nombreuses fonctionnalités de virtualisation OS du noyau Linux et les complète par des techniques de virtualisation OS implémentées dans l'espace utilisateur. Cela inclut l'utilisation de tous les espaces de noms Linux (en particulier l'espace de noms utilisateur), la virtualisation partielle de procfs et sysfs, l'interception sélective des appels système, et plus encore.
Plus d'informations sur la conception de Sysbox peuvent être trouvées dans le Guide de l'utilisateur Sysbox.
Bien que les conteneurs générés par Sysbox ressemblent à des machines virtuelles à certains égards (par exemple, vous pouvez exécuter en tant que root, exécuter plusieurs services et déployer Docker et K8s à l'intérieur), Sysbox n'utilise pas de virtualisation matérielle.
Sysbox est une technologie pure de virtualisation OS destinée à créer des conteneurs qui peuvent exécuter des applications ainsi que des logiciels de niveau système, facilement et en toute sécurité.
Cela rend les conteneurs créés par Sysbox rapides, efficaces et portables (c'est-à-dire qu'ils ne sont pas liés à un hyperviseur).
En termes d'isolation, il est juste de dire que les conteneurs Sysbox offrent une isolation plus forte que les conteneurs Docker classiques (grâce à l'utilisation de l'espace de noms utilisateur Linux et d'un shim OS léger), mais une isolation plus faible que les VM (en partageant le noyau Linux entre les conteneurs).
Nous accueillons les contributions à Sysbox, qu'il s'agisse de petites modifications de documentation, de corrections de bugs ou d'ajouts de fonctionnalités. Veuillez consulter les directives de contribution et le guide du développeur pour plus d'informations.
Voir le chapitre Sécurité du Guide de l'utilisateur pour plus d'informations sur la façon dont Sysbox sécurise les conteneurs.
Si vous trouvez des bugs ou des problèmes qui pourraient exposer une vulnérabilité de Sysbox, veuillez les signaler en envoyant un courriel à [email protected]. Merci de ne pas ouvrir de problèmes de sécurité dans ce dépôt. Merci !
De plus, quelques vulnérabilités ont récemment été découvertes dans le noyau Linux qui, dans certains cas, réduisent ou annulent l'isolation renforcée fournie par les conteneurs Sysbox. Heureusement, elles sont toutes corrigées dans les noyaux Linux récents. Voir le chapitre Vulnérabilités et CVE du Guide de l'utilisateur Sysbox pour plus d'informations, et contactez-nous sur le canal Slack Sysbox pour toute question supplémentaire.
Le support est actuellement offert au mieux.
Si vous avez une question ou un commentaire, nous serions ravis de l'entendre. Vous pouvez nous joindre sur notre canal Slack ou déposer un problème sur ce dépôt GitHub.
Si vous repérez un problème avec Sysbox, veuillez rechercher dans les problèmes existants car ils peuvent décrire le problème et fournir une solution de contournement.
Consultez également le document de dépannage.
Avant de désinstaller Sysbox, assurez-vous que tous les conteneurs déployés avec lui sont arrêtés et supprimés.
La méthode de désinstallation dépend de la méthode utilisée pour installer Sysbox :
Pour désinstaller Sysbox sur un cluster Kubernetes, suivez ces instructions.
Sinon, pour désinstaller le paquet Sysbox, suivez ces instructions.
Si Sysbox a été compilé et installé à partir des sources, suivez ces instructions.
Voici une liste de fonctionnalités dans la feuille de route de Sysbox.
Nous les listons ici afin que nos utilisateurs puissent avoir une meilleure idée de la direction que nous prenons et puissent nous donner leur avis sur celles qu'ils préfèrent (ou pas).
Voici une liste courte ; le suivi des problèmes Sysbox en contient beaucoup d'autres.
Support de davantage de distributions Linux.
Encore plus d'améliorations de la virtualisation de procfs et sysfs.
Améliorations continues de l'isolation des conteneurs.
Exposition des périphériques hôtes à l'intérieur des conteneurs système avec les permissions appropriées.
Slack : Sysbox Slack Workspace
Courriel : [email protected]
Nous sommes disponibles du lundi au vendredi, de 9h à 17h (heure du Pacifique).
Nous vous remercions très sincèrement d'utiliser et/ou de contribuer à Sysbox. Nous espérons que vous le trouverez intéressant et qu'il vous aidera à utiliser les conteneurs de manière nouvelle et plus puissante.