Conteneur sans OS ?

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

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.

http://nodraak.fr/ – Dictateur bienveillant de l'iTeam, logiciel libre et sécurité à l'ECE Paris

+0 -0

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.

+1 -0
Auteur du sujet

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

Cette réponse a aidé l'auteur du sujet

un container Docker, à l'opposé de machines virtuelles traditionnelles, ne requiert aucun système d'exploitation séparé et n'en fournit aucun

Wikipedia : Docker

Je suppose donc que ça correspond plutôt bien à ce que tu cherches. Par contre, vu que je ne l'ai jamais utilisé, je ne pourrai pas beaucoup plus t'aider.

+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.

Édité par Au

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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