0% ont trouvé ce document utile (0 vote)
107 vues36 pages

Introduction à Docker et conteneurs

Le document présente la conteneurisation, une méthode de virtualisation permettant d'isoler le code et ses dépendances dans des conteneurs, facilitant ainsi la portabilité et l'exécution d'applications sur diverses infrastructures. Docker, la plateforme de conteneurs la plus populaire, est expliquée en détail, y compris son installation, ses concepts clés comme les images et les conteneurs, ainsi que l'utilisation de Docker Compose pour gérer des applications multi-conteneurs. Les avantages de la conteneurisation, tels que la vitesse, l'isolation et la facilité de gestion, sont également abordés.

Transféré par

redaaitlahsen5
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
107 vues36 pages

Introduction à Docker et conteneurs

Le document présente la conteneurisation, une méthode de virtualisation permettant d'isoler le code et ses dépendances dans des conteneurs, facilitant ainsi la portabilité et l'exécution d'applications sur diverses infrastructures. Docker, la plateforme de conteneurs la plus populaire, est expliquée en détail, y compris son installation, ses concepts clés comme les images et les conteneurs, ainsi que l'utilisation de Docker Compose pour gérer des applications multi-conteneurs. Les avantages de la conteneurisation, tels que la vitesse, l'isolation et la facilité de gestion, sont également abordés.

Transféré par

redaaitlahsen5
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

PARTIE 4: Manipuler les conteneurs

• Appréhender la notion des conteneurs


• Prendre en main Docker

173
CHAPITRE 1: Appréhender la notion des conteneurs

1. Définition

La conteneurisation, est un type de virtualisation, qui consiste à rassembler le code du logiciel


et tous ses composants (bibliothèques, frameworks et autres dépendances) de manière à les
isoler dans leur propre « conteneur »

• Le logiciel ou l'application dans le conteneur peut ainsi être déplacé et exécuté de façon
cohérente dans tous les environnements et sur toutes les infrastructures, indépendamment
de leur système d'exploitation ;
• Aujourd'hui, il existe divers outils et plateformes de conteneurisation, à savoir : Docker,
LXC, Podman …
• Docker est l’écosystème le plus populaire et le plus utilisé
174
• Docker est une plateforme de conteneurs lancée en 2013 ayant largement contribué à la
démocratisation de la conteneurisation.
• Elle permet de créer facilement des conteneurs et des applications basées sur les
conteneurs.
• C’est une solution open source, sécurisée et économique.
• Initialement conçue pour Linux, Docker permet aussi la prise en charge des containers sur
Windows ou Mac grâce à une ” layer ” de virtualisation Linux entre le système
d’exploitation Windows / macOS et l’environnement runtime Docker.
• L’outil Docker est à la fois bénéfique pour les développeurs et pour les administrateurs
système. On le retrouve souvent au cœur des processus DevOps.
• Les développeurs peuvent se focaliser sur leur code, sans avoir à se soucier du système sur
lequel il sera exécuté. En outre, ils peuvent gagner du temps en incorporant des
programmes pré-conçus pour leurs applications.

175
2. Différence entre machine virtuelle et conteneur

176
Différence entre machine virtuelle et conteneurs

177
3. Avantages

La conteneurisation offre des avantages considérables aux développeurs de logiciels et aux


équipes de développement, allant d'une agilité et d'une portabilité supérieures à un contrôle
des coûts amélioré. En voici un extrait de la liste :

• Portabilité: Un conteneur d'application crée un progiciel exécutable qui est isolé par
rapport au système d'exploitation hôte. Ainsi, il ne dépend pas du système d'exploitation
hôte et n'est pas lié à celui-ci, ce qui le rend portable et lui permet de s'exécuter de manière
cohérente et uniforme sur n'importe quelle plate-forme ou cloud.

178
• Vitesse: Les développeurs désignent les conteneurs comme « légers » parce qu'ils partagent
le noyau du système d'exploitation de la machine hôte et qu'ils ne font pas l'objet de charges
supplémentaires. Leur légèreté permet d'améliorer l'efficacité des serveurs et de réduire les
coûts liés aux serveurs et aux licences. Elle réduit également le temps de lancement, car il
n'y a pas de système d'exploitation à démarrer.
• Isolation : La conteneurisation d'une application permet de l'isoler et de la faire fonctionner
de façon indépendante. Par conséquent, la défaillance d'un conteneur n'affecte pas le
fonctionnement des autres. Les équipes de développement peuvent rapidement identifier et
corriger les problèmes techniques d'un conteneur défectueux sans provoquer l'arrêt du reste
des conteneurs.
• Facilité de la gestion : En utilisant une plate-forme d'orchestration des conteneurs, vous
pouvez automatiser l'installation, la gestion et l'évolution des charges de travail et des
services conteneurisés. L'orchestration des conteneurs permet de faciliter les tâches de
gestion, comme le déploiement de nouvelles versions d'applications ou l'évolution
d'applications conteneurisées …
• Mise à échelle flexible : Dans le cas d’un hébergement sur Cloud (Azure Cloud ou Google
Cloud ), les conteneurs Docker peuvent être lancés en plusieurs exemplaires pour gérer le
nombre croissant d'utilisateurs. Sur le cloud, cette mise à l'échelle peut être automatisée,
donc si le nombre d’utilisateurs de l’application web augmente, d’autres exemplaires de
votre conteneurs seront lancés automatiquement pour pouvoir répondre à la montée de la
charge.
179
CHAPITRE 2: Prendre en main Docker

1. Installation de Docker Desktop


Docker Desktop est l’application PC native conçue par Docker pour Windows et Mac. C’est
la façon la plus simple d’exécuter, de construire, de déboguer et de tester des applications
Dockerisées.
Le fichier d’installation de Docker Desktop pour windows est à télécharger depuis le site
officiel de Docker :
Install Docker Desktop on Windows | Docker Docs

Sur le même site, on peut vérifier les différents prérequis système nécessaires au bon
fonctionnement de Docker Desktop.

180
Après avoir installé et démarré Docker Desktop, on
peut afficher les différentes informations concernant
la version Docker installée en exécutant la commande
(sous l’invite de commande) : docker version

181
2. Terminologies Docker : images, Containers, Docker Hub

Concepts clés de Docker :

Docker utilise une architecture client


serveur et se compose de :

• Moteur Docker Il s'agit de l'application


que vous installez sur votre ordinateur
hôte pour créer, exécuter et gérer des
conteneurs Docker. En tant que cœur du
système Docker, il réunit tous les
composants de la plate -forme en un seul
endroit.
• Docker Daemon Le serveur Docker
(dockerd) écoute les requêtes de l'API
Docker et gère les objets Docker tels que
les images, les conteneurs, les réseaux et
les volumes. Un serveur Docker peut
également communiquer avec d'autres
serveurs pour gérer les services Docker.
182
- Client Docker Il s'agit de l' interface utilisateur principale pour communiquer avec le
système Docker. Il accepte les commandes via l'interface de ligne de commande (CLI) et
les envoie au démon Docker.
- Registre Docker Un système de catalogage pour héberger, pousser et extraire des
images Docker. Vous pouvez utiliser votre propre registre local ou l'un des nombreux
services de registre hébergés par des tiers (par exemple, Red Hat Quay, Amazon ECR,
Google Container Registry et Docker Hub Docker Hub and Docker Registries: A Beginner’s Guide | JFrog ). Un
registre Docker organise les images dans des emplacements de stockage, appelés
référentiels , où chaque référentiel contient différentes versions d'une image Docker qui
partagent le même nom d'image.

183
Docker Hub : https://hub.docker.com/
- C’est un registre public que n’importe qui peut utiliser
- Docker est configuré pour rechercher des images sur Docker Hub par défaut.
- Il est considéré comme la plus grande bibliothèque des images des conteneurs,
permettant d’héberger environ 100 000 images.
- On peut y chercher une image en tapant son nom dans la zone de recherche :

184
Les Objets Docker : Image Docker

Un modèle en lecture seule utilisé pour créer des conteneurs Docker. Il se compose d'une
série de couches qui constituent un package tout-en-un , qui contient toutes les installations,
dépendances, bibliothèques, processus et code d'application nécessaires pour créer un
environnement de conteneur entièrement opérationnel.

 Souvent, une image est basée sur une autre image, avec quelques personnalisations
supplémentaires.
 Vous pouvez créer vos propres images ou n'utiliser que celles créées par d'autres et
publiées dans un registre.
 Pour construire votre propre image, vous pouvez créer un Dockerfile avec une syntaxe
simple pour définir les étapes nécessaires pour créer l'image et l'exécuter.

185
Exemple :

Imaginons par exemple qu'on souhaite déployer notre application web dans un serveur LAMP
(Linux Apache MySQL PHP) au moyen de Docker
Pour créer notre stack (pile en français), nous aurons
besoin de :
Une couche OS (système d’exploitation) pour
exécuter notre Apache, MySQL et Php
Une couche Apache pour démarrer notre serveur web
et pourquoi pas la config qui va avec (.htaccess,
apache2.conf, site-available/, etc ... ) Une couche php
qui contiendra un interpréteur Php mais aussi les
bibliothèques qui vont avec (exemple : php-curl)
Une couche Mysql qui contiendra notre système de
gestion de bases de données Mysql Au total, notre
image docker sera composée de quatre couches, en
schéma ceci nous donnerai :

186
Les Objets Docker : Image Docker

Commandes de manipulation des images docker:

La manipulation des images docker est ainsi possible via l’application Docker Desktop.

187
Les Objets Docker : Conteneur Docker

• Un conteneur est donc un espace dans lequel une application tourne avec son propre
environnement.
• Il permet d’exécuter un microservice individuel ou une pile d'applications complète .
• Chaque conteneur est une instance d’une image. Il possède son propre environnement
d’exécution et donc ses propres répertoires.
• l'API Docker ou la CLI permettent de démarrer, arrêter ou supprimer un conteneur
Docker.
• On peut connecter un conteneur à un ou plusieurs réseaux, y attacher un stockage ou
même créer une nouvelle image en fonction de son état actuel.

188
Les Objets Docker : Conteneur Docker
Commandes de manipulation des conteneurs docker:

189
Manipuler un conteneur :
Les Objets Docker : Conteneur Docker
Exemple :
 Dans cet exemple, on souhaite créer et démarrer un conteneur en se basant sur une image
mysql;
 Lançant cette commande :

Cette commande permet de :


• Démarrer un conteneur basé sur l’image mysql avec le tag latest (à télécharger depuis
docker hub s’il ne le trouve pas sur la machine locale) (mysql:latest)
• De donner à notre conteneur le nom some-mysql (--name some-mysql)
• D’attribuer un mot de passe à l’utilisateur root ; (-e MYSQL_ROOT_PASSWORD=123)
• D'exposer publiquement le port 3309 du conteneur en tant que port 3306 (–p 3306:3309)
• De démarrer en mode détaché : Il s'exécute en arrière-plan du terminal (–d)

190
Manipuler un conteneur :
Les Objets Docker : Conteneur Docker
Exemple :

On peut afficher les conteneurs démarrés via la commande : docker ps

191
Manipuler un conteneur :
Les Objets Docker : Conteneur Docker
Exemple :

Les conteneurs peuvent aussi être manipulés via Docker Desktop :

192
3. Création d’un Dockerfile pour une application simple node js
Définition:

Un Dockerfile est un fichier qui liste les instructions à exécuter pour construire (build) une
image.

Voici un exemple visuel de ce qu’un Dockerfile


peut ressembler :
Il est lu de haut en bas au cours du processus de
construction.

Le Dockerfile permet de créer une image. Cette image contient la liste des instructions
qu’un conteneur devra exécuter lorsqu’il sera créé à partir de cette même image.
193
Définition:

• Il faut savoir qu’une image nouvellement créée est toujours issue d’une image de base.
On va juste ajouter des fonctionnalités supplémentaires, une application par exemple,
afin qu’elle puisse correspondre à nos attentes.
• Une image docker est construite en exécutant la commande docker build. Cette dernière
exécutera les lignes de commande se trouvant dans le fichier dockerfile.
• Voici la structure d’un ficher dockerfile:

Les instructions de base:

194
Définition:

Les instructions de base: https://docs.docker.com/engine/reference/builder/

195
Définition

Exemple :

196
4. Introduction à Docker Compose

• Compose est un outil permettant de définir et d'exécuter des applications Docker multi-
conteneurs.
• Docker-compose fonctionne à partir d’un fichier yml, dans lequel on définit tous les services
que l’on souhaite.
• Quand on lance la commande d’exécution, le Daemon Docker va lire le docker-compose.yml
afin de monter chaque container avec les paramètres que l’on a choisi

197
5. Gestion de plusieurs images Docker avec docker-compose

Le fichier de Docker Compose nommé docker-compose.yml a systématiquement 2 clefs à sa


racine : version et services.

Dans ce fichier, on indique qu’on va utiliser la version 3.9 de docker-compose et on définit


trois services: authentification, commande et produits.
La configuration de chacun des services sera ensuite décrites à l'intérieur de chacun des blocs.
Pour chaque service, différentes options peuvent être configurées dans le fichier Docker
Compose.

198
La liste des configurations des services est fournie dans la documentation officielle(Overview |
Docker Docs), ici, on traitera quelques une:
• container_name permet de nommer le conteneur
• environment est la liste des variables d'environnement à passer au conteneur
• image est le nom de l'image Docker à utiliser
• build : Permet de renseigner le Dockerfile sur lequel le conteneur se base. Au lancement du
docker-compose, le Dockerfile va être build et transformé en une image qui va être utilisée par
le conteneur.
• ports Permet de faire le mappage entre les ports à l’intérieur du conteneur et les ports qui
leur correspondent à l’extérieur du conteneur, c’est-à-dire dans le système Docker.
• volumes est la liste des volumes que l'on souhaite monter dans le conteneur. Cette propriété
permet d’utiliser un répertoire virtuel qui ne se supprime pas lorsqu’un conteneur est
supprimé. C’est l’une des manières utilisées pour persister les données d’un conteneur.
• links: permet de lier des conteneurs sur un réseau. Lorsque nous lions des conteneurs,
Docker crée des variables d'environnement et ajoute des conteneurs à la liste des hôtes connus
afin qu'ils puissent se découvrir.
• depends_on : On y mentionne la liste des conteneurs dont un conteneur a besoin pour
fonctionner. Le conteneur est démarré uniquement lorsque l’ensemble de ses dépendances le
sont.

199
Exemple:

Retournons à notre exemple de cours où on gérait trois services: authentification, produit et


commande.
Chaque service aura son propre fichier dockerfile où on indiquera les instructions à suivre pour
créer l’image docker correspondante. En plus des trois conteneurs « service », on ajoutera un
quatrième qui servira à conteneuriser le SGBD mongoDB.

200
Exemple:

La structure des fichiers aura l’allure suivante: Les


trois fichiers dockerfile auront le même contenu:

Remarque: Dans quelques cas, on souhaite exclure quelques fichiers de


l’image Docker à créer (fichiers volumineux, problème de sécurité …), on peut
ajouter (à coté du fichier dockerfile) un autre fichier appelé .dockerignore.
Dans ce fichier, on cite les dossiers et/ou fichiers à exclure de l’image Docker.
Exemple du contenu du .dockerignore : node_modules

201
Exemple:

Le contenu du fichier docker-compose.yml est présenté ci-après :

202
Exemple:

Explications

203
Exemple:

Explications

204
6. Démarrage et gestion des conteneurs (commandes docker-compose)

Voici une liste non exhaustive des commandes permettant de manipuler de docker compose:
(il suffit de se rendre dans le répertoire où se trouve le fichier docker-compose.yml et d’exécuter
l’une des commandes suivantes)

205
Exemple:

- Dans l ’exemple précédent, on a crée un fichier « dockercompose.yml » à la racine de notre


projet
- A l’aide des commandes : docker-compose build et dockercompose up, on peut construire
les images et démarrer les conteneurs :

206
Exemple:

Pour tester nos conteneurs, on peut accéder au service « auth-service » via le port 5002
(comme indiqué dans le fichier docker-compose.yml) Dans la capture ci-après, on teste
l’enregistrement d’un nouvel utilisateur « sara ».

On peut consulter les données insérées dans le conteneur « db » en ouvrant son terminal (sous
Docker Desktop) :

207
Exemple:

Tapons la commande mongosh (Shell permettant la manipulation du SGBD MongoDB)


- La commande « show databases » permet d’afficher la liste des collections disponible:

- En pointant sur la collection « auth-service » et en affichant tous les utilisateurs ajoutés, on


remarque bien que l’utilisateur « sara » a été bien enregistré:

208

Vous aimerez peut-être aussi