J'essaie d'apprendre Docker et une chose qui me surprend est la façon dont une version différente de Linux (du système d'exploitation hôte) s'exécute réellement dans le conteneur Docker.
Si nous supposons que mon hôte Docker exécute RedHat et que je commence un conteneur à partir d'une image Ubuntu, les éléments suivants sont-ils vrais ?:
Je suis conscient que le conteneur Docker partage le même noyau que celui utilisé par le système d'exploitation hôte et que l'un des points fondamentaux de Docker réside dans les gains d'efficacité du conteneur utilisant le système d'exploitation sous-jacent. Je suis donc un peu confus quant à ce qui se passe réellement lorsque vous démarrez un conteneur créé à partir d'une version de Linux différente de celle de l'hôte.
L'image Ubuntu s'exécutant dans le conteneur Docker s'exécute dans ce qu'on appelle l'espace utilisateur de ce conteneur. Cette image peut effectuer des appels système au noyau RedHat Host OS (dans le cadre du transfert du contrôle de l'espace utilisateur vers l'espace noyau pour certaines opérations utilisateur). Étant donné que le noyau principal est une technologie commune, les appels système devraient être compatibles, même lorsqu'ils sont passés d'un code d'espace utilisateur Ubuntu à un code de noyau Redhat. Cette compatibilité permet de partager le noyau entre des conteneurs pouvant tous avoir des images de système d'exploitation de base différentes.