Différence entre chroot et Docker

15

Je ne comprends pas la différence entre docker et chroot. Oui, c'est agréable en termes de l'emballage du registre. Mais en quelque sorte, j'ai l'impression que c'est juste chroot avec des cloches et des sifflets supplémentaires.

Je sais que je manque quelque chose. Ce serait formidable de savoir comment ils sont différents et le besoin de docker si chroot pouvait faire quelque chose de similaire.

Je n'ai pas pu trouver ce Chroot Vs Docker assez clair non plus.

Vipin Menon
la source
Eh bien, oui, Docker ne fait rien que le noyau ne fasse pas déjà pour vous. Il l'empaquette simplement dans un outil plus ou moins cohérent et assez facile à utiliser. Vous pouvez créer votre propre Docker si vous pouvez prendre la peine de faire du chroot, des espaces de noms, des quotas, du NAT et tout le reste vous-même.
Gaius

Réponses:

8

Eh bien, les cloches et sifflets supplémentaires sont appelés isolation du processus, un conteneur obtient son propre espace de noms du noyau hôte, ce qui signifie que le programme dans le conteneur ne peut pas essayer de lire la mémoire du noyau ou de manger plus de RAM que ce qui est autorisé.

Il isole également les piles du réseau, donc deux processus peuvent écouter sur le port 8080 par exemple, vous devrez gérer le routage au niveau de l'hôte, il n'y a pas de magie ici, mais cela permet de gérer le routage à un endroit et d'éviter de modifier la configuration du processus en écouter un port libre.

Deuxièmement, un chroot est toujours en lecture / écriture, tout changement est permanent, un conteneur docker utilisant aufsdémarrera à partir d'un système de fichiers propre à chaque lancement du conteneur (les modifications sont conservées si vous l'arrêtez / le démarrez IIRC).

Ainsi, alors qu'un conteneur peut être considéré comme process namespace+ chroot, la réalité est un peu plus complexe.

Tensibai
la source
Notez que ce aufsn'est plus utilisé par défaut. Maintenant c'estoverlay2
Vitalii Vitrenko
C'est vrai, mais je pense qu'il y a plus de matériel éducatif référençant les aufs que overlay2 pour l'instant :)
Tensibai
Un processus normal ne peut pas lire de mémoire non plus. Si vous comptez sur Docker pour la sécurité, vous vous trompez ...
Gaius
@Gaius vous me lisez mal, j'essaie juste de donner des indices de recherche à l'OP ... Ajouter un docker dans un pipeline de livraison avec toute la liberté qu'il donne au développeur de ce qu'il utilise à l'intérieur n'est absolument pas un point de sécurité. Néanmoins, les espaces de noms protègent par nature d'un débordement de pile et d'un débordement de tampon.
Tensibai
5

Oui, il y a plus que cela chrootau point qu'ils ont peu ou rien en commun.

  • Un format de fichier de script standardisé comprenant la sémantique relative à la tâche à accomplir
  • Images (y compris les images intermédiaires anonymes), mise en cache, dénomination, téléchargement, etc., y compris une gestion puissante ( docker image prune...)
  • Conteneurs (y compris leurs propres systèmes de fichiers temporaires, dénomination, possibilité d'y docker execaccéder, etc.)
  • Gestion des processus ( docker container ...)
  • Mise en réseau avec une simple option, y compris la mise en réseau de conteneurs intra-docker, etc.
  • Volumes (y compris les volumes gérés spéciaux)
  • docker-compose ou essaimez en tant que mises à niveau discrètes vers bien plus encore.
  • Le grand zoo d'autres solutions basées sur des conteneurs dockers (OpenShift etc.).
AnoE
la source