Je voudrais comprendre les étapes d'exécution impliquées dans la création d'images Docker à l'aide de Dockerfile. Quelques questions que j'ai énumérées ci-dessous. Veuillez m'aider à comprendre le processus de construction.
#from base image
FROM ubuntu:14.04
#author name
MAINTAINER RAGHU
#commands to run in the container
RUN echo "hello Raghu"
RUN sleep 10
RUN echo "TASK COMPLETED"
Commande utilisée pour créer l'image: docker build -t raghavendar/hands-on:2.0 .
Sending build context to Docker daemon 20.04 MB
Step 1 : FROM ubuntu:14.04
---> b1719e1db756
Step 2 : MAINTAINER RAGHU
---> Running in 532ed79e6d55
---> ea6184bb8ef5
Removing intermediate container 532ed79e6d55
Step 3 : RUN echo "hello Raghu"
---> Running in da327c9b871a
hello Raghu
---> f02ff92252e2
Removing intermediate container da327c9b871a
Step 4 : RUN sleep 10
---> Running in aa58dea59595
---> fe9e9648e969
Removing intermediate container aa58dea59595
Step 5 : RUN echo "TASK COMPLETED"
---> Running in 612adda45c52
TASK COMPLETED
---> 86c73954ea96
Removing intermediate container 612adda45c52
Successfully built 86c73954ea96
À l'étape 2:
Step 2 : MAINTAINER RAGHU
---> Running in 532ed79e6d55
Question 1: il indique qu'il s'exécute dans le conteneur avec l'ID - 532ed79e6d55, mais avec quelle image Docker ce conteneur est-il formé?
---> ea6184bb8ef5
Question 2: quel est cet identifiant? Est-ce une image ou un conteneur?
Removing intermediate container 532ed79e6d55
Question 3: l'image finale est-elle formée de plusieurs couches enregistrées à partir de conteneurs intermédiaires?
Oui, les images Docker sont superposées. Lorsque vous créez une nouvelle image, Docker le fait pour chaque instruction (RUN
, COPY
etc.) de votre Dockerfile:
FROM
pour la première commande;La couche d'image finale est étiquetée avec le nom que vous donnez à l'image - cela sera clair si vous exécutez docker history raghavendar/hands-on:2.0
, vous verrez chaque couche et une abréviation de l'instruction qui l'a créée.
Vos requêtes spécifiques:
1) 532
est un conteneur temporaire créé à partir de l'ID d'image b17
, qui est votre FROM
image, ubuntu:14.04
.
2) ea6
est la couche d'image créée en sortie de l'instruction, c'est-à-dire à partir de la sauvegarde du conteneur intermédiaire 532
.
3) oui. Docker appelle cela nion File System et c'est la principale raison pour laquelle les images sont si efficaces.