2017-01-11 4 views
1

En fait, je suis nouveau à l'écosystème Docker et j'essaie de comprendre comment fonctionne exactement un conteneur sur une image de base? Est-ce que l'image de base est chargée dans le conteneur?Comment fonctionnent les images et calques de docker?

J'ai été à travers Docker docs où il est dit qu'une couche de conteneur d'écriture en lecture est formée sur une couche d'image qui est la couche de conteneur, mais ce que je suis confus est l'image est immuable, non? Alors où est l'image en cours d'exécution, est-ce à l'intérieur du moteur Docker dans la VM et comment le conteneur entre-t-il réellement en jeu?

+0

Pourquoi est-il tagged "Azure"? – techraf

+0

Parce que j'essayais de le déployer dans Azure Container Services, j'ai pensé que ce serait peut-être un point de référence dans la discussion. –

Répondre

3

comment fonctionne exactement un conteneur sur une image de base? L'image de base est-elle chargée dans le conteneur?

Docker conteneurs Enrouler un morceau de logiciel dans un filesystem complet qui contient tout le nécessaire pour exécuter: code, exécution, outils système, les bibliothèques système - tout ce qui peut être installé sur un serveur.

Comme FreeBSD Jails et Solaris Zones, les conteneurs Linux sont des environnements d'exécution autonomes - avec leur propre, CPU isolé, mémoire, bloc E/S et des ressources réseau (utilisation d'CGROUPS fonctionnalité du noyau) - qui partagent le noyau du système d'exploitation hôte. Le résultat est quelque chose qui ressemble à une machine virtuelle, mais qui perd tout le poids et le temps de démarrage d'un système d'exploitation invité. Cela étant dit Chaque distribution a sa propre image officielle docker (library), qui est livré avec des binaires minimaux, Considéré docker meilleures pratiques et il est prêt à construire sur.

Je suis confus à propos de l'image est immuable, non? où est l'image en cours d'exécution, est-ce à l'intérieur du moteur Docker dans la VM et comment le conteneur entre-t-il réellement en jeu?

Docker utilisé pour utiliser AUFS, utilise encore sur debian et utilise AUFS comme les systèmes de fichiers tels que overlay etc et sur d'autres distributions. AUFS fournit une superposition. Chaque image est constituée de calques, ces calques sont en lecture seule. Chaque conteneur a une couche de lecture/écriture au-dessus de ses couches d'image. Les couches en lecture seule sont partagées entre les conteneurs, ce qui vous permet d'économiser de l'espace de stockage. Le conteneur verra le union mount de tous les calques d'image + couche de lecture/écriture.

enter image description here

+0

Merci pour l'aide, mais ce qui m'ennuie encore, c'est de supposer que j'ai besoin d'un serveur apache alors je tire l'image pour ça et ensuite l'image apache va tirer l'image debian car c'est ce que suggère son fichier docker instance de cette image s'exécutant sur le noyau linux quand nous voulons un conteneur apache démarré? –

+0

Le noyau Linux s'exécute sur l'hôte 'docker' et est partagé entre les conteneurs. Donc quand vous tirez une image 'apache', les calques sont constitués de la base' debian' (Seulement des binaires) + des binaires supplémentaires pour le paquet 'apache' dans un calque au dessus de' debian'. Lorsque vous créez un conteneur à partir de cette image, en fonction de la commande 'entrypoint', un processus sera exécuté, dans votre cas' apache2'. Pour exécuter ce processus, vous avez besoin de 'binaires de base', comme' systemd' et ... dans l'image debian, et bien sûr '' apache2 'binaires dans le calque' apache2' sur le dessus. –

+0

Ok, donc l'image est exécutée dans le moteur docker dans le noyau VM OS et en conséquence les conteneurs partagent l'image en fonction de l'allocation des ressources et des besoins. Maintenant, si plus d'un conteneur partagent la même image, cela signifie-t-il que les conteneurs sont superposés ou est-ce que les conteneurs fonctionnent en parallèle? –