web-dev-qa-db-fra.com

Pourquoi Docker a la capacité d'exécuter différentes distributions Linux?

Nous pouvons utiliser docker pour extraire différentes images. Et ces images sont une distribution Linux différente. Mais quel que soit le docker de distribution Linux exécuté, le docker peut exécuter ces différentes distributions linux comme dans une machine virtuelle.

Je sais que Docker utilise aufs pour contrôler différents niveaux d'accès en lecture-écriture. Il peut donc réutiliser certains fichiers sur la machine hôte. Mais comment le docker peut-il exécuter apt-get dans un conteneur lorsque mon hôte s'exécute Arch Linux? L'image contient-elle le apt-get binaire? Mais différentes distributions Linux ont des bibliothèques et des versions de logiciel différentes. Même le fichier de configuration est différent. Comment le docker peut-il "exécuter" Ubuntu dans un Linux Arch?

55
atupal

Parce que le noyau est le même.

Le point commun à toutes les distributions linux, et pourquoi elles sont appelées linux, est qu'elles utilisent toutes le noyau linux.

Les conteneurs partagent le même noyau que l'hôte, c'est pourquoi vous pouvez exécuter une image Arch sur un hôte Ubuntu.

Voici un aperçu de Linux.

Le noyau fait partie du système d'exploitation qui gère la communication avec le matériel. C'est le niveau le plus bas du système d'exploitation. Voici une liste des principales fonctions du noyau:

  • gestion de la mémoire
  • la gestion du réseau
  • pilote de périphérique
  • gestion de fichiers
  • la gestion des processus

Ainsi, lorsque vous utilisez un conteneur, vous n'avez accès qu'au noyau de l'hôte, car c'est la seule partie qui communique avec le matériel, tant que votre système d'exploitation utilise le bon syscall, vous pouvez exécuter n'importe quelle distribution linux. à l'intérieur de votre conteneur. (C'est la raison pour laquelle vous ne pouvez pas utiliser Windows dans un conteneur: il n'utilise pas le même syscall).

64
Regan

Oui, les images devront contenir apt-get pour que vous puissiez exécuter apt-get. Chaque image peut avoir différents logiciels installés à l'intérieur. Vous pouvez donc installer un Arch docker image ou une image ubuntu par exemple. Vous pouvez rechercher des images publiques à l'aide de la commande suivante.

docker search <your search term>

donc pour rechercher une image ubuntu que vous pouvez utiliser

docker search ubuntu

Je vous recommande de suivre le tutoriel docker et de lire attentivement toutes les instructions et les liens à gauche au fur et à mesure.

3
Jim Jeffries