Technologie Docker
Technologie Docker
Technologie Docker
DOCKER
M Malick GAYE
TABLE OF CONTENTS
01 02 03
Docker et Decouverte et
iNTRODUCTION
virtualisation installation
Differences virtialisation et C’est quoi un coneteneur;
Introduction du cours
conteneurisation comment l’installer?
04 05 06
Images Conteneurs Reseau
Fonctionnement manipulation des Fonctionnement manipulation des Fonctionnement manipulation
images docker conteneurs reseau docker
INTRODUCTION
q Histoire
q Prérequis
O1
INTRODUCTION
q Fonctionnement de la virtualisation
q Les avantages de la virtualisation
q Les inconvénients de la virtualisation
q L’isolation
q Avantages de conteneurisation
O2
Docker et virtualisation
Fonctionnement de la
virtualisation
q Consacrer les ressources adaptées selon les applications qu'on souhaite mettre en place.
q Les machines virtuelles restent simples à manier. Il est possible par exemple de basculer une VM
d'un lieu à l'autre voir même de sauvegarder et de dupliquer une VM à volonté sans aucun impact
visible pour les utilisateurs.
q La virtualisation réduit les dépenses en abaissant le besoin de systèmes matériels physiques. Elle
permet ainsi de réduire la quantité d'équipement nécessaire et les coûts de maintenance
d'alimentation et de refroidissement des composants.
q Les machines virtuelles apportent également une aisance à l'administration car un matériel virtuel
n'est pas sujet aux défaillances. Les administrateurs profitent des environnements virtuels pour
faciliter les sauvegardes, la reprise après catastrophe.
Docker et virtualisation
les inconvénients de la
virtualisation
q Le fait d’accéder aux ressources de façon virtuelle affaiblie les performances, cela est
dû au fait qu’on passe par une couche d’abstraction matérielle qui doit faire des
interprétations entre le matériel en place et celui simulé dans la machine virtuelle.
q La virtualisation consiste à faire fonctionner sur un seul ordinateur physique plusieurs
VMs avec différents systèmes d'exploitation, comme s'ils fonctionnaient sur des
ordinateurs distincts. Mais malheureusement cette couche d'OS consomme à lui tout
seul des ressources alors qu’au final, ce qui nous intéresse c’est la ou les applications
vont tourner.
Docker et virtualisation
l’isolation
q Dans le cas de la virtualisation l’isolation des VMs se fait au niveau matérielles (CPU/RAM/Disque) avec un accès
virtuel aux ressources de l'hôte via un hyperviseur. De plus, généralement les ordinateurs virtuels fournissent un
environnement avec plus de ressources que la plupart des applications n'en ont besoin.
q Par contre dans le cas de la conteneurisation, l’isolation se fait au niveau du système d’exploitation. Un conteneur va
s'exécuter sous Linux de manière native et va partager le noyau de la machine hôte avec d'autres conteneurs. ne
prenant pas plus de mémoire que tout autre exécutable, ce qui le rend léger.
Docker et virtualisation
les avantage de conteneurisation
O3
C’est quoi un conteneur
q Les namespaces (ou "espaces de noms" en français) isolent les ressources partagées. Ils
donnent à chaque processus sa propre vue unique du système, limitant ainsi leur accès aux
ressources système sans que le processus en cours ne soit au courant des limitations.
q Il existe différents types de namespaces
a. Le namespace PID : fournit un ensemble indépendant d'identifiants de
processus (PID).
b. Le namespace IPC : empêche la communication avec les autres processus,
plus simplement il interdit l'échange d'informations avec les autres processus.
c. Le namespace USER : fournit à la fois l'isolation des privilèges et la séparation
des identifications d'utilisateurs entre plusieurs ensembles.
C’est quoi un conteneur
1. Windows 11 64-bit: Home or Pro version 21H2 or higher, or Enterprise or Education version 21H2 or higher.
2. Windows 10 64-bit: Home or Pro 21H1 (build 19043) or higher, or Enterprise or Education 20H2 (build 19042) or
higher.
3. Enable the WSL 2 feature on Windows. For detailed instructions, refer to the Microsoft documentation.
4. The following hardware prerequisites are required to successfully run WSL 2 on Windows 10 or Windows 11:
a. 64-bit processor with Second Level Address Translation (SLAT)
b. 4GB system RAM
c. BIOS-level hardware virtualization support must be enabled in the BIOS settings. For more
information, see Virtualization.
5. Download and install the Linux kernel update package.
Images docker
O4
Qu’est-ce qu’une image Docker
Il est important de bien différencier une image Docker d'un conteneur Docker car ce sont deux
choses distinctes,
Quelques commandes
1. Docker help
Quelques commandes
1. Docker help
2. Docker volume
Quelques commandes
1. Docker help
2. Docker volume
3. Docker –-version
4. Docker version (plus d’infos)
Quelques commandes
1. Docker help
2. Docker volume
3. Docker –-version
4. Docker info
Quelques commandes
1. Docker help
2. Docker volume
3. Docker –-version
4. Docker info
5. Docker image ls
6. Docker images
Quelques commandes
1. Docker help
2. Docker volume
3. Docker –-version
4. Docker info
5. Docker image ls
6. Docker images
7. Docker rmi
O5
Difference entre image et conteneur
q Pour créer une instance de notre image, ou autrement dit créer un conteneur, alors
nous utiliserons une commande run
a. docker run [OPTIONS] <IMAGE_NAME ou ID>
q Profitons-en pour télécharger l'outil git, mais juste avant n'oubliez pas de récupérer
les listes de paquets depuis les sources afin que votre conteneur sache quels sont
les paquets disponibles en utilisant la commande apt-get update
Quelques commandes
Céer un conteneur
2. Maintenant que nous avons pu récupérer l'id ou le nom du conteneur, on est capable de
supprimer notre conteneur avec la commande suivante :
Quelques commandes
executer une cmd dans un conteneur
1. Il existe une commande docker exec qui permet de lancer n'importe quelle commande dans un
conteneur déjà en cours d'exécution. Nous allons l'utilisée pour récupérer notre interpréteur de
commande /bin/bash , ce qui aura pour but de se connecter directement à notre conteneur Apache.
2 Vous êtes maintenant dans votre conteneur. Pour s'amuser un peu, on va changer le message de
la page d'accueil :
Information
Pour quitter votre conteneur sans le détruire,
utilisez le raccourcis suivant :
Ctrl + P + Q
Quelques commandes
Afficher les logs d’un conteneur
1. Dès fois, vous aurez besoin de déboguer votre conteneur en regardant les sorties/erreurs d'un
conteneur.
2. Il existe pour cela la commande docker logs qui vient avec deux options très utiles :
a. -f : suivre en permanence les logs du conteneur (correspond à tail -f)
b. -t : afficher la date et l'heure de réception des logs d'un conteneur docker logs
Création de notre image
Transformer votre conteneur en image
les étapes
1. Exécuter notre conteneur basé sur l'image officielle Ubuntu
2. Installer l'outil git
3. Mettre du texte dans un nouveau fichier
4. Transformer notre conteneur en image
5. Relancer notre un nouveau conteneur basé sur cette nouvelle image
Voilà, maintenant, on va lancer notre conteneur basé sur cette nouvelle image :
Création de notre image
les étapes
Maintenant, c'est l'étape de créer mon image depuis mon nouveau conteneur.
docker commit <CONTAINER NAME or ID> <NEW IMAGENAME>
Voilà, maintenant, on va lancer notre conteneur basé sur cette nouvelle image :
Création de notre image
via dockerfile
Les instructions du fichier Dockerfile les plus utilisées.
1. FROM : Définit l'image de base qui sera utilisée par les instructions suivantes.
2. LABEL : Ajoute des métadonnées à l'image avec un système de clés-valeurs, permet par exemple
d'indiquer à l'utilisateur l'auteur du Dockerfile.
3. ARG : Variables temporaires qu'on peut utiliser dans un Dockerfile.
4. ENV : Variables d'environnements utilisables dans votre Dockerfile et conteneur.
5. RUN : Exécute des commandes Linux ou Windows lors de la création de l'image. Chaque
instruction RUN va créer une couche en cache qui sera réutilisée dans le cas de modification
ultérieure du Dockerfile.
6. COPY : Permet de copier des fichiers depuis notre machine locale vers le conteneur Docker.
7. ADD : Même chose que COPY mais prend en charge des liens ou des archives
8. ENTRYPOINT : comme son nom l'indique, c'est le point d'entrée de votre conteneur, en d'autres
termes, c'est la commande qui sera toujours exécutée au démarrage du conteneur.
9. CMD : Spécifie les arguments qui seront envoyés au ENTRYPOINT
Création de notre image
via dockerfile
FROM ubuntu:latest
MAINTAINER Malick
RUN apt-get update \
&& apt-get install -y vim git \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
Création de notre image
Création de notre image
Les volumes
Création d’une petite image pour tester cette option, commencez d'abord par créer
un Dockerfile avec le contenu suivant :
FROM alpine:latest
RUN mkdir /data
WORKDIR /data
Ensuite buildez notre image
docker build -t vtest .
la commande suivante va créer et monter le volume data-test dans le dossier /data
du conteneur.
docker run -ti --name vtest_c -v data-test:/data vtest
Ouvrez un autre terminal et dans celui-ci inspectez le nouveau volume :
docker volume inspect data-test
Les volumes
Créer et gérer des volumes
Pour le moment le dossier est vide, maintenant retournez vers le terminal avec le shell du
conteneur et créez dans le dossier /data un fichier avec le texte suivant :
echo "ceci est un test" > test.txt
O6
Présentation des différents types de réseau
Le système réseau de Docker utilise des drivers (pilotes). Plusieurs drivers existent et
fournissent des fonctionnalités différentes.
q Le driver Bridge
Tout d'abord, lorsque vous installez Docker pour la première fois, il automatiquement un réseau bridge
nommé bridge connecté à l'interface réseau docker0 ( consultable avec la commande ip addr
show docker0 ). Chaque nouveau conteneur Docker est automatiquement connecté à ce
réseau, sauf si un réseau personnalisé est spécifié.
Par ailleurs, le réseau bridge est le type de réseau le plus couramment utilisé. Il est limité aux
conteneurs d'un hôte unique exécutant le moteur Docker. Les conteneurs qui utilisent ce driver, ne
peuvent communiquer qu'entre eu cependant ils ne sont pas accessibles depuis l'extérieur.
Présentation des différents types de réseau
Le driver Bridge
q Le driver none
C'est le type de réseau idéal, si vous souhaitez interdire toute communication
interne et externe avec votre conteneur, car votre conteneur sera dépourvu de
toute interface réseau (sauf l'interface loopback).
q Le driver host
Ce type de réseau permet aux conteneurs d'utiliser la même interface que l'hôte.
Il supprime donc l'isolation réseau entre les conteneurs et seront par défaut
accessibles de l'extérieur. De ce fait, il prendra la même IP que votre machine
hôte.
Présentation des différents types de réseau
q Le driver host
Ce type de réseau permet aux
conteneurs d'utiliser la même
interface que l'hôte. Il supprime donc
l'isolation réseau entre les conteneurs
et seront par défaut accessibles de
l'extérieur. De ce fait, il prendra la
même IP que votre machine hôte.
Présentation des différents types de réseau
q Le driver overlay
Si vous souhaitez une mise en réseau multi-
hôte native, vous devez utiliser un
driver overlay. Il crée un réseau distribué
entre plusieurs hôtes possédant le moteur
Docker. Docker gère de manière transparente
le routage de chaque paquet vers et
depuis le bon hôte et le bon conteneur.
Présentation des différents types de réseau
q Le driver macvlan
L'utilisation du driver macvlan est parfois le meilleur
choix lorsque vous utilisez des applications qui
s'attendent à être directement connectées au
réseau physique, car le driver Macvlan vous permet
d'attribuer une adresse MAC à un conteneur, le
faisant apparaître comme un périphérique physique
sur votre réseau. Le moteur Docker route le trafic
vers les conteneurs en fonction de leurs adresses
MAC.
Manipulation du réseau dans Docker
Manipulation du réseau dans Docker
Pour cet exemple, nous allons connecter deux conteneurs à notre réseau bridge
Manipulation du réseau dans Docker
si on inspecte une nouvelle fois notre réseau mon-bridge, on verra nos deux nouveaux
conteneurs dans les informations retournées :
docker network inspect mon-bridge
Manipulation du réseau dans Docker