| .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 ubuntupour 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 runpour 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/exercice2du serveur sur le répertoire/datadu 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
/datadu qui s'exécutera dans le container. -
Ecrire le
Dockerfileen 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 buildavec 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
/datasur~/entrainement/prenom/exercice3comme 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.jsest appelé à l'exécution de l'image. Ne pas oublier d'ajouter la commandenpm ipour l'installation des dépendances nodejs. -
Lancer un container de cette image avec
docker run. -
Pour connaitre l'ip de votre container taper
docker inspectsuivi 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.ymlajouter une ligne pour modifier la variable d'environnement PORT pour mettre3002. Relancerdocker-compose uppuis 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,
sudoest 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