Une image Docker n’a pas besoin d’embarquer un OS, comme on le ferait avec une image virtuelle. Elle a simplement besoin des interfaces qui lui permettront d’exploiter la couche OS système placée en dessous d’elle, qui peut être aujourd’hui Linux ou Windows. Mais dans ce contexte, l’OS n’a pas besoin d’embarquer des fonctionnalités inutiles, qui ne lui serviraient à rien. Ce qui a donné lieu à une nouvelle famille d’outils, Nano Server chez Microsoft et maintenant RancherOS, une version Linux réduite au maximum, totalement dédiée aux containers Linux.

Symbole d’une tendance

RancherOS est une plate-forme minimale, de moins de 20 MB d’empreinte disque, conçue pour supporter des images Docker dans laquelle tout ou presque a été « dockerisé », y compris le process d’initialisation. Il ne lui reste donc qu’un minimum de fonctions traditionnelles accessibles en tant qu’OS et la plupart des services deviennent aussi des images Docker. C’est en tout cas ce qu’il faut comprendre de cette nouvelle mouture de Linux, qui certes limite les dépendances par rapport à Rancher Labs, une jeune compagnie créée en 2014, aux seuls RancherOS et outil d’administration de plates-formes Docker (on peut aussi en utiliser d’autres), mais qui en introduit une nouvelle par rapport à Docker lui-même. Docker, qui, on le rappelle, reste une « « petite » structure de 250 personnes, au sujet de laquelle beaucoup d’observateurs se posent des questions quant à sa pérennité réelle.

En termes de plates-formes, RancherOS est destiné aussi bien à des environnements « bare-metal », qu’à des machines virtuelles locales ou hébergées dans les Clouds, tels qu’AWS et Google.

Garantie de compatibilité

Comme le fait remarquer Rancher Labs, le fait de réduire l’empreinte système de RancherOS à sa plus simple expression, a des conséquences directes sur la compatibilité avec les autres environnements. Ainsi, le process d’initialisation de l’OS, qui est traditionnellement SysVinit ou Systemd, le PID, est ici lui-même un démon Docker. Ce qui contribue à gommer certaines incompatibilités entre Systemd et Docker, par exemple. Systemd, on le rappelle ayant été spécifiquement conçu pour remplacer l’autre mécanisme d’initialisation Systemd, plus ancien et moins pertinent dans la gestion des dépendances entre services, en termes de parallélisation des services de démarrage et de réduction des appels aux scripts shell. Avec RancherOS, ces routines disparaissent au profit d’une image Docker spécifique.

En fait, RancherOS ne fait fonctionner que deux démons, le Docker System et le Docker utilisateur. Le premier traite toutes les commandes système habituelles lancées depuis la console, DHCP, NTP, network, udev, syslog, ocptd, alors que le second concerne les applications proprement dites des utilisateurs. De cette manière, lancer, arrêter et surtout mettre à jour un service système, se fera de la même manière qu’avec une image Docker.

Et si vous voulez passer par un shell spécifique, là encore vous n’aurez qu’à lancer le container correspondant. Vous aurez même le choix entre ceux d’Ubuntu, Fedora, Debian, CentOS, Alpine, BusyBox étant la solution par défaut.

Quant à la mise à jour d’un service, il vous suffira d’arrêter l’ancien, d’acheminer le nouveau en allant le chercher là où il se trouve et de le redémarrer. Nous connaissons quelques administrateurs système à qui cette disposition va faire grand plaisir…

Le fait aussi de distinguer les containers systèmes de ceux dédiés aux applications, protège la plate-forme contre une commande hasardeuse ou volontairement destructrice. Telle que la suppression de comptes clients, qui n’aura donc pas de conséquences sur le démon système.

Avec RancherOS, tout est dockerisé, y compris le processus d’initialisation qui est une image Docker. Dans l’architecture conçue par Rancher Labs, il n’y a que deux démons : l’un pour les fonctions systèmes, qui sont des images Docker et l’autre pour les applications clientes.

 

Installation très simple

Pour ce qui est de la « complexité » de l’installation, même un débutant saura s’en sortir, à condition de savoir ce qu’est une partition disque et de pouvoir redémarrer la machine…

Ceux qui n’aiment pas entrer dans le fichier /etc/rc, vont être contents : il n’existe plus…

L’installation de RancherOS pourra se faire de deux manières, soit manuellement en bootant depuis une image ISO RancherOS, puis en lançant la commande ros install, soit en partant d’un fichier de Cloud YAML cloud-config.yml qui contiendra vos clés SSH. La même commande ros install traitera le fichier YAML, qu’elle copiera dans votre répertoire /var/lib/rancher/conf, ce fichier étant ensuite évalué à chaque démarrage.

On ne va évidemment pas entrer ici dans le détail des procédures d’administration, notre objectif étant simplement de rappeler qu’elles sont en général très simples et ne nécessitent pas des compétences hors « du temps ». Vous aurez largement le temps de vous y habituer : snapshots d’images vers S3 d’Amazon par exemple, backups, configuration réseau avec YAML ou les ros command.

Mais pour en savoir plus, rien ne remplacera l’étude de la documentation Rancher Labs (ici), qui n’est pourtant pas la meilleure du monde. On peut supposer que va s’améliorer.

De toute façon, si vous êtes familiarisés avec les procédures Docker, il ne vous faudra que quelques heures pour vous habituer au nouvel environnement.

Cela dit, RancherOS n’est pas un Linux normal et ne peut être réduit à une simple nouvelle version. Nous pensons qu’il constitue au contraire la concrétisation d’une véritable tendance qui consiste à transférer des fonctions historiques et natives de l’OS vers un autre environnement, ici en l’occurrence Docker.