Docker
YASSINE AIT SI M’BAREK
1
CONTE NT
01 In tro du cti on
02 Co nf igur ati on de Doc ker
03 Doc ker C omm an ds & Co nce pt s
04 Doc ker Logs
05 Doc ker Vol um es
06 B uil d ing i ma ge s
07 Mul ti Stage Dock erf il e
08 Do ck er Com p ose
09 Co nc lu tion
2
1- Introduction
3
1- Isolation de Service
L'isolation de service est un concept clé dans l'architecture logicielle moderne, en particulier
dans les architectures de microservices, la conteneurisation avec des outils comme Docker, ou
même dans la gestion des réseaux. L'idée principale est de rendre chaque service autonome et
indépendant des autres, permettant ainsi une gestion, une scalabilité et une maintenance plus
efficaces.
Pour héberger notre application, nous avons besoin d'une infrastructure.
Nous utilisons des VM ou le cloud computing pour configurer l'infrastructure.
4
What is Docker?
2- Sans Isolation de Service avec SE
Host
pas d’isolation
5
What is Docker?
3- Isolation de Service avec SE
Server 1 Server 2 Server 3
Isolation Network 6
What is Docker?
3- Isolation de Service avec SE
Les VM ou instances seront surprovisionnées.
La haute disponibilité est obtenue grâce à plusieurs instances/machines virtuelles.
Nous isolons notre service dans le système d'exploitation de VM.
Cela entraîne des coûts d'investissement (CapEx) et d'exploitation (OpEx) élevés.
7
What is Docker?
4- Les machines virtuelles sont coûteuses.
Chaque machine virtuelle dispose de son propre système d'exploitation.
Le système d'exploitation nécessite un entretien et une licence.
Le système d'exploitation prend du temps à démarrer.
Les machines virtuelles nécessitent des ressources pour leur SE.
Tout cela pour isoler les services.
8
What is Docker?
5- Isolation sans SE.
Imagine plusieurs services fonctionnant sur le même système d'exploitation
mais isolés.
Cela signifie que l'on cherche à isoler les services sans avoir besoin de multiples systèmes
d'exploitation (SE) comme dans le cas des machines virtuelles. Une telle approche pourrait être
réalisée via des conteneurs (par exemple, Docker), où chaque conteneur partage le même noyau de
SE mais reste isolé, ce qui réduit les ressources nécessaires par rapport à des VM complètes.
9
What is Docker?
6-Conta iner
Un conteneur est une unité standardisée de logiciel qui
regroupe le code et toutes ses dépendances, permettant
à l'application de s'exécuter rapidement et de manière
fiable d'un environnement informatique à un autre.
Container
Process(Isolated)
Chaque conteneur partage le même noyau de SE et ne nécessitent
running in a
donc pas un système d'exploitation par application..
directory(IP)
https://www.docker.com/resources/what-container/#:~:text=Containers%20are%20an%20abstraction%20at,isolated%20processes%20in%20user%20space
10
6-Conta iner
172.17.0.2
172.17.0.3 172.17.0.4
Container Container Container
Host
Network
172.17.0.2
seeyassine@lenovo:~$ docker exec mynginx1 ls / 11
6-Conta iner
Container
Process(Isolated)
running in a
directory(IP)
https://www.docker.com/resources/what-container/#:~:text=Containers%20are%20an%20abstraction%20at,isolated%20processes%20in%20user%20space
12
7- Comparer les conteneurs et les VM.
13
7- Comparer les conteneurs et les VMs.
1 2 3
Les conteneurs offrent de Les conteneurs sont une virtualisation du système Les machines virtuelles
l'isolation, pas de d'exploitation. sont une virtualisation
virtualisation. matérielle.
4 5 6
Les machines virtuelles ont Les conteneurs ont pas besoin d'un système Les conteneurs utilisent le
besoin d'un système d'exploitation. système d'exploitation
d'exploitation. hôte pour les ressources
de calcul.
Conteneurs est un prosessus
14
8-Docker .
1- Definition :
Docker est une plateforme ouverte pour développer,
expédier et exécuter des applications. Docker vous
permet de séparer vos applications de votre
infrastructure afin de livrer des logiciels rapidement.
gère votre conteneur
2- History :
• Anciennement connu sous le nom de DotCloud Inc. • A développé des outils pour gérer les conteneurs.
• Business Failed
• c'était comme un business PaaS. • A rendu leurs outils open source, connus sous le nom
• Utilisez LXC (Linux Containers). de Docker.
• A économisé des dépenses d'investissement (CapEX) en • A obtenu un financement.
utilisant des conteneurs au lieu de machines virtuelles. • Changed name to Docker Inc
15
8-Docker .
3- qu'est-ce que Docker ? :
Docker Inc : nom de l'entreprise.
Docker Project : Open Source
gère votre conteneur
Docker Engine : le meilleur produit pour gérer les conteneurs.
L'environnement d'exécution des conteneurs peut vous aider à gérer vos
conteneurs de manière beaucoup plus facile, avec beaucoup
d'automatisation qui sera effectuée.
16
9-Docker Engine .
17
9-Docker Engine .
https://hub.docker.com/
L’architecture de Docker
18
10-Docker Containers .
Les conteneurs Docker qui s'exécutent sur Docker Engine :
• Standard : Docker a créé la norme de l'industrie pour les conteneurs, ce qui les rend
portables partout.
• Lightweight: Les conteneurs partagent le noyau du système d'exploitation de la machine
et ne nécessitent donc pas un système d'exploitation par application, ce qui améliore
l'efficacité des serveurs et réduit les coûts liés aux serveurs et aux licences.
• Secure: Les applications sont plus sûres dans des conteneurs, et Docker offre les capacités
d'isolation par défaut les plus solides de l'industrie."
https://www.docker.com/resources/what-container/#:~:text=Containers%20are%20an%20abstraction%20at,isolated%20processes%20in%20user%20space
19
2- Configuration de Docker
20
1-Installation de Docker .
Linux or Windows
Les conteneurs Linux s'exécutent sur le système d'exploitation Linux.
Install Docker Engine
Les conteneurs Windows s'exécutent sur le système d'exploitation Windows.
21
1-Installer Docker Engine sur Ubuntu.
#Run the following command to uninstall all conflicting packages:
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
############
#Set up Docker's apt repository.
## Add Docker's official GPG key: docvv.sh
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
##############
#Install the Docker packages.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
#Verify that the Docker Engine installation is successful by running the hello-world image.
sudo docker run hello-world
https://docs.docker.com/engine/install/
22
Configuration de Docker
1- docker status
https://docs.docker.com/engine/install/ 23
Configuration de Docker
2- Add user seeyassine to docker group
Par défaut, seul root peut se connecter au CLI du démon Docker.
https://docs.docker.com/engine/install/linux-postinstall/ 24
3- Docker Commands &
Concepts
25
Docker Commands & Concepts
1- registre Docker
Un registre Docker(Docker Hub ) est un service où les images Docker sont stockées, gérées et
distribuées. Il sert de hub centralisé pour les applications conteneurisées, permettant aux
utilisateurs de pousser (Push) et tirer (télécharger-pull) des images Docker. Les registres peuvent
être publics ou privés et fournissent des services essentiels pour travailler avec des applications
conteneurisées dans un environnement évolutif et distribué.
Types de registres Docker courants :
•Docker Hub : Le registre public officiel de Docker. Il permet de stocker et partager des
images Docker avec la communauté ou en privé.
•Amazon Elastic Container Registry (ECR) : Un registre Docker privé intégré aux
services AWS pour stocker et gérer des
•GCR(Google Container Registry)
26
Docker Commands & Concepts
2- Docker Images
Un conteneur arrêté est comme une image de machine virtuelle.
Constitué de plusieurs couches.
Une application sera regroupée dans une image.
Les conteneurs s'exécutent à partir des images
Les images sont appelées des dépôts dans les registres.
Les images deviennent des conteneurs lorsqu'elles s'exécutent sur Docker Engine.
27
Docker Commands & Concepts
3- Docker Command Image
Build an images from a Dockerfile
Exemple
List all local images:
or
Pull an image from Docker Hub:
Exemple
28
Docker Commands & Concepts
3- Docker Command Image
Remove a local image:
Exemple
Tag an image
Exemple
Inspect details of an image
Exemple
29
Docker Commands & Concepts
3- Docker Command Container
Run a container from an image:
Exemple
Run a named container from an image:
Exemple
List all running containers List all containers (including stopped ones):
Stop a running container
Exemple 30
Docker
DockerCommands & Concepts
Commands & Concepts
3- Docker Command Container
Start a stopped container Exemple
Run container in interactive mode
Run container in interactive shell mode
Remove a stopped container
31
Docker Commands & Concepts
4- Docker Command Container
Inspect details of a container
View container logs
Run a container with port mapping
32
Docker Commands & Concepts
1- Commande Docker
• docker ps ➔ Affiche les conteneurs en cours d'exécution.
•docker ps -a ➔ Affiche tous les conteneurs, y compris ceux qui sont arrêtés.
•docker start /stop/restart/rm <container_id> ➔ Démarrer /Arrêter…un conteneur
•docker exec ➔ executes commands on containers
•docker run <options> <image> ➔ Exécuter un nouveau conteneur
•docker images ➔ Lister les images
•docker pull <image> ➔ Tirer une image depuis un registre
•docker build -t <image_name> <path_to_dockerfile> ➔ Construire une image à partir
d'un Dockerfile
•docker rmi <image_id> ➔ Supprimer une image
•docker volume create <volume_name> ➔ Créer un volume
•docker volume ls ➔ Lister les volumes
•docker volume rm <volume_name> ➔ Supprimer un volume
•docker logs <container_id> ➔ Afficher les logs d'un conteneur
•docker inspect → Afficher les metadada d'un conteneur 33
Commande Docker
34
Docker Commands & Concepts
4- Application Example https://hub.docker.com/_/nginx
seeyassine@lenovo:~$ docker run --name mynginx1 -p 9090:80 -d nginx
35
Docker Commands & Concepts
5-access to docker container
seeyassine@lenovo:~$ ps -ef
seeyassine@lenovo:~$ docker exec mynginx1 ls /
36
Docker Commands & Concepts
5-access to docker container
seeyassine@lenovo:~$ docker exec -it mynginx /bin/bash
37
Docker Commands & Concepts
5-access to docker container
38
4- Docker Logs
39
Docker Logs
40
Docker Logs
41
Docker Logs
42
5-Docker Volumes
43
Docker Volumes
Create a named volume
List all volumes Remove a volume
Run a container with a volume (mount):
44
Docker Volumes
Method 1:
seeyassine@lenovo:~$ docker run --name mysqlvv -d -P -e MYSQL_ROOT_PASSWORD=yassine -v
/home/seeyassine/mydata:/var/lib/mysql mysql
45
Docker Volumes
Method 2(The best way):
46
6-Building images
47
1- Dockerfile Instructions
1- Qu'est-ce qu'un Dockerfile ?
Un Dockerfile est un script qui contient des instructions pour construire
une image Docker. Il définit l'image de base, configure les variables
d'environnement, installe des logiciels et configure le conteneur pour une
application ou un service spécifique.
Dockerfile Syntax
Spécifie l'image de base pour l'image Docker.
WORKDIR:
48
1- Docker files
COPY: Copie des fichiers ou des répertoires du contexte de construction vers le
conteneur
RUN Exécute des commandes dans le shell.
ENV: Définit des variables d'environnement dans l'image
EXPOSE:
49
1- Docker files
CMD: Fournit des commandes ou des paramètres par défaut pour
l'exécution d'un conteneur.
ENTRYPOINT
VOLUME: Crée un point de montage pour des volumes externes ou d'autres conteneurs.
50
1- Docker files
ADD:
Copie des fichiers ou des répertoires
et peut extraire des archives tar dans
le processus.
51
7-Multi Stage Dockerfile
52
Multi Stage Dockerfile
Exemple: FROM ubuntu:latest AS BUILD_IMAGE
RUN apt update && apt install git -y
RUN git clone https://github.com/seeyassine/kitchen-landing-
page.git /kitchen-landing-page
FROM ubuntu:latest
LABEL "project"="kitchen"
LABEL "Author"="YASSINE"
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install apache2 git -y
COPY --from=BUILD_IMAGE /kitchen-landing-page
/var/www/html/
CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]
VOLUME /var/log/apache2
WORKDIR /var/www/html/
EXPOSE 80
53
Multi Stage Dockerfile
Exemple:
seeyassine@lenovo:~$ mkdir dockerapp
seeyassine@lenovo:~/dockerapp$ vim Dockerfile
seeyassine@lenovo:~/dockerapp$ docker build -t myweb .
seeyassine@lenovo:~/dockerapp$ docker run -d --name mywebcon -p 9080:80 myweb
54
Multi Stage Dockerfile
Exemple:
55
Multi Stage Dockerfile
Exemple:
seeyassine@lenovo:~/dockerapp$ docker build -t seeyassine/myweb:v2 .
seeyassine@lenovo:~/dockerapp$ docker login -u seeyassine
seeyassine@lenovo:~/dockerapp$ docker push seeyassine/myweb:v2
seeyassine@lenovo:~/dockerapp$ docker run -d --name mywebsite -p 9080:80 seeyassine/myweb:v2
56
8-Docker Compose
57
Docker Compose
Qu'est-ce qu'un fichier Docker Compose ?
Un fichier Docker Compose est un fichier YAML qui définit une application Docker à
conteneurs multiples. Il spécifie les services, les réseaux et les volumes pour
l'application, ainsi que toute option de configuration supplémentaire.
For install use :
curl -SL https://github.com/docker/compose/releases/download/v2.29.6/docker-compose-linux-x86_64 -o
/usr/local/bin/docker-compose
58
Docker Compose
Exemple:
https://docs.docker.com/compose/gettingstarted/
59
9-Conclution
60
Conclution
Docker est largement utilisé pour le développement et la gestion d'applications dans un
environnement isolé et reproductible
STRATEGY N°3
61
Merci pour votre attention.
62