A la demande d’un client, j’ai installé docker sur une image windows server 2016, elle même tournant sur une VMware.
Une machine virtuelle tournant dans une machine virtuelle, on arrête pas le progrès.
Tout ça pour “containeuriser” une vieille appli jboss.
]]>Petit retour en arrière.
Un processeur moyen gamme de 2015 est à peine 50% plus rapide qu’un processeur moyen gamme 2005.
La loi de Moore (cofondateur d’Intel) prédit que la puissance des CPUs double tous les 18 mois.
Manifestement ce n’est pas le cas.
Sur quoi a travaillé l’industrie des CPUs pendant 10 ans ?
Principalement 3 choses :
– passage du 32 au 64 bits
– l’accélération matérielle de la virtualisation
– moins de consommation électrique
Le développement du noyau linux a suivi le même chemin.
L’accélération matérielle c’est l’ajout des instructions VT-x et AMD-v.
Au niveau du noyau linux, ça crée un Ring -1 ou l’hyperviseur s’exécute.
Les noyaux invités restent en Ring 0.
Une autre façon de voir les choses est qu’avant, un seul noyau se partageait le matériel mais avec l’ajout des instructions matérielles d’accélération de la virtualisation, plusieurs noyaux peuvent être au même niveau et se partager les mêmes ressources matérielles.
Docker franchit une étape de plus dans le partage des ressources.
Au lieu d’avoir plusieurs noyaux côte à côte, pourquoi ne pas avoir un seul noyau mais “partitionné” ?
Matériellement ça ne demande pas de rajouter de nouvelles instructions d’accélération, mais ça demande une réécriture en profondeur du noyau linux.
Concrètement, les UID et GID sont uniques et ce sont les mêmes utilisés par le noyau hôte que dans les containers.
Avec un noyau partitionné, il y aura pour chaque container un tableau des UID et GID à part.
Ainsi on peut être root dans son container sans l’être sur l’hôte, ce qui est actuellement impossible.
Il y a cette notion de “namespace” chère aux développeurs.
Chaque container a son “namespace” qui l’isole totalement du reste, mais techniquement c’est très très compliqué à mettre en place.
Le futur développement du noyau linux c’est principalement la mise en place de ces “namespace” pour “partitionner” le noyau.
Le développement du noyau linux et de docker se feront en parallèle.
docker n’est que la 1ère implémentation du partitionnement du noyau et c’est un mouvement de fond qui prendra des années.
La tendance est à de plus en plus d’abstraction, de virtualisation et de séparation pour accroître la productivité, l’industrialisation et la spécialisation.
]]>Le truc qui me donne envie de voir ce que donne rails 5.
]]>Malgres le coté blague il file pas mal de piste qui donnent un peu le tournis.
Mais bon,
merci pour l’article
je dois toujours me bouger le cul pour l’article sur le crochet anal.
]]>ça s’appelle l’industrialisation de la production.
aucun domaine n’y échappe, surtout pas les domaines techniques.
]]>Encore une fois je le répète, je ne suis pas pro, j’imagine juste les possibilités offerte par la techno.
]]>J’ai vraiment l’impression qu’avec toutes ces couches, surcouches, et sur-surcouches, on ne maîtrise en fait plus rien, on empile et on espère que ça fonctionne parce qu’on délègue à des grosses boites qui centralisent toutes les compétences.
Il n’y a aucun doute que ça peut répondre à certains besoin, mais c’est comme avec Javascript, on se retrouve à empiler des trucs qui patchent un souci, puis un autre, et encore un autre, mais chaque patch génère un autre problème. Et on a l’impression d’évoluer ?
Là on tombe sur des devs qui vont lire un fichier de config, le réutiliser en le modifiant pour leur web app, sauf que derrière, que ce soit des containers ou pas, l’aspect sécurité est quasi ignoré dans tous les cas que je peux entendre. Donc on se retrouve avec une API qui gère des p*** de commentaires qui doit être déployée sur 20 pseudo machines, mais plus personne ne sait gérer les fondations d’un serveur et en assurer la sécu. Un clicodrome et 2 fichiers de config, et t’es un master chef de l’infra ? mélol
]]>