Introduction
Je continue dans mon exploration de Docker, aujourd’hui nous allons voir comment automatiser la création d’un container à l’aide d’un Dockerfile
.
Nous allons créer un container pour tig.. C’est un interface git qui marche sous un terminal. Pour moi, c’est un magnifique outil de travail. Je m’en sers très souvent (surtout la vue de status (touche S
) puis u
pour ajouter, !
pour reverter, C
pour commit, e
pour lancer mon éditeur (Bien entendu Vim)
Nous allons faire
- L’installation à la main
- Puis écrire le
Dockerfile
qui automatise la partie 1 - Optimiser un peu celui-ci en utilisant une autre distribution
- Faire des commit sous Github, puis sous DockerHub
Création du container à la main
Je commence avec une Ubuntu que je lance en mode interactif.
1
|
|
Je mets à jour ma distribution
1
|
|
J’installe tig (il est dans les dépôts officiels)
1
|
|
A cause du apt-get update
Ubuntu a téléchargé toutes les sources des dépôts dans le répertoire var/lib/apt/lists/
pour ne pas alourdir le container je vais effacer celui-ci
1
|
|
Je lance tig
1 2 |
|
Il n’y a pas de dépot git à la racine c’est normal.
je quitte mon container et je liste
1 2 3 |
|
Je vais le committer.
1
|
|
Je vais le relancer avec la commande suivante.
1
|
|
En gros j’ai crée un lien symbolique qui pointe le répertoire courant de mon ordinateur vers le répertoire project
du container.
je me place dans le répertoire project.
1
|
|
et je lance tig
1
|
|
Si dans le répertoire courant il y a un dépôt git. Normalement l’interface de Tig apparait.
Voila j’ai placé tig dans un container.
Automatisation via un DockerFile.
On se place dans un répertoire vide
Je crée un fichier DockerFile
avec le contenu suivant
1 2 3 4 5 6 7 8 |
|
WORKDIR
et VOLUME
indique à Docker que le répertoire par défault est project
et que l’on lance tig
On va maintenant demander à docker de builder l’image à l’aide de la commande suivante
1
|
|
On attend un peu.. Et on relance
1
|
|
C’est beaucoup plus rapide.
Optimisons la taille.
Quand je liste mon image via la commande suivante
1 2 |
|
Mon container fait 234 méga ! C’est beaucoup pour un simple utilitaire. pour simplifier je vais utiliser une autre distribution alpine-linux (que je ne connaissais pas ..) et le dockerhub suivant qui réduit la distribution à 5 méga !
Voici mon DockerFile
1 2 3 4 5 |
|
Je relance un build.
1
|
|
Maintenant mon container ne fait plus que 24 Méga !
Publions sous Github
Nous allons créer un nouveau dépôt avec un README.
Que je vais cloner.
1
|
|
Je vais ajouter mon DockerFile, Commiter et Pusher
1 2 3 |
|
Et c’est tout.
Résultat ici
Publions sur DockerHub
Je pars du principe que vous avez un compte sur DockerHub.
- Cliquer sur le bouton
Add Repository->Automated Build
- choisir Github.
- Puis On va vous demander de relier votre compte DockerHub à Github.
- DockerHub va vous demander quel projet vous souhaitez builder automatiquement.
Résultat ici
Conclusion
Le Dockerfile sert à automatiser la création d’image. il est plus simple de stocker le Dockerfile
que le container (puisque Dockerhub s’occupe de faire build)
J’ai crée mon premier dépôt. Ce n’est pas très compliqué. Dans un prochain article, je vais essayer d’expérimenter docker compose
.