Cet article fait partie de notre guide: Conteneurs : tout savoir sur Docker & Co

Conteneurs Linux et Conteneurs Docker : quelle(s) différence(s) ?

Les conteneurs Linux existent depuis un moment déjà. En quoi cette technologie diffère-t-elle de la conteneurisation des applications que proposent des acteurs comme Docker ? Réponse.

L'incidence de la virtualisation sur l'informatique moderne est profonde. Elle permet aux entreprises d'améliorer considérablement la rentabilité et la flexibilité des ressources informatiques.

Pourquoi des conteneurs plutôt que des VM ?

Docker

Mais la virtualisation a un coût, notamment au niveau de l'hyperviseur et des systèmes d'exploitation invités, qui requièrent chacun de la mémoire et de coûteuses licences. Il en résulte une augmentation de la taille de chaque machine virtuelle, ce qui limite le nombre de VM qu'un serveur peut héberger. La résurgence de la conteneurisation vise à virtualiser les applications sans trop alourdir le système.

L'idée n'est pas nouvelle : depuis plusieurs années déjà, des systèmes d'exploitation tels que OpenVZ, FreeBSD, Solaris Containers et Linux-VServer prennent cette fonctionnalité en charge comme élément central de l'évolutivité Cloud. Mais c'est la récente introduction de plateformes ouvertes, telles que Docker, qui a remis sous les feux de la rampe la conteneurisation et son potentiel en matière d'applications distribuées évolutives.

LXC

Ainsi, le noyau de Linux 2.6.24 intègre une prise en charge fondamentale de la conteneurisation pour assurer une virtualisation au niveau du système d'exploitation et permettre à un même hôte d'exécuter plusieurs instances Linux isolées, baptisées « conteneurs Linux », ou LXC (LinuX Containers).

LXC repose sur la notion de groupes de contrôle Linux, les cgroups. Ici, chaque groupe de contrôle offre aux applications une isolation totale des ressources (notamment processeur, mémoire et accès E/S), et ce sans recourir à des machines virtuelles à part entière.

Les conteneurs Linux proposent également une isolation complète de leur espace de noms. Les fonctions telles que les systèmes de fichiers, les ID réseau et les ID utilisateur, ainsi que tout autre élément généralement associé aux systèmes d'exploitation, peuvent donc être considérés comme « uniques » du point de vue de chaque conteneur.

Docker : un LXC augmenté

Les plateformes de conteneurisation d'applications, telles que Docker, ne remplacent pas les conteneurs Linux. L'idée consiste à utiliser LXC comme base, puis à ajouter des capacités de niveau supérieur.

Par exemple, une plate-forme comme Docker autorise la portabilité entre machines (qui exécutent aussi Docker) et permet ainsi à une application et à ses composants d'exister en tant qu'objet mobile unique. LXC seul permet la mobilité, mais la build est liée à la configuration du système. Donc la déplacer sur une autre machine peut introduire des différences susceptibles d'empêcher le conteneur de l'application de s'exécuter à l'identique (voire de s'exécuter tout court).

Autres exemples, Docker propose des outils de génération automatisée de build. Ces outils aident les développeurs à passer plus facilement d'un code source à des applications conteneurisées, ou à utiliser des outils d'accompagnement, tels que Chef, Maven, Puppet et autres, afin d'automatiser ou de rationaliser le processus de build.

La gestion des versions permet aux développeurs de suivre l'évolution des versions des conteneurs, de comprendre les différences, voire de revenir à des versions antérieures le cas échéant. Et sachant que tout conteneur peut servir d'image de base à un autre, il est d'autant plus facile de réutiliser des composants aisément partageables via un registre public (ou privé).

Conclusion

Aussi, l'objectif de plateformes telles que Docker consiste-t-il à favoriser l'intégration rapide d'applications dans des conteneurs, ainsi qu'à maintenir et à mettre à jour ces conteneurs, et non à contribuer à la création même de conteneurs ; ce rôle incombe au noyau Linux.

Pour approfondir sur Stockage de conteneurs