Container Linux
Container Linux (anciennement CoreOS Linux) était un système d'exploitation léger open source basé sur le noyau Linux et conçu pour fournir une infrastructure aux déploiements en cluster, tout en se concentrant sur l'automatisation, la facilité de déploiement des applications, la sécurité, la fiabilité et l'évolutivité. En tant que système d'exploitation, Container Linux ne fournit que les fonctionnalités minimales requises pour déployer des applications à l'intérieur de conteneurs logiciels, ainsi que des mécanismes intégrés pour la découverte de services et le partage de configuration.

Container Linux partage des fondations avec Gentoo Linux, Chrome OS et Chromium OS via un kit de développement logiciel commun (SDK). Container Linux ajoute de nouvelles fonctionnalités et personnalisations à cette fondation partagée pour prendre en charge du matériel et des cas d'utilisation supplémentaire . Début 2015, CoreOS est activement développé, principalement par Alex Polvi, Brandon Philips et Michael Marineau, avec ses principales fonctionnalités disponibles en version stable.

L'équipe CoreOS Linux a annoncé la fin de vie de Container Linux le 26 mai 2020, en proposant Fedora CoreOS et RHEL CoreOS comme remplaçants, tous deux basés sur Red Hat.

Aperçu 
Container Linux ne fournit aucun gestionnaire de packages comme moyen de distribuer des applications, exigeant à la place que toutes les applications s'exécutent à l'intérieur de leurs conteneurs. Servant d'hôte de contrôle unique, une instance Container Linux utilise les fonctionnalités de virtualisation sous-jacentes au niveau du système d'exploitation du noyau Linux pour créer et configurer plusieurs conteneurs qui fonctionnent comme des systèmes Linux isolés. De cette façon, le partitionnement des ressources entre les conteneurs est effectué via plusieurs instances d'espace utilisateur isolées, au lieu d'utiliser un hyperviseur et de fournir des machines virtuelles à part entière. Cette approche repose sur les fonctionnalités des cgroups et des espaces de noms du noyau Linux  qui fournissent, ensemble, des capacités pour limiter, prendre en compte et isoler l'utilisation des ressources ( CPU, mémoire, E / S disque, etc.) pour les collections de processus de l'espace utilisateur.

Initialement, Container Linux utilisait exclusivement Docker comme composant fournissant une couche supplémentaire d'abstraction et d'interface  aux fonctionnalités de virtualisation au niveau du système d'exploitation du noyau Linux, ainsi que de fournir un format standardisé pour les conteneurs qui permet aux applications de s'exécuter dans des environnements différents. En décembre 2014, CoreOS a publié et a commencé à prendre en charge rkt (initialement publié sous le nom de Rocket ) en tant qu'alternative à Docker, fournissant à travers lui un autre format standardisé des images de conteneur d'application, la définition de l'environnement d'exécution du conteneur et un protocole de découverte et de récupération des images de conteneurs. CoreOS fournit rkt comme une implémentation de la spécification dite du conteneur d'application (appc) qui décrit les propriétés requises de l' application container image (ACI); CoreOS a lancé appc et ACI sous la forme d'un ensemble de spécifications indépendantes pilotées par un comité  - comité indépendant des éditeurs de systèmes d'exploitation - visant à les intégrer à l'Open Container Initiative (OCI) ; initialement appelé Open Container Project ou OCP  ) 

Le standard de conteneurisation a été annoncé   en juin 2015.

Container Linux utilise des scripts ebuild de Gentoo Linux pour la compilation automatisée de ses composants système, et utilise systemd comme son système d'initialisation principal avec une intégration étroite entre systemd et divers mécanismes internes de Container Linux.

Infrastructure de cluster 

Container Linux fournit etcd, un daemon qui s'exécute sur tous les ordinateurs d'un cluster et fournit un registre de configuration dynamique, permettant de partager facilement et de manière fiable, diverses données de configuration entre les membres du cluster. Étant donné que les données de valeur-clé stockées dans   sont automatiquement distribuées et répliquées avec une élection maître automatisée et l'établissement d'un consensus à l'aide de l'algorithme Raft, toutes les modifications des données stockées sont reflétées sur l'ensemble du cluster, tandis que la redondance obtenue empêche les défaillances des membres du cluster de provoquer une perte de données. En plus de la gestion de la configuration,   fournit également la découverte de services en permettant aux applications déployées de s'annoncer et lister les services qu'elles offrent. La communication avec   est faite via une API REST exposée sur HTTP , qui communique en JSON; l'API peut être utilisée directement (via   ou  , par exemple), ou indirectement par  , qui est un utilitaire de ligne de commande spécialisé également fourni par CoreOS. Etcd est également utilisé dans le logiciel Kubernetes .

Container Linux fournit également  gestionnaire de cluster qui contrôle les instances systemd distinctes de Container Linux. Depuis 2017,  n'est plus activement développée et est déconseillée au profit de Kubernetes. En utilisant  , Container Linux crée un système d'initialisation distribué qui relie des instances systemd distinctes à un  à l’échelle du déploiement ; en interne,   démon communique avec le  local à travers le D-Bus, et avec le  du déploiement via l'API exposée par le . L'utilisation de   permet le déploiement d'un ou de plusieurs conteneurs à l'échelle du cluster, avec des options plus avancées, notamment la redondance, le basculement, le déploiement sur des membres de cluster spécifiques, les dépendances entre les conteneurs et le déploiement groupé de conteneurs. Un utilitaire de ligne de commande appelé   est utilisé pour configurer et surveiller ce système d'initialisation distribué; en interne, il communique avec le  daemon en utilisant une API basée sur JSON sur de l'HTTP, cette API peut également être utilisée directement. Lorsqu'il est utilisé en local sur un membre du cluster,   communique avec l'instance locale du  sur un socket de domaine Unix ; lorsqu'il est utilisé à distance, le tunneling SSH est utilisé avec une authentification fournie via des clés SSH publiques.

Tous les daemons et utilitaires de ligne de commande mentionnés ci-dessus (  ,  ,   et   ) sont écrits en Go et distribués sous les termes de la licence Apache 2.0.

Déploiement 
Lorsqu'il s'exécute sur du matériel dédié, Container Linux peut être installé de manière permanente sur le stockage local, tel qu'un disque dur (HDD) ou un disque SSD  ou démarré à distance sur un réseau à l' aide de Preboot Execution Environment (PXE) ) en général, ou iPXE comme l'une des implémentations du PXE. CoreOS prend également en charge les déploiements sur diverses plates-formes de virtualisation, notamment Amazon EC2, DigitalOcean, Google Compute Engine, Microsoft Azure, OpenStack, QEMU / KVM, Vagrant et VMware. Container Linux peut également être installé sur Citrix XenServer, notant qu'il existe un "modèle" pour CoreOS.

Container Linux peut également être déployé via sa distribution commerciale appelée Tectonic, qui s'intègre avec Kubernetes de Google en tant qu'utilitaire de gestion de cluster. Avril 2015, Tectonic a été proposé en tant que logiciel bêta pour une sélection de clients. De plus, CoreOS fournit Flannel en tant que composant implémentant un réseau de superposition requis principalement pour l'intégration avec Kubernetes.

Technologies 
 Kubernetes (K8s) est un système open source permettant d’automatiser le déploiement, la mise à l’échelle et la gestion des applications conteneurisées.

 Docker est une surcouche qui simplifie le développement et le déploiement des conteneurs tout en les standardisant.

 OpenShift est une plateforme de conteneurs d’applications libres, utilisant principalement Docker et Kubernetes, qui est chargé du démarrage et du «  » des conteneurs.

Dérivés 
À la suite de son acquisition de CoreOS, Inc.  en janvier 2018, Red Hat a annoncé  qu'il fusionnerait CoreOS Container Linux avec le projet Atomic de Red Hat, pour créer un nouveau système d'exploitation, Red Hat CoreOS, tout en alignant la communauté open source de Fedora Project autour de Fedora CoreOS, combinant les technologies des deux prédécesseurs.

Un fork open-source de CoreOS a donné lieu à la formation du projet Flatcar-linux.

Accueil 
LWN.net a examiné CoreOS en 2014:

Voir également 

 Application virtualization software technology that encapsulates application software from the operating system on which it is executed
 Comparison of application virtualization software various portable and scripting language virtual machines
 Comparison of platform virtualization software various emulators and hypervisors, which emulate the whole physical computers
 LXC (Linux Containers) – an environment for running multiple isolated Linux systems (containers) on a single Linux control host
 Operating-system-level virtualization implementations based on operating system kernel's support for multiple isolated userspace instances
 Software as a service  (SaaS) – a software licensing and delivery model that hosts the software centrally and licenses it on a subscription basis
 Virtualization a general concept of providing virtual versions of computer hardware platforms, operating systems, storage devices, etc.

Références

Liens externes 

 CoreOS at DistroW
 First glimpse at CoreOS, September 3, 2013, by Sébastien Han
 CoreOS: Linux for the cloud and the datacenter, ZDNet, July 2, 2014, by Steven J. Vaughan-Nichols
 What's CoreOS? An existential threat to Linux vendors, InfoWorld, October 9, 2014, by Matt Asay
 Understanding CoreOS distributed architecture, March 4, 2015, a talk to Alex Polvi by Aaron Delp and Brian Gracely
 CoreOS fleet architecture, August 26, 2014, by Brian Waldon et al.
 Running CoreOS on Google Compute Engine, May 23, 2014
 CoreOS moves from Btrfs to Ext4 + OverlayFS, Phoronix, January 18, 2015, by Michael Larabel
 Containers and persistent data, LWN.net, May 28, 2015, by Josh Berkus

Logiciel libre sous licence Apache
Pages avec des traductions non relues