Conteneur sans OS ?

a marqué ce sujet comme résolu.

Bonjour,

J'ai un peu regardé Docker, et je me demandais si un conteneur, ou plus exactement une image, se basait nécessairement sur un OS, ou s'il était possible d'avoir une image ne représentant qu'un programme particulier (genre Node.js).

Dans le premier cas, un conteneur est en fait une machine virtuelle à quelques détails près (légèreté, système d'héritage des images, etc.), non ? Dans le cas contraire, comment le conteneur peut-il s'exécuter ? Se base-t-il sur l'OS de l'utilisateur ?

Merci.

+0 -0

Je ne suis pas un expert en virtualisation, mais je dirais qu'il faut forcement un OS hôte. Sinon ce n'est plus de la virtualisation. L'interêt de la virtualisation (entre autres) est de pouvoir lancer plusieurs systèmes indépendament, il faut donc un système de base pour gérer tout ce petit monde (gérer la mêmoire ou des I/O).

Concernant Docker (enfin tous les conteneur en fait, donc LXC et compagnie), leur particularité est de se baser sur un OS existant et de n'embarquer que la différence, ce qui leur permet d'être ultra léger.

Un programme tel que node.js se base forcément sur un OS. Dès qu'il veux faire des actions non basiques (I/O notamment), il doit faire appel à l'OS pour réaliser l'opération. Donc si tu as un sorte de conteneur qui ne contient que node.js et pas d'OS, le seul moyen de fonctionner est que l'OS qui est utilisé est celui de base. On est alors plus dans quelque chose qui ressemble à du sandboxing que à de la virtualisation.

Je dois cependant faire remarquer qu'il existe aussi des programmes (surtout dans l'embarqué) qui pour certaines raisons sont amenés à s'exécuter sans OS. C'est alors à eux de gérer toute l'abstraction que donne normalement une OS (drivers, file system, mémoire virtuelle et autres trucs sympas). Par contre, je ne pense pas que ça s'applique vraiment à ton cas.

Donc si tu as un sorte de conteneur qui ne contient que node.js et pas d'OS, le seul moyen de fonctionner est que l'OS qui est utilisé est celui de base. On est alors plus dans quelque chose qui ressemble à du sandboxing que à de la virtualisation.

Docker permet de faire ça ? L'idée est en fait d'avoir les dépendances nécessaires à un programme, mais sans les installer directement sur mon système, seulement dans un conteneur Docker, qui ne contiendrait que lesdites dépendances, lesquelles utiliseraient mon OS pour fonctionner. J'ignore si ç'a du sens.

Par exemple, pourrais-je avoir un conteneur (ou plutôt, une image) ZdS, mais qui n'embarquerait pas Debian, ni aucun autre OS, seulement Django et compagnie ?

+0 -0

Vayel, peut-être que ceci t'intéressera : https://en.wikipedia.org/wiki/Unikernel

L'idée est de faire une petite image, une image étant le kernel+application. le "kernel" est en fait composé uniquement de ce dont l'application a besoin. Cette image doit être exécutable avec un hyperviseur type Xen.

Mais il ne s'agit pas de Linux ou de quoique ce soit d'autre, l'idée c'est vraiment un petit kernel/application, c'est indissociable.

Mais pour le faire avec ZdS c'est un peu mort, à moins de le réécrire en tant qu'unikernel.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte