labos-cloud

Laboratoires pour diverses technologies utilisées dans le cloud

View on GitHub

Laboratoire sur Docker

Exercice 3

Après cet exercice, vous pourrez créer une image à partir d’un fichier Dockerfile.

Système de fichiers partie 2

Dans l’exercice 1, nous avons appris qu’un changement dans le container existe seulement dans le container. Exécutez un container Debian en mode interactif avec un pseudo-terminal. Modifiez le contenu de “/home” comme vu précédemment puis sortez du container. Examinez les containers à l’arrêt. Parmi les différentes commandes listées par sudo docker --help et sudo docker container --help, vous trouverez start et restart pour démarrer un container à l’arrêt ou redémarrer un container en cours d’exécution. Démarrez le container Debian avec sudo docker start <container debian> puis exécutez-y un shell bash. Vérifiez le contenu du répertoire “/home”. Le fichier est présent car le contenu persiste quand un container est arrêté ou redémarré.

stop - start

Dockerfile

Pour qu’un certain contenu soit présent dans chaque nouveau container créé, il doit faire partie de l’image. Certains utilitaires étant pratiques pour nos tests, ajoutons les directement au départ plutôt que de les réinstaller dans chaque nouveau container. Le fichier Dockerfile contient la liste des commandes à exécuter pour construire le container.

À partir du système hôte, créez un répertoire avec mkdir dockertest et entrez-y avec cd dockertest. Nous allons utiliser un fichier Dockerfile pré-construit, téléchargez le avec wget https://raw.githubusercontent.com/matbilodeau/labos-cloud/main/exemples/laboDocker/Dockerfile. cat Dockerfile affichera le contenu du fichier.

En plus de pouvoir créer et démarrer des containers, Docker permet aussi de construire nos images à partir d’un fichier Dockerfile. sudo docker --help. La commande dont nous avons besoin est donc build, exécutez sudo docker build . le “.” référant au répertoire courrant.

pas de nom

L’image créée n’a pas de nom, il faudra donc toujours y référer par son IMAGE ID ce qui n’est pas pratique. Pour “nommer:tagger” une image déja construite, la commande sudo docker tag --help est très informative. Renommez votre image avec le nom “mondebian” et le tag “v1”. Le fichier Dockerfile utilise “debian:stable” comme image de base et celle-ci à été téléchargée car celle utilisée précédemment était “debian:latest”.

image de base

Il est aussi possible de choisir le nom et le tag à la construction de l’image. sudo docker build --help. Pour donner un nom à l’image il faut utiliser l’option -t name:tag. Si on utilise seulement -t name le TAG “latest” sera appliqué par défaut.

Créez un nouveau container à partir de votre image “mondebian:v1” et lancez le en mode interactif avec pseudo-terminal. Vérifiez que l’utilitaire curl est bien installé.

test curl

Sur le système hôte, modifiez votre fichier Dockerfile, en respectant les bonnes pratiques, avec la commande nano Dockerfile afin de pouvoir aussi utiliser les utilitaires ps, ifconfig et nano. Vous pouvez utiliser une notation “1.x” si vous construisez des images de test. sudo docker --help indique que pour supprimer une image il faut utiliser la commande rmi. Nommez votre image finale “mondebian:v2”.

Revenir à l’exercice 2 Poursuivre avec l’exercice 4