Académique Documents
Professionnel Documents
Culture Documents
Objectifs :
Se familiariser avec la conteneurisation en utilisant Docker, une forme de virtualisation au
niveau du noyau.
• Installation de Docker
• Utilisation de la commande Docker
• Test des images Docker
• Gestion des conteneurs Docker
• Transférer les modifications d'un conteneur vers une image Docker
• Pushing des images Docker vers le Docker Hub
• Construction des images à l’aide de Dockerfile
Outils :
• Oracle VM VirtualBox: https://www.virtualbox.org/wiki/Downloads
• Machine virtuelle Ubuntu desktop: https://ubuntu.com/download/desktop
Ou
• Docker desktop: https://docs.docker.com/desktop/install/windows-install/
Docker :
Le logiciel Docker est une technologie de conteneurisation qui permet la création et
l'utilisation de conteneurs Linux.
En particulier, il permet de :
- faire fonctionner plusieurs processus dans un environnement isolé et/ou limité ;
- installer et de configurer des logiciels dans cet environnement ;
- gérer différentes images et de les distribuer.
Avec la technologie Docker, les conteneurs peuvent être traités comme des machines
virtuelles très légères et modulaires. En outre, ces conteneurs offrent une grande flexibilité. En
fait, les conteneurs peuvent être crées, déployés, copiés et déplacés d'un environnement à un
autre, ce qui permet d'optimiser les applications pour le cloud.
Docker étend le format de conteneur Linux standard avec une API de haut niveau
fournissant une solution de virtualisation qui exécute les processus de façon isolée.
Contrairement aux machines virtuelles traditionnelles, un conteneur Docker n'inclut pas de
système d'exploitation, s'appuyant sur les fonctionnalités du système d’exploitation fournies par
l'infrastructure sous-jacente.
Attention : Ce n’est pas de la virtualisation au sens général.
La technologie de conteneur de Docker peut être utilisée pour étendre des systèmes
distribués de façon à ce qu'ils s'exécutent de manière autonome depuis une seule machine
physique ou une seule instance par nœud. Cela permet aux nœuds d'être déployés au fur et à
mesure que les ressources sont disponibles, offrant un déploiement transparent et similaire aux
PaaS pour des systèmes comme Apache Cassandra, Riak ou d'autres systèmes distribués.
Conteneurs VS machines virtuelles
Pour une machine virtuelle, il faut lui créer et préciser la RAM à utiliser, le nombre de
CPU, un disque dur virtuel pour installer un OS, etc. En fait, une machine virtuelle dispose de
ses propres ressources, et n'a aucune conscience d'être virtualisée.
Pour les conteneurs c'est différent, on n'installe pas d'OS à proprement parler, mais un rootfs
(root filesystem) qui est appelé image, qui contient les librairies et les binaires nécessaires. Le
noyau quant à lui, est partagé avec le système hôte. Nous pouvons évidemment limiter les
ressources des conteneurs.
1
Les machines virtuelles et les conteneurs ont leurs avantages et bien évidemment leurs
inconvénients. Par exemple lancer ou créer un conteneur est vraiment plus rapide que lancer
une VM. Mais une VM offre une meilleure isolation. Docker est simplement utilisé dans une
VM pour uniformiser une application entre les différents environnements (prod, préprod,
intégration, etc). Il arrive même de trouver un conteneur par VM.
2. Ensuite, installez quelques packages prérequis qui permettent à apt d'utiliser les packages
via HTTPS :
sudo apt install apt-transport-https ca-certificates curl software-
properties-common
2
3. Ajoutez ensuite la clé GPG du dépôt officiel de Docker à votre système :
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --
dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
4. Ajouter le dépôt Docker aux sources APT :
echo "deb [arch=$(dpkg --print-architecture) signed-
by=/usr/share/keyrings/docker-archive-keyring.gpg]
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
5. Mettez à nouveau à jour votre liste de paquets existante pour que l'ajout soit reconnu :
sudo apt update
6. Assurez-vous que vous êtes sur le point d'installer à partir du repo Docker au lieu du repo
Ubuntu par défaut :
apt-cache policy docker-ce
7. Finalement, installez Docker:
sudo apt install docker-ce
La sortie devrait être similaire à la suivante, montrant que le service est actif et fonctionne
En installant Docker, vous disposez non seulement du service Docker (daemon), mais
aussi de l'utilitaire de ligne de commande Docker, ou client Docker.
II. Exécuter la commande Docker sans Sudo (optionnel)
Par défaut, la commande Docker ne peut être exécutée que par l'utilisateur root ou par
un utilisateur du groupe Docker, qui est automatiquement créé lors du processus d'installation
de Docker. Si vous essayez d'exécuter la commande docker sans la préfixer avec sudo ou sans
être dans le groupe docker, vous obtiendrez une sortie comme celle-ci :
Si vous voulez éviter de taper sudo à chaque fois que vous exécutez la commande docker,
ajoutez votre nom d'utilisateur au groupe docker :
sudo usermod -aG docker ${USER}
Pour appliquer la nouvelle appartenance à un groupe, déconnectez-vous du serveur et
reconnectez-vous, ou tapez ce qui suit :
su - ${USER}
Vous serez invité à saisir le mot de passe de votre utilisateur pour continuer.
Confirmez que votre utilisateur est maintenant ajouté au groupe docker en tapant :
groups
Si vous avez besoin d'ajouter un utilisateur au groupe Docker pour lequel vous n'êtes pas
connecté, déclarez ce nom d'utilisateur explicitement en utilisant :
sudo usermod -aG docker username
3
L'utilisation de la commande docker consiste à lui faire passer une chaîne d'options et de
commandes suivie d'arguments.
La syntaxe prend cette forme : $docker [option] [command] [arguments]
• Pour voir toutes les sous-commandes possibles, tapez la commande : $docker
• Pour voir les options disponibles pour une commande spécifique, tapez :
$docker docker-subcommand –help
• Pour voir les informations sur Docker à l'échelle du système, utilisez : $docker info
IV. Images Docker
L’objectif de cette section est de tester quelques images docker et les faire fonctionner.
Commençons d’abord par la présentation des images Docker. Les conteneurs Docker sont
construits à partir d'images Docker. Par défaut, Docker tire ces images de Docker Hub, un
registre Docker géré par Docker, l'entreprise à l'origine du projet Docker. Tout le monde peut
héberger ses images Docker sur Docker Hub, de sorte que la plupart des applications et des
distributions Linux dont vous aurez besoin y auront des images hébergées.
1. Pour tester la possibilité d’accès et de téléchargement des images de Docker Hub, tapez:
sudo docker run hello-world
Si vous aurez la sortie suivante, alors Docker fonctionne correctement :
2. Pour lister les images qui ont été téléchargées sur votre ordinateur, tapez :
sudo docker images
3. Pour rechercher des images disponibles sur Docker Hub, on peut utiliser la commande
docker avec la sous-commande search. Par exemple, pour rechercher l'image Ubuntu,
tapez :
docker search ubuntu
Le script va parcourir Docker Hub et retourner une liste de toutes les images dont le
nom correspond à la chaîne de recherche.
Dans ce cas, la sortie sera similaire à celle-ci :
4
4. Exécutez la commande suivante pour télécharger l'image officielle d’ubuntu
docker pull ubuntu
La sortie ressemblera à ce qui suit :
5. Une fois qu'une image a été téléchargée, nous pouvons alors lancer un conteneur en
utilisant l'image téléchargée avec la sous-commande run. Démarrons alors notre premier
container ubuntu, à l’aide de la commande suivante :
docker run -it ubuntu
5
Dans ce TP, jusqu’à maintenant, nous avons lancé deux conteneurs ; un à partir de l'image
hello-world et un autre à partir de l'image ubuntu. Les deux conteneurs ne sont plus actifs, mais
ils existent toujours sur notre machine.
2. Pour lister tous les conteneurs, actifs et inactifs, exécutez docker ps avec le commutateur
-a :
sudo docker ps -a
3. Pour démarrer un conteneur arrêté, utilisez docker start, suivi de l'ID du conteneur ou de
son nom. Démarrons le conteneur basé sur Ubuntu avec l'ID "1c08a7a0d0e4"
docker start 1c08a7a0d0e4
4. Pour arrêter un conteneur en cours d'exécution, utilisez docker stop, suivi de l'ID ou du
nom du conteneur. Cette fois, nous utiliserons le nom que Docker a attribué au conteneur,
qui est "dazzling_taussig"
docker stop dazzling_taussig
5. Pour arrêter un conteneur en cours d'exécution, utilisez docker stop, suivi de l'ID ou du
nom du conteneur. Cette fois, nous utiliserons le nom que Docker a attribué au conteneur,
à savoir dazzling_taussig.
docker stop dazzling_taussig
6. Une fois que vous avez décidé que vous n'avez plus besoin d'un conteneur, retirez-le
avec la commande docker rm, en utilisant à nouveau l'ID ou le nom du conteneur.
Utilisez la commande docker ps -a pour trouver l'ID ou le nom du conteneur associé à
l'image hello-world et supprimez le.
docker rm adoring_kowalevski
VI. Transférer les modifications d'un conteneur vers une image Docker
Lorsque vous démarrez une image Docker, vous pouvez créer, modifier et supprimer
des fichiers comme vous le feriez avec une machine virtuelle. Les modifications que vous
apportez ne s'appliquent qu'à ce conteneur. Vous pouvez le démarrer et l'arrêter, mais une fois
que vous l'aurez détruit avec la commande docker rm, les modifications seront définitivement
perdues.
Cette section vous montre comment sauvegarder l'état d'un conteneur en tant que nouvelle
image Docker.
Après avoir installé Node.js dans le conteneur Ubuntu, vous avez maintenant un conteneur
fonctionnant à partir d'une image, mais le conteneur est différent de l'image que vous avez
utilisée pour le créer. Mais vous pourriez vouloir réutiliser ce conteneur Node.js comme base
pour de nouvelles images plus tard.
6
Ensuite, vous validez les modifications dans une nouvelle instance d'image Docker à l'aide de
la commande suivante.
docker commit -m "added Node.js" -a "username" d9b100f2f636
username/ubuntu-nodejs
Lorsque vous livrez une image, la nouvelle image est enregistrée localement sur votre
ordinateur. Plus loin dans ce tutoriel, vous apprendrez comment pousser une image vers un
registre Docker comme Docker Hub afin que d'autres puissent y accéder.
En listant à nouveau les images Docker, vous verrez la nouvelle image, ainsi que l'ancienne
image dont elle est dérivée :
docker images
Après avoir transféré une image dans un registre, celle-ci devrait apparaître dans le tableau de
bord de votre compte, comme dans l'image ci-dessous.
L’objectif de cette section est de créer une image à partir d’un fichier de description
appelé Dockerfile. Pour atteindre un tel objectif, suivez les étapes détaillées par la suite.
Créez le répertoire apache
mkadir apache && cd apache
Dans le répertoire, créez ou copiez les fichiers que vous souhaitez inclure dans l'image.
Par exemple, incluez une nouvelle page web en créant un fichier index.html dans un
éditeur de texte :
7
nano index.html
Ensuite, créez le fichier Dockerfile pour la nouvelle image. Dockerfile contient toutes les
instructions nécessaires à Docker pour assembler une image spécifique.