Utilisateur:Jujij/Brouillon
- → N'hésitez pas à publier sur le brouillon un texte inachevé et à le modifier autant que vous le souhaitez.
- → Pour enregistrer vos modifications au brouillon, il est nécessaire de cliquer sur le bouton bleu : « Publier les modifications ». Il n'y a pas d'enregistrement automatique.
Si votre but est de publier un nouvel article, votre brouillon doit respecter les points suivants :
- Respectez le droit d'auteur en créant un texte spécialement pour Wikipédia en français (pas de copier-coller venu d'ailleurs).
- Indiquez les éléments démontrant la notoriété du sujet (aide).
- Liez chaque fait présenté à une source de qualité (quelles sources – comment les insérer).
- Utilisez un ton neutre, qui ne soit ni orienté ni publicitaire (aide).
- Veillez également à structurer votre article, de manière à ce qu'il soit conforme aux autres pages de l'encyclopédie (structurer – mettre en page).
- → Si ces points sont respectés, pour transformer votre brouillon en article, utilisez le bouton « publier le brouillon » en haut à droite. Votre brouillon sera alors transféré dans l'espace encyclopédique.
Conteneurisation
modifierLa Conteneurisation, ou virtualisation au niveau du système d'exploitation fait référence à un paradigme de système d'exploitation dans lequel le noyau permet l'existence de multiples instances d'espace utilisateur isolées. De telles instances, nommées conteneurs (Solaris, Docker), Zones (Solaris), serveurs privés virtuels (OpenVZ), partitions, environnement virtuels (VEs), noyaux virtuels (DragonFly BSD) ou jails (FreeBSD jail ou chroot jail [1], peuvent ressembler à de vrais ordinateurs du point de vue des programmes tournant sur ceux-ci. Un programme informatique fonctionnant sur un système d'exploitation ordinaire peut voir toutes les ressources (périphériques connectés, fichiers et dossiers, partages de connexion, puissance CPU, capacités matérielles quantifiables) de cet ordinateur. Les programmes fonctionnant à l'intérieur d'un conteneur, eux, ne peuvent voir que le contenu de ce conteneur ainsi que les périphériques qui lui sont affectés.
Sur des systèmes d'exploitation de type Unix, cette fonctionnalité peut être vue comme une implémentation avancée du mécanisme chroot standard, qui modifie le répertoire racine apparent pour le processus en cours et ses enfants. En plus de ces mécanismes d'isolation, le noyau fournit souvent des fonctionnalités de gestion des ressources pour limiter l'impact de l'activité d'un conteneur sur les autres conteneurs.
Le terme "conteneur", bien que faisant souvent référence à la virtualisation au niveau du système d'exploitation, est parfois utilisé de manière ambiguë pour désigner des environnement de machines virtuelles plus complets fonctionnant à des degrés divers de concert avec l'OS hôte, par exemple, les "Conteneurs Hyper-V" de Microsoft.
Fonctionnement
modifierSur les systèmes d'exploitation ordinaires des ordinateurs personnels, un programme informatique peut voir (même dans le cas ou il n'est pas capable d'y accéder) toutes les ressources du système, c'est-à-dire :
- Les capacités matérielles qui peuvent être utilisées, comme le processeur ou la connexion réseau ;
- Les données pouvant être lues ou écrites, tels que les fichiers, dossiers et partages de connexion ;
- Les périphériques connectés avec lesquels il lui est possible d’interagir, tels que la webcam, l'imprimante, le scanner ou le fax.
Le système d'exploitation peut être en mesure d'autoriser ou d'interdire l'accès à ces ressources, en fonction du programme qui en fait la requête et du compte utilisateur dans le contexte duquel il fonctionne. Il peut également être en mesure de masquer ces ressources, de sorte que lorsque le programme informatique les énumère, elles n'apparaissent pas dans les résultats du recensement. Néanmoins, d'un point de vue de programmation le programme informatique a interagi avec ces ressources et l'OS a géré un acte d'interaction.
Avec la conteneurisation, il est possible d’exécuter des programmes dans des conteneurs auxquels seulement une partie de ces ressources est allouée. Un programme exécuté dans un conteneur s'attendant à voir l'ordinateur au complet ne pourra seulement voir les ressources qui lui auront été allouées et croira qu'elles sont tout ce qui est disponible. Plusieurs conteneurs peuvent être crées sur un système d'exploitation et chacun d'entre eux se verra alloué un sous-ensemble des ressources de l'ordinateur. Chaque conteneur peut contenir un nombre quelconque de programmes. Ces programmes peuvent être exécutés simultanément ou séparément et peuvent également interagir les un avec les autres.
La conteneurisation a des similitudes avec la virtualisation d'application : dans cette dernière, un seul programme informatique est placé dans un conteneur isolé et l'isolation s'applique uniquement aux systèmes de fichier.
Usages
modifierLa conteneurisation est communément utilisée dans les environnements d'hébergement virtuel, ou il est très utile pour des questions de sécurité d'allouer des ressources matérielles limitées entre un grand nombre d'utilisateurs qui ne se font pas confiance. Les administrateurs systèmes peuvent aussi en avoir l'usage pour consolider le matériel d'un serveur en déplaçant des services sur des hôtes séparés situés dans plusieurs conteneurs sur le même serveur.
D'autres scénarios typiques incluent la séparation de programmes pour séparer les conteneurs pour une sécurité améliorée, une indépendance matérielle et l'ajout de fonctionnalités de gestion des ressources. L'amélioration de la sécurité apportée par l'utilisation d'un mécanisme chroot est cependant loin d'être à toute épreuve[2]. Des implémentations de conteneurisation capable de réaliser des migrations en temps réel, ou live migration peuvent être utilisées pour l'équilibrage dynamique de la charge des conteneurs entre les nœuds d'une grappe de serveurs.
Surcoût
modifierLa conteneurisation impose habituellement moins de surcoût (en terme de ressource) que la virtualisation complète, car les programmes dans les partitions virtuelles utilisent l'interface d'appel système normale du système d'exploitation et n'ont donc pas besoin d'être soumis à une émulation ou exécutés sur une machine virtuelle intermédiaire comme c'est le cas pour la virtualisation complète ( VMware ESXI, QEMU ou Hyper-V) et pour la paravirtualisation (Xen, User Mode Linux). Cette forme de virtualisation ne nécessite pas non plus de support matériel pour une performance efficace.
Flexibilité
modifierLa conteneurisation n'est pas aussi flexible que les autres approches de virtualisation car elle ne permet pas l'hébergement d'un système d'exploitation ou noyau invités différents de ceux de l'hôte. Dans le cas de Linux, il est possible d'héberger une distribution différente de celle de l'hôte, mais pas d'autres systèmes d'exploitation tels que Windows.
Solaris surmonte partiellement cette limitation grâce à sa fonction de zones de marque, qui permet ou d’exécuter un environnement dans un conteneur qui émulerait une version plus vielle de Solaris (Solaris 8 ou 9) sur un hôte avec la version 10. Les zones de marques de Linux (appelées zones de marque "lx") sont également disponibles sur les systèmes Solaris basés sur x86, fournissant ainsi un espace utilisateur Linux ainsi qu'un support pour l'exécution d'applications Linux. En outre, Solaris fournit les utilitaires nécessaires à l'installation des distributions Linux Red Hat Entreprise Linux 3.x ou CentOs 3.x dans les zones "lx"[3][4]. Cependant, en 2010 les zones de marques Linux furent retirées de Solaris ; elles seront réintroduites en 2014 dans Illumos, la version open source de Solaris supportant les noyaux Linux 32 bits[5].
Stockage
modifierCertaines implémentations fournissent des mécanismes de copie sur écriture, ou copy-on-write (CoW) au niveau du fichier. Le plus souvent, un système de fichier standard est partagé entre les partitions et celles qui changes les fichiers créent automatiquement leurs propres copies. Ce mécanisme rend les sauvegardes plus simples, est plus efficace en terme d'espace et plus facile à mettre en cache que les schémas de copy-on-write au niveau de blocs, communs sur les virtualisations de systèmes entiers. Toutefois, ces dernières permettent de travailler avec des systèmes de fichier non natifs et de et créer et annuler des instantanés de l'état complet du système.
Implémentations
modifierMécanisme | Système d'exploitation | Licence | Disponible depuis ou entre | Fonctionnalités | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Isolement du système de fichier | Copy-on-write | Quotas de disque | Limitation de débit I/O | Limites mémoire | Quotas de processeur | Isolement du réseau | Virtualisation imbriquée | Checkpoint de partition et live migration | Isolement du root privilège | ||||
vkernel | DragonFly BSD | Licence BSD | 2006[6] | Oui[7] | Oui | N/A | ? | Oui[8] | Oui[8] | Oui[9] | ? | ? | Oui |
systemd-nspawn | Linux | GNU LGPLv2.1+ | 2010 | Oui | Oui | Oui[10][11] | Oui[10][11] | Oui[10][11] | Oui[10][11] | Oui | ? | ? | Oui |
RKT | Linux | Licence Apache 2.0 | 2014[12] | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
chroot | La plupart des OS de type Unix | Varie selon l'OS | 1982 | Partiel | Non | Non | Non | Non | Non | Non | Oui | Non | Non |
Linux-VServer (contexte de sécurité) | Linux, Windows Server 2016 | GNU GPLv2 | 2001 | Oui | Oui | Oui | Oui | Oui | Oui | Partiel | ? | Non | Partiel |
Imctfy | Linux | Licence Apache 2.0 | 2015 | Oui | Oui | Oui | Oui | Oui | Oui | Partiel | ? | Non | Partiel |
Singularity | Linux | Licence BSD | 2015[13] | Oui | Oui | Oui | Non | Non | Non | Non | Non | Non | Oui[14] |
sysjail | OpenBSD, NetBSD | Licence BSD | 2006-2009 | Oui | Non | Non | Non | Non | Non | Oui | Non | Non | ? |
iCore Virtual Accounts | Windows XP | Freeware | 2008 | Oui | Non | Oui | Non | Non | Non | Non | ? | Non | ? |
Sandboxie | Windows | Trialware | 2004 | Oui | Oui | Partiel | Non | Non | Non | Non | Non | Oui | |
Turbo | Windows | Freemium | 2012 | Oui | Non | Non | Non | Non | Non | Non | Non | Oui | |
Docker | Linux[15], FreeBSD[16], Windows x64 (Pro, Entreprise et Éducation)[17], macOs[18] | Licence Apache 2.0 | 2013 | Oui | Oui | Pas directement | Oui (depuis la version 1.10) | Oui | Oui | Oui | Oui | Seulement en mode expérimental avec CRIU[19] | Oui (depuis la version 1.10) |
Solaris Containers | Illumos (OpenSolaris), Solaris | CDDL, propriétaire | 2004 | Oui | Oui | Oui | Partiel | Oui | Oui | Oui | Partiel | Partiel | Oui |
FreeBSD jail | FreeBSD, DragonFlyBSD | Licence BSD | 2000[20] | Oui | Oui | Oui | Oui | Oui[21] | Oui | Oui | Oui | Partiel | Oui |
LXC | Linux | GNU GPLv2 | 2008 | Oui[22] | Oui | Partiel | Partiel | Oui | Oui | Oui | Oui | Oui | Oui[22] |
OpenVZ | Linux | GNU GPLv2 | 2005 | Oui | Oui[23] | Oui | Oui | Oui | Oui | Oui | Partiel | Oui | Oui |
Virtuozzo | Linux, Windows | Trialware | 2000 | Oui | Oui | Oui | Oui | Oui | Oui | Oui | Partiel | Oui | Oui |
WPARs | AIX | 2007 | Oui | Non | Oui | Oui | Oui | Oui | Oui[24] | Non | Oui[25] | ? |
Voir aussi
modifierNotes
modifierRéférences
modifier
- (en) Scott Hogg, « Software Containers: Used More Frequently than Most Realize », sur Network World, (consulté le )
- (en) Yanek Korff, Paco Hope et Bruce Potter, Mastering FreeBSD and OpenBSD Security, "O'Reilly Media, Inc.", (ISBN 9780596006266, lire en ligne)
- « Chapter 16 Introduction to Solaris Zones (System Administration Guide: Oracle Solaris Containers-Resource Management and Oracle Solaris Zones) », sur docs.oracle.com (consulté le )
- « Chapter 31 About Branded Zones and the Linux Branded Zone (System Administration Guide: Oracle Solaris Containers-Resource Management and Oracle Solaris Zones) », sur docs.oracle.com (consulté le )
- bcantrill, « The dream is alive! Running Linux containers on an illumos kernel », {{Article}} : paramètre «
périodique
» manquant, (lire en ligne, consulté le ) - « Super User's BSD Cross Reference: /DragonFly/sys/sys/vkernel.h », sur bxr.su (consulté le )
- « DragonFly On-Line Manual Pages : vkd(4) », sur www.dragonflybsd.org (consulté le )
- « Super User's BSD Cross Reference: /DragonFly/share/man/man7/vkernel.7 », sur bxr.su (consulté le )
- « DragonFly On-Line Manual Pages : vke(4) », sur www.dragonflybsd.org (consulté le )
- « systemd-nspawn », sur www.freedesktop.org (consulté le )
- (en) « 2.3. Modifying Control Groups Red Hat Enterprise Linux 7 », sur Red Hat Customer Portal (consulté le )
- « CoreOS is building a container runtime, rkt | CoreOS », sur coreos.com (consulté le )
- « Sylabs Brings Singularity Containers into Commercial HPC | TOP500 Supercomputer Sites », sur www.top500.org (consulté le )
- (en) Gregory M. Kurtzer, Vanessa Sochat et Michael W. Bauer, « Singularity: Scientific containers for mobility of compute », PLOS ONE, vol. 12, no 5, , e0177459 (ISSN 1932-6203, DOI 10.1371/journal.pone.0177459, lire en ligne, consulté le )
- « Docker drops LXC as default execution environment », sur InfoQ (consulté le )
- (en-US) Jesse, « Docker comes to FreeBSD », sur FreeBSDNews.com, (consulté le )
- (en) « Get started with Docker for Windows », sur Docker Documentation, (consulté le )
- (en) « Get started with Docker Desktop for Mac », sur Docker Documentation, (consulté le )
- « Docker - CRIU », sur criu.org (consulté le )
- (en-US) « Contain your enthusiasm - Part Two: Jails, Zones, OpenVZ, and LXC », sur Cybera, (consulté le )
- « Hierarchical_Resource_Limits - FreeBSD Wiki », sur wiki.freebsd.org (consulté le )
- (en-US) « LXC 1.0: Security features [6/10] | Stéphane Graber's website » (consulté le )
- « Comparison - OpenVZ Virtuozzo Containers Wiki », sur wiki.openvz.org (consulté le )
- (en-US) « IBM Fix pack information for: WPAR Network Isolation », sur www.ibm.com, (consulté le )
- (en) « Live Application Mobility in AIX 6.1 », sur www.ibm.com, (consulté le )