À l’image des diverses distributions Linux pour serveurs et postes de travail, celles qui sont orientées conteneurs combinent différents projets et composants pour construire une infrastructure complète. En général, ces distributions regroupent un kernel de système d'exploitation minimal, un framework d'orchestration et un écosystème de services de conteneurs. En l’espèce, RancherOS ne fait pas autre chose, sauf qu’il porte le paradigme minimaliste du noyau et du conteneur à l'extrême. RancherOS fait tourner Docker directement sur un noyau Linux réduit (20 Mo). Son approche est unique dans le sens où le processus d'initialisation est pris en charge par un service « dockerisé ». De même, les services généralement gérés au niveau du système, comme NTP et DNS, ont été remplacés par des équivalents conteneurisés.
En production, ces systèmes d'exploitation réduits au minimum présentent plusieurs avantages. La suppression des paquets et des bibliothèques inutiles permet un démarrage plus rapide, une gestion plus simple des versions et une surface d'attaque plus petite, autrement dit moins de patchs de sécurité. RancherOS apporte une autre solution à la question des « mises à jour » et distribue tous les services système en tant que conteneurs Docker. Pour effectuer une mise à jour de sécurité, il suffit de télécharger une nouvelle image et redémarrer le conteneur. Le processus ne nécessite que quelques secondes et il se fait sans interruption de service. Un développeur formé traditionnellement à Unix aura du mal à reconnaître l'OS. Ce dernier n’a en effet conservé qu’un petit sous-ensemble du noyau, tout le reste étant exécuté dans les conteneurs. Mais, le développeur familier de Docker se sentira très à l’aise avec RancherOS.
RancherOS ne prend en charge que root et rancher
Pour comprendre la conception de RancherOS, il faut rappeler que les systèmes Unix traditionnels sont rarement configurés, la couche applicative étant superposée à une image de base stable. Dans une infrastructure de conteneur, le système d'exploitation est, dans un sens, jetable et il a plus de chance d’être remplacé régulièrement. Même si l’on peut utiliser des outils comme Ansible, SaltStack, Puppet ou Chef pour configurer et entretenir des serveurs de conteneurs, il est plus facile d'utiliser la même API pour le système d'exploitation, comme on le fait pour les conteneurs, et lancer une nouvelle instance système pour fonctionner à l'échelle. Ainsi, pour exécuter Docker et héberger les agents de plates-formes de gestion de conteneurs comme Rancher ou Kubernetes, RancherOS ne conserve que l'essentiel. En fait, RancherOS est tellement réduit qu’il ne prend en charge que deux utilisateurs : root et rancher.
Rien de tel qu’une illustration pour comprendre cette architecture système.
RancherOS a été conteneurisé au point que le processus d'initialisation lui-même, PID 1, qui permet de mettre en route tous les autres processus, est un daemon Docker. Cela peut paraître un détail, mais le remplacement du système d'initialisation traditionnel Sysvinit ou Systemd par un processus d'initialisation « dockerisé » est l’une des principales caractéristiques de RancherOS, car il permet d’éviter proprement certaines incompatibilités entre les architectures de Systemd et de Docker. Même si les développeurs de Systemd continuent d’apporter des solutions à ces incompatibilités, l’approche de RancherOS élimine, au prix de quelques aménagements dans la manière de gérer les choses, tout type de problèmes, pour aujourd’hui et pour plus tard.