Je viens de commencer à étudier Docker et il y a quelque chose qui me perturbe beaucoup. Comme je l'ai lu sur le site web de Docker, un conteneur est différent d'une machine virtuelle. D'après ce que j'ai compris, un conteneur est simplement un bac à sable à l'intérieur duquel un système de fichiers isolé complet est exécuté.
J'ai aussi lu qu'un conteneur n'a pas de système d'exploitation invité installé. Au lieu de cela, il repose sur le noyau du système d'exploitation sous-jacent.
Tout ça va bien. Ce qui me perturbe c'est qu'il y a des images Docker nommées d'après des systèmes d'exploitation. On voit des images comme Ubuntu, Debian, Fedora, CentOS, etc.
Maintenant, ma question est la suivante : que sont vraiment ces images? En quoi est-ce différent de créer un conteneur basé sur l'image Debian et de créer une machine virtuelle et d'installer Debian?
Je pensais que les conteneurs n'avaient pas de système d'exploitation invité installé, mais lorsque nous créons des images, nous les basent sur une image nommée d'après un OS.
De même, dans les exemples que j'ai vus, lorsque nous faisons docker run ubuntu echo "bonjour le monde"
, il semble que nous démarrons une machine virtuelle avec Ubuntu et lui faisons exécuter la commande echo "bonjour le monde"
.
De la même manière, lorsque nous faisons docker run -it ubuntu /bin/bash
, il semble que nous démarrons une machine virtuelle avec Ubuntu et y accédons en utilisant la ligne de commande.
Quoi qu'il en soit, que signifient ces images nommées d'après des systèmes d'exploitation? En quoi est-ce différent de faire fonctionner un conteneur avec l'une de ces images et de démarrer une machine virtuelle avec le système d'exploitation invité correspondant?
L'idée est-elle que nous partagions juste le noyau avec le système d'exploitation hôte (et par conséquent nous avons accès aux ressources matérielles de la machine sous-jacente, sans avoir besoin de virtualiser le matériel), mais nous utilisons quand même les fichiers et les binaires de chaque système différent sur les conteneurs pour prendre en charge l'application que nous voulons exécuter?
2 votes
À mon avis, vos objectifs en matière de virtualisation sont essentiels. Si vous avez besoin de bibliothèques, de langages, etc. sur un système d'exploitation, les conteneurs OS sont adaptés à vos besoins. Mais si votre besoin est uniquement des applications en tant que composants, il n'est pas nécessaire d'utiliser un OS comme image de base. Je pense que cet article pourrait l'expliquer clairement blog.risingstack.com/…