ISI-L3CS TP 3 : Docker 2021-2022
1. Objectif du TP :
L’objectif principal de ce TP est de se familiariser avec les aspects nécessaires pour le
déploiement d’applications virtuelles en exploitant la technologie des containers. Cette
technique de virtualisation sera exploitée et exécutée en utilisant le gestionnaire de containers
Docker. Pour ce faire, ce TP est organisé comme suit :
• Mise en place et installation de Docker (sous Linux)
• Test est comprendre une liste de commandes
• Manipulation d’un conteneur web
2. Les Prérequis de ce TP
• Disposer des droits d'administration sur un OS Ubuntu (20.04)
• Disposer d'une connexion à Internet configurée et activée.
3. Compte-rendu :
Il est demandé de tester les commandes et d’élaborer un compte-rendu sur les 7 Activités
et de l'envoyer par email à la fin de la séance.
4. Présentation de la technologie:
Docker est une plateforme permettant de lancer certaines applications dans des conteneurs
logiciels.
Docker est un outil qui peut empaqueter une application et ses dépendances dans un
conteneur isolé, qui pourra être exécuté sur n'importe quel serveur. Il ne s'agit pas
de virtualisation, mais de conteneurisation, une forme plus légère qui s'appuie sur certaines
parties de la machine hôte pour son fonctionnement. Cette approche permet d'accroître la
flexibilité, la scalabilité et la portabilité d’exécution d'une application, laquelle va pouvoir
tourner de façon fiable et prévisible sur une grande variété de machines hôtes, que ce soit sur
la machine locale, un cloud privé ou public, etc.
Techniquement, Docker étend le format de conteneur Linux standard, LXC, avec
une API de haut niveau fournissant une solution pratique de virtualisation qui exécute
les processus de façon isolée. Pour arriver à ses fins, Docker utilise entre autres
LXC, cgroups et le noyau Linux lui-même1. Contrairement aux machines virtuelles
traditionnelles, un conteneur Docker n'inclut pas de système d'exploitation, mais s'appuie au
contraire sur les fonctionnalités du système d’exploitation fournies par la machine hôte.
VM vs Container Schéma des interfaces de Docker
1
5. Activités :
- Affichage des paquets comportant ‘docker’ , installés ou non, disponibles dans la liste
mise en cache des paquets des dépôts APT configurés :
ishak@ishak-VirtualBox:~$ apt-cache search [Link]
docker-doc - environnement d’exécution de conteneurs Linux – documentation
[Link] - environnement d’exécution de conteneurs Linux
python3-docker - Python 3 wrapper to access [Link]'s control socket
ruby-docker-api - Ruby gem to interact with [Link] remote API
- Installation de Docker
ishak@ishak-VirtualBox:~$ sudo apt-get install [Link]
- Affichage des instances :
Instance en exécution
ishak@ishak-VirtualBox:~$ docker ps
Toutes les instances
ishak@ishak-VirtualBox:~$ docker ps -a
- Lancement d’un conteneur web
ishak@ishak-VirtualBox:~$ docker run -tid -p 8080:80 --name webcontainer nginx:latest
ishak@ishak-VirtualBox:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c646d4eed813 nginx:latest "/docker-entrypoint.…" 21 minutes ago Up 21 minutes [Link]:8080->80/tcp, :::8080->80/tcp webcontainer
- Afficher les détails du conteneur
ishak@ishak-VirtualBox:~$ docker inspect webcontainer
Pour formater l’affichage des informations vous pouvez utiliser : --format
Exemple : docker inspect --format ‘{{ .[Link] }}’ webcontainer
- Afficher les images disponibles sur notre Machine : docker image ls
- Supprimer le conteneur avec la commande : docker rm webcontainer
- Lancer une nouvelle instance de l’image nginx:latest
Activité1 : Quelle est la différence entre le premier et le deuxième lancement du conteneur.
Exécution de commande shell dans le conteneur :
ishak@ishak-VirtualBox:~$ docker exec -ti webcontainer sh
Activité 2 : Modifier la page d’accueil de votre serveur web
- Afficher les commandes de gestion des volumes
ishak@ishak-VirtualBox:~$ docker volume
Activité 3 : Créer un volume et lancer un conteneur qui utilise ce volume
docker run -tid --name hichem -p 8080:80 --mount source=<nomVolume>,target=/usr/share/nginx/html nginx:latest
Activité 4 : Modifier le fichier [Link] et l’afficher sur le navigateur.
- Créer une variable d’environnement et l’afficher
docker run -tid --name <nom_conteneur> --env MYVAR="123456" <nom_image :version>
docker exec -it <nom_conteneur> /bin/bash
#env
2
- Créer des variables d’environnement à partir d’un fichier
docker run -tid --name <nom_conteneur> --env-file <nom_fichier.lst> <nom_image :version>
- Lancer un conteneur avec un hostname personalisé
docker run -tid --name <nom_conteneur> --hostname <nom> <nom_image :version>
- Création d’une image à base d’un conteneur
ishak@ishak-VirtualBox:~$docker commit -m "Création de mon image" 0c8b91807eca
hichemimg:v0.1
sha256:0908830aa2f8973079874d24883bbfdafe0abd8a1efeb90732ddaaeb5ce3791c
ishak@ishak-VirtualBox:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
hichemimg v0.1 0908830aa2f8 About a minute ago 72.8MB
Activité 5 : Créer une image à partir d’un conteneur d’un serveur web avec un hostname personnalisé.
- Création d’une image par un dockerfile
Editer le fichier : vim dockerfile
Puis taper les lignes suivants et enregistrer le fichier
FROM ubuntu:latest
MAINTAINER hichem
RUN apt-get update \
&& apt-get install -y vim git \
&& apt-get clean \
&& apt-get clean \
&& rm -rf /var/lib/apt/listes/* /tmp/* /var/tmp/*
- Lancement la commande build : docker build -t monimage:latest .
- Lancement la commande history : history monimage:latest
Activité 6 : Lancer un conteneur à partir de l’image créée et vérifier le contenu du conteneur
- Effacer le conteneur et l'image :
ishak@ishak-VirtualBox:~$ docker rm -f testmonimage
ishak@ishak-VirtualBox:~$ docker rmi monimage:v0.0
Activité 7 : Utiliser les commandes suivantes pour archiver une image, voir le contenu du
fichier archive puis récupérer une image à partir d’un fichier archive.
Ajout des commandes pour faire des affichages de vérification.
docker save -o [Link] <nom_image :version>
mkdir dtar
tar -C dtar/ -xvf [Link]
cd dtar
tree
docker rmi <nom_image :version>
docker load -i [Link]
Bon Travail !
3