J'avais lu légèrement le fichier Dockerfile de Docker, mais j'ai pensé qu'il était nécessaire de poser à nouveau les questions suivantes pour bien le comprendre. Qui est l'image Docker, qu'est-ce que Dockerfile et quel est le FROM décrit dans ce Dockerfile?
Meilleures pratiques Dockerfile Documentation Docker-docs-ja 19.03
Dockerfile est un fichier texte qui décrit toutes les instructions nécessaires pour créer une image dans l'ordre. blockquote> Pour ceux qui le savent, la version docker de Makefile peut être une bonne idée. La procédure de création d'une image docker est décrite dans l'ordre en fonction d'un format et d'un groupe d'instructions spécifiques. En bref, c'est un fichier texte qui incorpore la construction d'un environnement appelé image docker.Qu'est-ce qu'une couche
L'image Docker est composée de couches en lecture seule qui correspondent aux instructions du
Dockerfile. Chaque couche est un changement par rapport à la couche précédente, et ces couches sont empilées. </ blockquote> Quelle est la couche qui est soudainement apparue?FROM ubuntu:18.04 COPY . /app RUN make /app CMD python /app/app.pyIl dit de créer une couche pour chacune de ces instructions. Lorsque vous exécutez l'imageet générez un conteneur, il ajoute une nouvelle couche inscriptible (c'est la «couche conteneur») au-dessus de la couche d'origine. Toutes les modifications apportées à un conteneur en cours d'exécution, telles que l'écriture de nouveaux fichiers, la modification de fichiers existants, la suppression de fichiers, etc., sont décrites dans cette couche de conteneur inscriptible. blockquote> Dans l'exemple ci-dessus, ajoutez un nouveau calque au calque "ubuntu: 18.04" avec "COPY. / App" et "RUN make / app", puis utilisez "CMD python /app/app.py" avec python / app / app. Cela signifie que py crée une image exécutée. Il peut être facile de comprendre que la couche "ubuntu: 18.04" est superposée avec d'autres couches.Qu'est-ce que construire
En un mot, c'est une commande qui crée une image docker en fonction du Dockerfile spécifié. Pour ceux qui le savent aussi, la version docker de la commande make peut être parfaite.
mkdir myproject && cd myproject echo "hello" > hello echo -e "FROM busybox\nCOPY /hello /\nRUN cat /hello" > Dockerfile docker build -t helloapp:v1 .Dans l'exemple ci-dessus, utilisez BusyBox pour créer un "hello file" avec cat. Le Dockerfile qui construit l'image à afficher est craché et l'image Docker est construite en fonction du Dockerfile.Qu'est-ce que FROM dans Dockerfile?
Quel est le FROM d'un Dockerfile?
FROM ubuntu:18.04 COPY . /app RUN make /app CMD python /app/app.pyDans cet exemple précédent, FROM est décrit comme "création d'un calque à partir d'une image Docker à ubuntu: 18.04".mkdir myproject && cd myproject echo "hello" > hello echo -e "FROM busybox\nCOPY /hello /\nRUN cat /hello" > Dockerfile docker build -t helloapp:v1 .Dans cet exemple, busybox est spécifié pour FROM. Bien sûr, busybox a également une image docker , et si vous spécifiez simplement FROM busybox, la dernière (la dernière) L'image est spécifiée.Pour FROM ubuntu: 18.04
Qu'en est-il de FROM ubuntu: 18.04? Si FROM busybox et ":" ne sont pas spécifiés, ce sera le dernier (dernier), mais que se passe-t-il si ":" est ajouté? Voyons Explication de FROM .
FROM <image> [AS <name>] Ou FROM <image>[:<tag>] [AS <name>] Ou FROM <image>[@<digest>] [AS <name>] Vous pouvez éventuellement donner un nom à la nouvelle étape de construction. Cela se fait par le nom AS de l'instruction FROM. Ce nom peut être utilisé dans les instructions FROM et COPY suivantes --from =pour faire référence à l'image créée lors de cette étape de construction. Les paramètres de balise et de résumé sont facultatifs. Si cela est omis, la dernière balise, qui est la valeur par défaut, est traitée comme spécifié. Si aucun ne correspond à la valeur de la balise, une erreur est renvoyée. blockquote> Donc, si vous spécifiez FROM ubuntu: 18.04, l'image de la balise 18.04 d'ubuntu sera spécifiée. Plus précisément, Images Docker d'ubuntu 18.04 , comment l'image docker d'ubuntu: 18.04 est créée, Dockerfile Peut être vu. FROM scratch ADD ubuntu-bionic-core-cloudimg-amd64-root.tar.gz / Omission RUN mkdir -p /run/systemd && echo 'docker' > /run/systemd/container CMD ["/bin/bash"]Notez qu'il commence par FROM scratch car il n'y a pas d'image docker de base.Recommandé officiel DE
Meilleures pratiques Dockerfile Documentation Docker-docs-ja 19.03 Des recommandations sont données dans FROM description ..
Dans la mesure du possible, utilisez la dernière image officielle comme base de votre image. Notre recommandation est l'image alpine. Il s'agit d'une distribution Linux très contrôlée mais de petite capacité (actuellement moins de 5 Mo). blockquote>Qu'est-ce qu'une image alpine?
Une image Docker minimale basée sur Alpine Linux avec un index de package complet et une taille de seulement 5 Mo! L'image alpine est présentée comme . "Nous avons accès à un référentiel de packages beaucoup plus complet que n'importe quelle autre image basée sur BusyBox, ce qui fait d'Alpine Linux une excellente base d'images pour les utilitaires et les applications de production." Comme exemple d’adoption concrète de l’image Alpine, l’autre jour dans le logiciel du serveur Web Voici un caddie . Consulter le caddy Dockerfile du le plus récent Cela commence par "FROM alpine: 3.12." alpin a actuellement "3.12.1, 3.12, 3" comme dernier.
En résumé
Qui est l'image du docker, qu'est-ce que le Dockerfile et quel est le FROM décrit dans ce Dockerfile? Une image Docker est une image d'un conteneur Docker créé par la commande build en fonction du Dockerfile spécifié. Un Dockerfile est un fichier texte qui décrit toutes les instructions nécessaires pour créer une image Docker dans l'ordre. FROM est la base de l'écriture dans le Dockerfile. Normalement, spécifiez l'image du docker, mais sinon, écrivez FROM scratch. La recommandation officielle est DE Alpine.
Recommended Posts