2017-10-12 2 views
1

Je suis en train d'apprendre Docker et que la référence à des documents en ligne. Je suis venu à savoir qu'il y a un centre d'images officiel que nous pouvons tirer, et exécuter un conteneur.Est-ce que toutes les images du docker ont un système d'exploitation minimal?

Les prises en pension sont disponibles à https://hub.docker.com/, une partie de capture d'écran:

enter image description here

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

Ma question est:

faire toutes ces images ont "OS minimal" sur lequel ils courent. Par exemple, si nous considérons l'image httpd, at-il le système d'exploitation nécessaire sur lequel il s'exécute?

+0

Vous devriez jeter un oeil à la documentation officielle Docker: https://docs.docker.com/get-started/ –

+0

Vous avez besoin de programmes qui a besoin à son tour bibliothèques etc.Ceux-ci viennent en tant que fichiers dans l'image docker, et sont invoqués si nécessaire. Docker fournit le noyau auquel ils parlent. Pour une machine Java Docker, vous pouvez vous débrouiller sans autre chose que la JVM et les bibliothèques dont elle a besoin. –

+0

Cela signifie-t-il que nous pouvons avoir une image sans système d'exploitation? – CuriousMind

Répondre

2

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. Ils ont une image de base différente, appelée scratch.

Vous pouvez consulter les images qu'ils sont basés sur 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 sur eux, par exemple la première étiquette "2.2" fait référence à this file. La première ligne du Dockerfile est FROM debian:jessie et montre qu'elle est basée sur une image Debian.

Il est largement utilisé pour avoir une étiquette séparée avec le postfixe -alpine pour indiquer que alpine linux est utilisé, 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.

1

L'idée est que l'image entière est totalement autonome en cours d'exécution sur la couche matérielle/virtualisation. Et donc (le pro :) ne peut pas non plus être influencé par autre chose que cela fait partie de l'image.

Chaque image contient un os complet. Le docker spécial fait des OS avec quelques méga octets: par exemple linux Alpine qui est un OS avec 8 mégaoctets!

Mais un système d'exploitation plus gros comme ubuntu/windows peut prendre quelques gigaoctets. Les deux ont leurs avantages car docker découpe une image en couches, donc quand vous utilisez deux fois l'image d'une base (commande FROM, voir N20 Answers), vous ne téléchargerez cette couche qu'une seule fois.

OS Smaller a pro seulement besoin de télécharger quelques méga-octets. mais pour chaque bibliothèque (linux) que vous voulez utiliser, vous devrez télécharger & include yourself. Ce calque fait sur commande est alors utilisé uniquement dans votre propre image et n'est donc pas réutilisé dans d'autres images et crée ainsi un client couche de téléchargement supplémentaire & mégaoctets que les gens devront télécharger pour exécuter votre image.

Si vous voulez faire une image à partir de rien, vous pouvez commencer votre dockerfile avec:

FROM scratch 

Mais ce n'est pas conseillé, sauf si vous savez vraiment ce que vous faites et/ou vous êtes hobbying autour.

+0

Merci pour votre réponse. Alors est-ce toujours que les images ont inévitablement un système d'exploitation minimal? Je ne suis toujours pas clair :( – CuriousMind

+1

Toutes les images ne sont pas créées égales Par exemple: Bitmapi php-fpm: image 7.2.1-r0 est de 253 Mo en 15 couches kreable/php70: dernière est de 1,21 Go en 45 couches. si elles ont la même image de base, la superposition réelle, et comment vous nettoyez après vous pendant que vous installez des dépendances aura un impact sur la taille finale de l'image.Un équilibre entre la réutilisabilité (mais probablement de plus grandes couches) et le minimalisme. probablement pas suffisamment réutilisable pour justifier l'effort supplémentaire). –