- Découvrir la notion de conteneur et la comparer à la virtualisation.
- Apprendre les bases de Docker (installation, commandes principales).
- Prendre en main quelques commandes Linux pour manipuler le système de fichiers.
- Lancer des conteneurs simples (hello-world, Nginx).
- Répondre aux questions écrites dans un fichier de rendu
- Captures d’écran ou extraits de commandes pour justifier vos résultats (ex.
docker ps
,uname -a
, etc.).
-
Qu’est-ce qu’une conteneurisation ?
- Comparez brièvement la conteneurisation (Docker, LXC) à la virtualisation (VM).
- Quels sont les avantages de la conteneurisation ?
-
Quelles sont les principales différences entre un conteneur et une machine virtuelle ?
- Pourquoi dit-on qu’un conteneur est plus léger qu’une VM ?
- Où se situe la couche système (kernel) dans chaque cas ?
-
Inscrivez-vous sur Play with Docker
- Ou, si vous le pouvez, installez Docker sur votre PC
- Vérifier la version de Docker (si vous êtes en local ou sur PWD) :
docker version docker info
- Que constatez-vous ? Qu’indiquent ces commandes ?
Si vous utilisez Play with Docker ou Katacoda, vous disposerez d’un terminal en ligne.
Pour ceux qui utilisent Docker directement sur leur PC, vous pouvez lancer un conteneur Linux allégé pour faire les exercices, par exemple :
docker run -it --name sandbox --rm ubuntu bash
- Cette commande lance un conteneur Ubuntu interactif (
-it
) qui s’effacera (--rm
) une fois arrêté. - Vous pourrez alors exécuter les commandes Linux ci-dessous dans cet environnement.
- Tapez :
uname -a
- À quoi correspond chaque mot affiché ?
- Que signifie l’option
-a
?
-
Notions de base dans le système :
- root directory (
/
) - home directory (
~
) - parent directory (
..
) - working directory (
.
)
Questions :
- Définissez chaque terme et le rôle du symbole associé.
- Qui a accès à chacun de ces dossiers ?
- À quoi servent-ils ?
- Les quels sont relatifs ou absolus ?
- root directory (
-
Commandes utiles :
pwd
,cd
,ls
,mkdir
,sudo
- Testez-les pour naviguer entre les dossiers, créer et supprimer des répertoires.
-
Exercice :
- Allez dans
/var
, créez un dossierlearning
, puis entrez dedans. - Notez les commandes utilisées.
- Allez dans
-
Commandes à connaître :
nano
ouvi
(éditeur de texte)touch
(crée un fichier vide)mv
(renommer/déplacer)cp
(copier)rm
(supprimer)
-
Exercice :
- Créez un fichier
COURT-1
(sans extension) viatouch
ounano
. - Dans ce fichier, écrivez un petit texte (par exemple un compliment sur votre intervenant).
- Enregistrez le fichier (
nano
, puisCtrl+O
,Ctrl+X
). Ouvi
avec:wq
. - Renommez
COURT-1
enCOURS-1
. - Revenez rapidement au dossier de départ (en utilisant une commande de 4 caractères max).
- Copiez le dossier
/var/learning
dans un sous-dossiercours
du dossierhome
. - Supprimez enfin le dossier
learning
de/var
(sans changer de dossier).
- Créez un fichier
-
Quelles sont les commandes que vous avez tapées ?
- Indiquez-les dans votre rendu.
-
Recréez l’architecture suivante (via des commandes
mkdir
successives) :└── a ├── a ├── b │ ├── 1 │ └── 2 └── c
(Vous pouvez utiliser
mkdir -p a/b/1
etc. pour la créer rapidement.) -
Chemin relatif :
- Vous êtes dans
/a/b/2
. Que se passe-t-il après ?cd ../../a/../b/../b/1
- Dans quel dossier vous retrouvez-vous ?
- Vous êtes dans
- Qu’est-ce qu’une variable d’environnement ?
- Tapez :
printenv
- Que constatez-vous ?
- Exécutez :
export EDITOR=nano
- Refaire
printenv
. Qu’est-ce qui a changé ? - À quoi sert
export
? - Et la commande
unset
?
- Refaire
-
Rappel : un script bash commence par
#!/bin/bash
et a souvent une extension.sh
. -
Exercice :
- Créez un dossier
exercices
, puis un fichierexercice1.sh
contenant :echo Bonjour
- Exécutez le fichier :
./exercice1.sh
- Que se passe-t-il ? Pourquoi parfois ça ne marche pas directement ?
- Créez un dossier
-
Modifiez les permissions :
chmod 777 exercice1.sh
- À quoi sert
chmod
? - Que signifient les chiffres (ex.
7
pour l’utilisateur,7
pour le groupe,7
pour les autres) ?
- À quoi sert
Avant d'aller plus loin, prenons un instant pour comprendre ce qu'est Docker, son origine et les notions essentielles autour des conteneurs.
- Docker a été créé en 2013. Il est écrit en Go, distribué sous licence Apache 2.0 et aussi sous licence propriétaire.
- Docker était basé sur la technologie LXC (Linux Container), maintenant sur runc, qui permet d’isoler des processus via des conteneurs.
- Un conteneur partage le noyau (kernel) du système hôte. Il est plus léger, rapide à lancer, et consomme peu de ressources.
- Une machine virtuelle embarque un OS complet avec son propre noyau, ce qui la rend plus lourde.
Le mot "docker" vient du métier de débardeur, un ouvrier qui s'occupe du chargement/déchargement de conteneurs dans un port.
L’analogie est directe : Docker manipule aussi des conteneurs.
Dockerfile
: un plan pour construire une image Docker.- Chaque ligne du Dockerfile correspond à une étape de compilation intermédiaire.
Image
: équivalent d’une classe en programmation. Elle est figée, prête à être instanciée.Container
: une instance d’une image. C’est ce qui tourne réellement.
Dockerfile ≠ Image ≠ Container
- Écrivez un script
exercice2.sh
qui affiche 5 mots (ex. "J'aime", "les", "cours", "d'administration", "système"), chacun sur une ligne séparée (faire des sauts de lignes). - Essayez de le faire en une ligne de script.
Indice : Vous pouvez utiliser plusieurs commandes
echo
ou un seulecho
.
- Écrivez un script
exercice3.sh
qui demande à l’utilisateur le nom d’un fichier ou d’un dossier. - Le script doit indiquer s’il s’agit d’un fichier ou d’un répertoire.
- Ensuite, il doit exécuter
ls -l
dessus pour lister son contenu en mode détaillé.
Indice :
[[ -f /etc/passwd ]] && echo "This file exists!"
-f
teste si c’est un fichier.-d
teste si c’est un dossier.
-
Installation / Accès :
- Si vous travaillez en local, vérifiez que Docker est installé (
docker version
). - Sinon, lancez une instance sur Play with Docker.
- Si vous travaillez en local, vérifiez que Docker est installé (
-
Commande test :
docker run hello-world
- Que se passe-t-il ? Quelles étapes se produisent en arrière-plan ?
-
Lister les conteneurs et images :
docker ps
,docker ps -a
docker images
-
Exercice rapide :
- Lancez un conteneur Nginx sur le port 8080 :
docker run --name web -p 8080:80 nginx
- Ou en mode détaché :
docker run -d --name web -p 8080:80 nginx
- Ouvrez votre navigateur (ou l’URL fournie par Play with Docker), vérifiez que ça fonctionne.
- Explorez (
docker logs web
,docker exec -it web bash
). - Stoppez et supprimez le conteneur (
docker stop web
,docker rm web
).
- Lancez un conteneur Nginx sur le port 8080 :
- Quelle est la différence entre un conteneur et une machine virtuelle ?
- À quoi sert la commande
docker run
? - Quel est l’avantage principal de la conteneurisation pour le déploiement d’applications ?
- Vous avez découvert ou révisé les commandes Linux de base (navigation, édition, droits).
- Vous avez compris les grands principes de la conteneurisation vs la virtualisation.
- Vous avez lancé vos premiers conteneurs Docker (hello-world, nginx).
Prochaine étape : création de vos propres images (Dockerfile), gestion de volumes et réseaux, orchestrations simples, etc.
Bon courage !