Je vois que beaucoup d'images de docker dans le référentiel de docker sont créées avec une base Ubuntu.
Qu'est-ce que ça veut dire? Chaque conteneur regroupe-t-il une version simplifiée du noyau Linux?
Les conteneurs reposent-ils sur leurs propres noyaux? Mais je pensais que les conteneurs partageaient le noyau de l'hôte (ce qui dans certains cas était boot2docker, une version personnalisée de Tiny Core Linux et, dans d'autres, quelque chose comme CoreOS).
EDIT: Clarifier un peu la question. Oui, je sais que docker est un conteneur de processus, pas une machine virtuelle complète. Mais comme il existe des conteneurs "Ubuntu" dans le registre officiel du docker hub et dans d'autres systèmes d'exploitation tels que CentOS, que signifie exécuter Ubuntu dans un conteneur?
Réponse: Ah, ça vient de me paraître. Il s’agit des processus utilisateurs d’Ubuntu, contenant apt-get et d’autres processus de configuration pour une construction Ubuntu particulière. De même pour CentOS. Docker n'est pas un processus unique, mais une seule entrée. Donc, pour ces distributions, le point d’entrée est une sorte de processus init qui engendre d’autres processus.
Réponses:
Docker utilise le noyau du système d'exploitation hôte. Il n'y a pas de noyau personnalisé ou supplémentaire dans le conteneur. Tous les conteneurs qui s'exécutent sur une machine partagent ce noyau "hôte".
Wikipedia dit http://en.wikipedia.org/wiki/Docker_(software) que
cgroups, namespaces et LXC sont des fonctionnalités du noyau Linux permettant d’isoler des groupes de processus; il existe toujours un seul noyau, un seul planificateur et une instance du gestionnaire de mémoire du noyau.
Boot2docker et CoreOS ne sont que des distributions Linux légères avec un noyau hôte; ils peuvent être utilisés pour charger des conteneurs Docker.
http://boot2docker.io/
http://en.wikipedia.org/wiki/CoreOS
la source
FROM
une image de base Ubuntu alors que l'hôte exécute déjà Ubuntu. Pour répondre à la question, vous devez expliquer en quoi consiste une image de base.Dans presque tous les cas, le noyau du système d'exploitation hôte est partagé. Pour exécuter un autre noyau, vous devez utiliser la virtualisation. Ceci est rare et n'est utilisé que lorsque cela est nécessaire en raison de la dégradation des performances.
"Le conteneur Docker Engine comprend uniquement l'application et ses dépendances. Il s'exécute en tant que processus isolé dans l'espace utilisateur sur le système d'exploitation hôte, partageant le noyau avec d'autres conteneurs. Il bénéficie donc des avantages liés à l'isolation et à l'allocation des ressources des ordinateurs virtuels, mais bien plus portable et efficace. "
Cela pourrait aider à expliquer comment cela fonctionne:
Source: https://www.docker.com/whatisdocker/
la source