Docker : l'essentiel
Monter un volume de données persistant (option –volume)
Exemple
# Persister les données du conteneur sur l'hôte
docker run -it -v /host-data:/data ubuntu
Exercice
Créer un conteneur ubuntu qui monte le répertoire /etc
de l’hôte dans /hack/etc
.
-
Exécutez la commande suivante pour lancer un conteneur Ubuntu en montant le répertoire
/etc
de l’hôte :docker run -it -v /etc:/hack/etc ubuntu
-
Vérifiez l’accès aux fichiers
/etc
de l’hôte depuis l’intérieur du conteneur en listant les fichiers du répertoire/hack/etc
:ls /hack/etc
-
Vous devriez voir les fichiers et répertoires présents dans
/etc
de l’hôte.
Publier un port réseau (option –publish)
Exemple
# Mapper le port 80 du conteneur au port 8080 de l'hôte
docker run -it -p 8080:80 ubuntu netcat -l -p 80
Exercice
Créer un conteneur ubuntu qui exécute netcat -l -p 80
et expose le port 808<ID>
sur l’hôte.
-
Remplacez
<ID>
par un numéro unique (par exemple 1 si vous êtesk8s1
) et lancer un conteneur Ubuntu avec Netcat : -
Vérifiez que le conteneur est en cours d’exécution :
-
Testez la connexion depuis l’hôte en utilisant Netcat :
-
Si la connexion est établie, tapez quelque chose dans le terminal et vous devriez voir la même chose dans le conteneur (vous pouvez vérifier les logs avec
docker logs netcat
).
Remarque
Utilisez CtrlẐ
puis bg
pour mettre la commande netcat
précédente en tâche de fond.
Cas pratique
Partie 1: Exécuter un conteneur
-
Démarrez un conteneur nommé
mariadbtest
avec le mot de passe root pour MySQL défini surmypass
: -
Vérifiez que le conteneur est en cours d’exécution :
-
Optionnellement, vous pouvez ajouter des options pour
mysqld
comme indiqué dans l’exemple ci-dessous.
Partie 2: Accéder interactivement à un conteneur
-
Accédez au conteneur
mariadbtest
via bash : -
Mettez à jour les paquets et installez vim :
-
Vérifiez que vim est installé en tapant
vim
dans le terminal du conteneur.
Partie 3: Créer une image de conteneur pour exécuter un serveur web python
Création de l’image
Allez dans le répertoire de l’exercice :
git clone https://github.com/k8s-school/k8s-school
cd k8s-school/labs/0_docker/webserver
Trouvez la commande pour construire le conteneur et le taguer avec le label webserver<ID>
.
-
Construisez le conteneur et taguez-le avec le label
webserver<ID>
(remplacez<ID>
par un numéro unique) : -
Utilisez l’exemple de
Dockerfile
dans le répertoire actuel et mettez-le à jour petit à petit en démarrant par le haut du fichier.
Exécution du conteneur
Analyser le programme python hello.py
à l’intérieur du conteneur pour trouver le port à exporter.
-
Lancer le conteneur en tant que daemon et publier le port 800 sur l’hôte :
-
Vérifiez que le conteneur est en cours d’exécution et accédez au site web
-
Supprimez le conteneur :
-
Lancez le conteneur en tant que daemon, publiez le port 800 sur l’hôte, et utilisez le fichier html stocké sur la machine hôte :
-
Vérifiez que le conteneur est en cours d’exécution et que le fichier HTML est servi correctement.