Hello World
Hello World
L'objectif de cet exercice est de construire ensemble notre première image Docker.
En informatique la coutume veut que cela soit un Hello World. L'objectif ici est donc de constuire une image très simple dont le but va être d'afficher un message prédéfini.
Nous allons nous baser sur le Dockerfile suivant :
FROM busybox:latest
CMD echo Hello World!!
Question
Essayez de deviner ce que font chacune des deux lignes de ce Dockerfile
Solution
FROM busybox:latest
Cette première instruction permet de choisir une image de base sur laquelle va reposer notre image personnalisée.
Dans notre cas, nous avons choisi d'utiliser la distribution busybox
connue pour sa légèreté
CMD echo Hello World!!
Cette seconde instruction est en charge de la commande à lancer au démarrage de notre conteneur. Ici, nous allons afficher dans la console Hello World
Question
À l'aide de la commande docker build
, construisez votre image
Indice
La commande docker build
a la syntaxe suivante :
docker build <repertoire_du_dockerfile>
Solution
~ docker build .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM busybox:latest
latest: Pulling from library/busybox
57c14dd66db0: Pull complete
Digest: sha256:7964ad52e396a6e045c39b5a44438424ac52e12e4d5a25d94895f2058cb863a0
Status: Downloaded newer image for busybox:latest
---> 3a093384ac30
Step 2/2 : CMD echo Hello World!!
---> Running in a6284278314d
Removing intermediate container a6284278314d
---> 70cd93b6b962
Successfully built 70cd93b6b962
Question
Lancez un conteneur basé sur votre image
Indice
On utilise la commande docker run
Indice
L'image à utiliser est indiquée à la toute fin de la commande de build
. Dans notre cas 70cd93b6b962
Solution
~ docker run 70cd93b6b962
Hello World!!
Remarque :
Nous avons pu créer notre propre image personnalisée basée sur la distribution busybox
et étendre cette image pour construire notre Hello World !!.
C'est une application simple, mais les images réalisées dans des projets de plus large envergure utilisent la même technologie.
Question
Intéressons nous maintenant à la liste de nos images. Lancez la commande suivante :
docker images
Que remarquez vous ?
Solution
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 70cd93b6b962 1 minutes ago 1.2MB
mon-image latest 3e12e812ffba 37 minutes ago 101MB
busybox latest 3a093384ac30 7 days ago 1.2MB
debian stretch de8b49d4b0b3 10 days ago 101MB
La nouvelle image que l'on vient de construire n'a pas de nom ni de tag.
Question
Recommencez le build de l'image mais cette fois ci en utilisant l'option -t
de la commande docker build
Indice
~ docker build -t <nom-image> .
Solution
~ docker build -t helloworld .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM busybox:latest
---> 3a093384ac30
Step 2/2 : CMD echo Hello World!!
---> Using cache
---> 70cd93b6b962
Successfully built 70cd93b6b962
Successfully tagged helloworld:latest
~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
helloworld latest 70cd93b6b962 19 minutes ago 1.2MB
mon-image latest 3e12e812ffba 41 minutes ago 101MB
busybox latest 3a093384ac30 7 days ago 1.2MB
debian stretch de8b49d4b0b3 10 days ago 101MB
On remarque maintenant que notre image à l'id 70cd93b6b962
est maintenant référencé avec un nom et un tag. Par défaut, si aucun tag n'est spécifié, c'est latest
qui va être utilisé par docker. Vous pouvez spécifier un tag en utilisant les ":
" après votre nom d'image. Il est recommandé de toujours construire une image en lui spécifiant un nom.
docker build -t helloworld:v1 .
Par défaut lors de la construction d'une image, Docker va chercher dans le dossier courant un fichier nommé Dockerfile (attention à la case). Il est possible d'utiliser l'option -f
pour spécifier un autre nom de fichier pour notre Dockerfile.