3 votes

Toutes les images Docker ont-elles un système d'exploitation minimal ?

J'essaie d'apprendre Docker et pour cela je me réfère à des documents en ligne. J'ai appris qu'il existe un centre officiel d'images que l'on peut extraire et faire fonctionner un conteneur.

Les dépôts sont disponibles à l'adresse suivante https://hub.docker.com/ , partie de la capture d'écran :

enter image description here

Dans ce diagramme, nous pouvons voir les images officielles d'ubuntu, httpd, mysql (et ainsi de suite).

Ma question est la suivante :

Toutes ces images ont-elles un "système d'exploitation minimal" sur lequel elles fonctionnent. Par exemple, si nous considérons httpd image, dispose-t-il du système d'exploitation nécessaire pour fonctionner ?

3voto

n2o Points 441

La plupart des images sont basées sur une distribution, comme vous pouvez le voir dans leurs Dockerfiles. Sauf pour les images de distribution elles-mêmes. Elles ont une image de base différente, qui est appelée gratter .

Vous pouvez consulter les images sur lesquelles elles sont basées lorsque vous visitez la page du projet sur DockerHub, par exemple https://hub.docker.com/_/httpd/

Leurs Dockerfiles sont référencés et vous pouvez les consulter en cliquant dessus, par exemple le premier tag "2.2" se réfère à ce dossier . La première ligne du fichier Docker est la suivante FROM debian:jessie et montre qu'il est basé sur une image Debian.

Il est largement utilisé d'avoir une balise séparée avec le postfixe -alpine pour indiquer que alpine linux est utilisée, ce qui est une image de base beaucoup plus petite que l'image Debian. Cela conduit à une image plus petite de l'image httpd, car l'image de base est beaucoup plus petite.

1voto

Joel Harkes Points 6040

L'idée est que l'image entière est complètement autonome et fonctionne sur la couche matérielle/virtualisation. Ainsi, (le pro :) ne peut pas être influencé par autre chose que ce qui fait partie de l'image.

Chaque image contient un os complet. Les OS spéciaux créés par Docker sont livrés avec quelques méga-octets : par exemple linux Alpine qui est un système d'exploitation de 8 mégaoctets !

Mais les systèmes d'exploitation plus importants comme ubuntu/Windows peuvent représenter quelques gigaoctets. Les deux ont leurs avantages puisque docker découpe une image en couches, de sorte que lorsque vous utilisez une image de base deux fois (commande FROM, voir N20 Answers), vous ne téléchargez cette couche qu'une seule fois.

Un système d'exploitation plus petit présente l'avantage de ne nécessiter que le téléchargement de quelques mégaoctets, mais pour chaque bibliothèque (linux) que vous souhaitez utiliser, vous devrez la télécharger et l'inclure vous-même. Cette couche personnalisée n'est alors utilisée que dans votre propre image et n'est donc pas réutilisée dans d'autres images, ce qui crée une couche de téléchargement supplémentaire pour le client et des mégaoctets que les gens devront télécharger pour utiliser votre image.

Si vous souhaitez créer une image à partir de rien, vous pouvez démarrer votre dockerfile avec :

FROM scratch

Mais ce n'est pas conseillé, à moins que vous ne sachiez vraiment ce que vous faites et/ou que vous fassiez du bricolage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X