.gitignore | ||
package.json | ||
README.md | ||
server.js |
Exercices d’introduction à docker
Pré-requis :
- Installation de Docker
- Installation de Docker Compose
- Installation de Nginx
- Compréhension de la notion de virtualisation
Exercice 1 : Première utilisation de docker
L'objectif de cet exercice est de prendre en main les premières commandes Docker. Nous allons créer un container (sorte de machine vituelle) puis de se connecter à l'intérieur pour explorer.
-
Utiliser
docker run ubuntu
pour démarrer un container avec une image du système d’exploitation Ubuntu. Chercher le moyen dans les options pour le garder en activité. -
Trouver l' option pour démarrer le container en choisissant le nom, y mettre
prenom_exercice_1
. -
Se connecter au container en utilisant
docker exec
. Les bonnes options sont dans la documentation. -
Une fois dans le container, installer wget ou curl et télécharger un gif dans le container. Il se peut que vous ayez quelques soucis, ce lien peut être une solution.
-
Explorer le container et faire comme chez soi. Sortir du container avec
exit
.
Exercice 2 : Volumes, le lien entre les systèmes de fichier du container et de l'hôte
-
Utiliser
docker run
pour démarrer un container avec une image du système d’exploitation Alpine. Utiliser les options vu précédement pour démarrer le container en choisissant le nom, y mettreprenom_exercice_2
. -
Trouver l'option dans la documentation pour démarrer le container en montant le répertoire
~/entrainement/prenom/exercice2
du serveur sur le répertoire/data
du container. -
Se connecter au container en utilisant
docker exec
. Une fois dans le container, installer wget ou curl, puis télécharger un gif dans le container et le mettre dans/data
. -
Explorer le container et faire comme chez soi. Sortir du container avec
exit
. -
Explorer les fichiers du serveur pour voir
~/entrainement/prenom/exercice2
. Confimer la présence du gif.
3. Objectifs : Utiliser le dockerfile pour créer une image
-
Sur le serveur, créer le répertoire
~/entrainement/prenom/exercice3
. Puis y créer un fichier portant le nomDockerfile
. -
Créer un script pour télécharger un gif de votre choix dans le répertoire
/data
du qui s'exécutera dans le container. -
Ecrire le
Dockerfile
en se basant sur la documentation pour créer une image basée surUbuntu
, installer wget, et y importer votre script. -
Construire votre image en lançant
docker build
avec les bonnes options pour donner le nomprenom_exercice
à l'image et la version 3. -
Créer un container de cette image et monter le dossier
/data
sur~/entrainement/prenom/exercice3
comme dans l'exercice précédent. -
Explorer les fichiers du serveur pour voir
~/entrainement/prenom/exercice3
. Confimer la présence du gif.
4. Objectifs : Créer une image avec un fichier serveur
-
Dans le répertoire
~/entrainement/prenom/exercice4
, créer un nouveauDockerfile
. -
Créer une image qui contient Node JS.
-
Inclure dans l'image le script
server.js
. S'assurer queserver.js
est appelé à l'exécution de l'image. Ne pas oublier d'ajouter la commandenpm i
pour l'installation des dépendances nodejs. -
Lancer un container de cette image avec
docker run
. -
Pour connaitre l'ip de votre container taper
docker inspect
suivi du nom du container. En fin de description, trouver l'IP du container probablement proche de"IPAddress": "172.17.0.X"
. -
Depuis le server, utiliser curl pour faire une requete sur le server nodejs :
curl http://172.17.0.X:3000
5. Objectifs : Utilisation de docker compose
Comme vous pouvez le voir, il y a parfois beaucoup de commande et d'options, il peut être laborieux de tout taper à la main. Heureusement, il y a docker-compose qui permet de gérer rapidement plusieurs containers en une seule ligne de commande.
-
Dans un répertoire, créer le dossier
~/entrainement/prenom/exercice5
. Y créer le fichierdocker-compose.yml
. -
Se baser sur la documentation pour créer le
docker-compose.yml
. Créer un service nommé app. Utilisé l'image que vous avez précédement créé. -
Lancer
docker-compose up
. Tester votre server comme précedement. -
Dans le
docker-compose.yml
ajouter une ligne pour modifier la variable d'environnement PORT pour mettre3002
. Relancerdocker-compose up
puis tester à nouveau aveccurl http://172.17.0.X:3002
.
6. Objectifs : Utiliser le reverse proxy avec Nginx
Nous avons maintenant un service web qui répond localement à mes requêtes. Je veux maintenant l'ouvrir à l'extérieur par l'intermédiaire d'un reverse proxy. Il en existe quelques uns très populaire en ce moment qui font le boulot. Pour cet exercice nous avons choisi d'utiliser Nginx.
-
Explorer le dossier
/etc/nginx/sites-available
. Y créer un fichier de configuration avec le nomprenom.caracals.org
. -
Vous inspirez des autres fichiers présents pour écrire votre fichier. Attention,
sudo
est necessaire pour la modification de ce dossier. Laisser les parties#certbot
-
Créer un lien symbolique pour activer votre configuration.
sudo ln -s /etc/nginx/sites-availables/prenom.caracals.org /etc/nginx/sites-enabled/prenom.caracals.org
. -
On ajoute rapidement un certificat de sécurité pour assurer les échanges en https avec l'outil CertBot de l'EFF. Lancer la commande
sudo certbot --nginx
. Suivre la console pour sécuriser votre nom de domaine. -
Relancer le service nginx avec la commande
sudo nginx -s reload
. -
Depuis votre ordinateur se rendre sur
https://prenom.caracals.org
.
Voilà, vous venez d'auto héberger votre premier site web :D