Date : 27 janvier 2021
Dans ce module, nous verrons comment :
nginx)PRÉ-REQUIS : Un compte d’accès à hub.docker.com.
Lors du dernier module, nous avons apprivoisé quelques commandes de base sur des conteneurs d’images préexistantes. Pourquoi ne pas créer notre propre image à partir du conteneur d’une de ces images?
Mais avant, un petit retour en arrière sur les commandes de base :
# Afficher l'aide de docker
docker
# Afficher l'aide d'un sous-système docker
docker container --help
docker container ls
# Recherche d'une image sur hub.docker.com
docker search arch
# Obtenir une image de hub.docker.com
docker pull archlinux
# Démarrer un conteneur en arrière-plan
docker run -d archlinux
# Le conteneur archlinux n'a pas de tâche en boucle, il va donc s'arrêter.
# Démarrer un conteneur en mode interactif
docker run -it archlinux
# Installer nano dans le conteneur archlinux
pacman -Sy nano
nano hello.txt
exit
# La commande 'exit' provoque l'arrêt du conteneur
# Il est possible de sortir sans provoquer l'arrêt avec CTRL P + Q
docker ps
docker ps -a
# Démarrer un conteneur arrêté - sans créer une nouvelle instance
docker start ID-archlinux
# Note: restart = stop/start
docker attach ID-archlinux
exit
# NOTE: le conteneur s'est arrêté.
# Exécuter, en mode interactif, une commande d'un conteneur
docker start ID-archlinux
docker exec -it ID-archlinux /usr/bin/bash
exit
docker ps
# Note: le conteneur roule toujours car 'exec' s'exécute dans une file différente.
# Renommer un conteneur
docker rename [name-archlinux|ID] nouveauNom
# Effacer un conteneur
docker rm ID-conteneur
# Effacer une image
docker rmi ID-Image
# Exécuter un conteneur avec une fusion de ports IP
docker run -d --name web1 -p 80:80 nginx
docker run -d --name web2 -p 81:80 nginx
# Tester le serveur web1
curl localhost:80
# Afficher les logs d'un conteneur
docker logs web1
# Afficher les statistiques des conteneurs - CRTL C pour quitter.
docker stats
# Lister le ID de tous les conteneurs d'une image
docker ps -a --filter="ancestor=nginx"
# Lister le ID de tous les conteneurs dont le nom est comme:
docker ps -a -q --filter="name=web"
# Arrêter tous les conteneurs d'une image
docker stop $(docker ps -a -q --filter="name=web")
# Effacer tous les conteneurs d'une image
docker rm $(docker ps -a -q --filter="ancestor=nginx")
Ici, nous nous apprêtons à créer un dépôt de conteneurs pour un projet à venir. Nous pourrons, par la suite, y archiver toutes les versions du projet.
1.0 – En utilisant votre compte personnel, connectez-vous à hub.docker.com.
1.1 – Sélectionner l’item menu ‘Repositories’, suivi de l’option ‘Create …’.
1.2 – Renseigner les informations de départ du nouveau dépôt 420-4d4.
Note : Que des caractères minuscules dans le nom. 1.3 – Consulter le sommaire du nouveau dépôt.
nginxÉvidemment, ne voulant pas avoir à programmer, à partir de rien, un serveur web 😉, nous allons bâtir notre fondation sur l’image de nginx.
web01 à partir de l’image nginx:latestdocker run -d --name web01 -p 80:80 nginx
web01docker exec -it web01 /bin/bash
nano dans le conteneurapt update
apt install nano
/usr/share/nginx/html/index.htmlrm /usr/share/nginx/html/index.html
nano /usr/share/nginx/html/index.html
<!DOCTYPE html>
<html>
<head>
<title>Bienvenue au cours 420-4D4</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
h1 { <span style="color: #6f82bf;">color: #6f82bf;</span>
font-weight: normal;
}
</style>
</head>
<body>
<h1>Bienvenue au cours 420-4D4</h1>
<p>Si vous voyez cette page, c'est que tout va bien!</p>
<p>L'image docker est disponible avec 'docker pull VOTRECOMPTE/420-4d4:1.0'
<br/><br/>
Pour lancer le conteneur:<br/><br/>
<strong> docker run -it -d -p 80:80 --name serveurweb VOTRECOMPTE/420-4d4:1.0</strong><br>
<br/><a href="http://ve2cuy.com/420-4d4b/">Contenu du cours</a>.</p>
<p><em>Ceci est la version 1.0 de l'application<br/><br/>(c) Votre prénom nom - 2023</em></p>
</body>
</html>
exit
Note : L’exécution du conteneur ne sera pas arrêtée par cette opération, car nous nous sommes connectés avec la commande
exec.
À ce point, nous avons adapté un conteneur à nos besoins. Il est temps d’en faire une image qui pourra être, par la suite, distribuée à l’infini.
votreNomDomaineDocker/nomDépôt:version(tag))docker ps
docker commit web01 VOTRECOMPTE/420-4d4:1.0
docker images
hub.docker.comPour être en mesure de pouvoir publier notre nouvelle image sur hub.docker, il faut obligatoirement s’authentifier, à partir de votre fenêtre terminal ou, alternativement, via l’application ‘docker desktop’.
docker login --username=VOTRECOMPTE
password: FOURNIRLEMOTDEPASSE (ou TOKEN)
Au besoin, il faut créer un « Access Token ».
push) l’image vers le dépôt 420-4d4 sur hub.docker.comMaintenant que nous sommes authentifiés au dépôt docker il ne nous reste plus qu’à publier la nouvelle image :
docker push VOTRECOMPTE/420-4d4:1.0
hub.docker.hub.docker.com88docker run -d -p 88:80 --name web-test VOTRECOMPTE/420-4d4:1.0
Tester l’accès à la page web via le port exposé (par exemple : http://localhost:88).
Nous avons maintenant accès, à partir d’un dépôt hub.docker, à l’image personnalisée d’un serveur nginx, qui propose une page d’accueil sur mesure ainsi que l’éditeur de texte nano.
<span style=”color: #ff0000;”>TRISTESSE</span> – À chaque fois que nous recréons un conteneur à partir d’une image, nous retrouvons le système de fichiers dans son état de départ. Cela pose un problème non négligeable lors des mises à jour de l’image.
Pour contrer cet état de fait, docker propose les stockages persistants. Grâce à une série d’exemples, voyons comment cela fonctionne.
mkdir /home/alain/docker-folder/siteweb
info.html dans le répertoire de l’étape 5.1<center><h1>Vive le sirop d'érable ;-)</h1></center>
L’option -v (volume) est utilisée pour lier le répertoire local au répertoire des fichiers web de nginx dans le conteneur (/usr/share/nginx/html).
# Sous Linux :
docker run --name mon-nginx -v /home/alain/docker-folder/siteweb:/usr/share/nginx/html:rw -d -p 8080:80 nginx
# Sous Windows :
docker run --name mon-nginx -v C:\Users\4204D4\semaine02:/usr/share/nginx/html:rw -d -p 8080:80 nginx
info.html dans un fureteurhttp://localhost:8080/info.html
Wow, quelle merveilleuse page web ☺️ :
Dans un dossier de téléchargement, par exemple, : /home/$USER/download,
git clone https://github.com/creativetimofficial/bootstrap4-cheatsheet.git
mv bootstrap4/ /dossier/web/conteneur/bs
Tester l’accès à l’application via le volume monté : http://localhost:8080/bs/
Wow, vraiment làlà, une merveilleuse page web 👍 :
Note : Nous n’avons pas à publier une nouvelle version de l’image de l’application. Les nouveaux contenus sont stockés localement.

labo-01.apache officielle.apt update, apt install, …8080 – le bootstrap-cheat-sheet doit s’afficher sans fournir de nom de dossier dans l’URL.VotrenomDomaineDocker/labo-01:latest.rmi.Document rédigé par Alain Boudreault © 2021-2026
Version 2025.12.03.1
Site par ve2cuy