web-dev-qa-db-fra.com

Chroot vs Docker

J'essaie d'apprendre les bases sur les conteneurs (Docker dans ce cas). Pour ce qui est de la documentation Docker et de plusieurs lectures, Docker fournit essentiellement une isolation en exécutant le conteneur avec runc (auparavant, en utilisant LXC =). Dans les deux cas, il utilise le même noyau que la machine hôte. Ainsi, l'image du conteneur doit être compatible avec le noyau de l'hôte. Je trouve cela très similaire à ce qu'un chroot fait. Quelqu'un pourrait-il m'expliquer les différences et/ou les avantages liés à l'utilisation de Docker plutôt que de chroot? (outre les extras fournis par Docker en tant qu'emballage, docker-hub et toutes les fonctionnalités de Nice fournies par Docker)

33
rkachach

Docker permet d'isoler un processus à plusieurs niveaux via des espaces de noms:

  • mnt namespace fournit un système de fichiers racine (celui-ci peut être comparé à chroot je suppose)
  • pid namespace afin que le processus ne se voit que lui-même et ses enfants
  • espace de noms réseau qui permet au conteneur d'avoir sa pile réseau dédiée
  • espace de noms utilisateur (tout à fait nouveau) qui permet à un utilisateur non root d'un hôte d'être mappé avec l'utilisateur root dans le conteneur
  • uts fournit un nom d'hôte dédié
  • ipc fournit de la mémoire partagée dédiée

Tout cela ajoute plus d'isolement que chroot fournit

30
Luc