Vous êtes sur la page 1sur 40

Chapitre 02 : Conteneurisation avec Docker

Dr Mandicou BA
mandicou.ba@esp.sn
http://www.mandicouba.net

Diplôme d’Ingénieuer de Conception (DIC, 3e année)


Master Professionel (Master, 2e année)
Options : GLSI et SRT

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 1 / 40


Plan du Chapitre

1 Objectifs et Contenu

2 Pourquoi Conteneuriser (avec Docker) ?

3 Focus sur Docker CLI

4 Gestion des Containers de Docker

5 Gestion des Images Docker

6 Dockerfile

7 Docker registry

8 Atelier

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 2 / 40


Objectifs et Contenu

Sommaire

1 Objectifs et Contenu

2 Pourquoi Conteneuriser (avec Docker) ?

3 Focus sur Docker CLI

4 Gestion des Containers de Docker

5 Gestion des Images Docker

6 Dockerfile

7 Docker registry

8 Atelier

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 3 / 40


Objectifs et Contenu

Étude des techniques de conteneurisation : cas de Docker

Objectif et Contenu
☛ Docker
Comprendre Docker et les applications conteneurisées.
☛ Docker CLI
Commencer à utiliser Docker CLI et travailler avec des applications
conteneurisées
☛ Dockeriser une application
Portainer, Docker HUB, Dockerfile, Docker Compose, Docker Swarm

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 4 / 40


Pourquoi Conteneuriser (avec Docker) ?

Sommaire

1 Objectifs et Contenu

2 Pourquoi Conteneuriser (avec Docker) ?

3 Focus sur Docker CLI

4 Gestion des Containers de Docker

5 Gestion des Images Docker

6 Dockerfile

7 Docker registry

8 Atelier

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 5 / 40


Pourquoi Conteneuriser (avec Docker) ?

Machines Virtuelles

☛ Isole les applications et alloue les ressources nécessaires à l’exécution


de ces applications.
☛ Les machines virtuelles peuvent être partagées sous forme d’images
☛ Ne dépendent pas du système d’exploitation hôte
☛ Plusieurs machines virtuelles peuvent être exécutées simultanément à
l’aide d’un hyperviseur.

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 6 / 40


Pourquoi Conteneuriser (avec Docker) ?

Pourquoi utiliser Docker ?

☛ Développer des applications qui fonctionnent sur n’importe quel SE


☛ Partage facile des applications entre les équipes
☛ Facilité de mise à l’échelle sur plusieurs serveurs.
☛ Les grandes applications peuvent être divisées en plusieurs conteneurs
pour chaque microservice
☛ Excellente solution pour le CLOUD
☛ Grande communauté et bibliothèque d’images Docker

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 7 / 40


Pourquoi Conteneuriser (avec Docker) ?

Avant Docker

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 8 / 40


Pourquoi Conteneuriser (avec Docker) ?

Après Docker

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 9 / 40


Pourquoi Conteneuriser (avec Docker) ?

Avant Docker vs Après Docker

Dev : Cela fonctionne bien dans mon système


Testeur : Cela ne fonctionne pas dans mon système

Avant Docker
☛ Dev : envoie un code à un testeur, mais celui-ci ne fonctionne pas sur le
système du testeur
☛ A cause de divers problèmes de dépendance, mais il fonctionne bien du
côté du développeur.

Avec (après) Docker


☛ Dev et Testeur disposent désormais du même système fonctionnant sur
un conteneur Docker
☛ Capables d’exécuter l’application dans l’environnement Docker
☛ Sans avoir à faire face au problème des différences de dépendances

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 10 / 40


Pourquoi Conteneuriser (avec Docker) ?

Docker : applications containerisées

☛ Unité standard de logiciel : Packages code and dependencies


☛ Peut être partagé sous forme d’images Docker
☛ Plusieurs conteneurs peuvent être exécutés simultanément
☛ Portabilité - utilisable avec n’importe quel système d’exploitation
☛ Léger et Sécurisé : fonctionnalités d’isolation par défaut solides
☛ Parfois utilisé avec des machines virtuelles

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 11 / 40


Pourquoi Conteneuriser (avec Docker) ?

Docker : facilite l’architecture micro-services

☛ Compose les applications volumineuses en composants exécutables plus


petits
☛ Facile à entretenir et à tester
☛ Faiblement couplé et pouvant être déployé indépendamment
☛ Peut être combiné avec une architecture serverless (AWS Fargate)

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 12 / 40


Pourquoi Conteneuriser (avec Docker) ?

Serverless

☛ Élimine la dépendance à l’égard de l’infrastructure


☛ Permet aux développeurs de se concentrer sur le développement
d’applications
☛ Peuvent être découplés avec différents services dans le CLOUD
☛ (Généralement) plus rentable : Cloud Computing

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 13 / 40


Pourquoi Conteneuriser (avec Docker) ?

Évolution du déploiement d’applications

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 14 / 40


Focus sur Docker CLI

Sommaire

1 Objectifs et Contenu

2 Pourquoi Conteneuriser (avec Docker) ?

3 Focus sur Docker CLI

4 Gestion des Containers de Docker

5 Gestion des Images Docker

6 Dockerfile

7 Docker registry

8 Atelier

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 15 / 40


Focus sur Docker CLI

Installation de Docker Engine

☛ Docker Engine est disponible presque l’ensemble des SE :


Linux platforms, macOS, and Windows 10

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 16 / 40


Focus sur Docker CLI

Pull An Image

☛ docker – version
Images disponibles publiquement pour travailler avec Docker.
Extrait une image hello-world à l’aide de la commande docker pull

☛ docker pull hello-world

☛ docker images

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 17 / 40


Focus sur Docker CLI

Create A Container - Run A Container

Créer un conteneur à partir d’une image : commande docker create

☛ docker create hello-world

Lancer un conteneur : commande docker container start.


Option -i : exécute le conteneur de manière interactive et nous permet de
voir les résultats.

☛ docker container start -i 2ffd5f2c5a7562fbf1d7...


Hello from Docker :
Ce message indique que votre installation semble fonctionner
correctement.

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 18 / 40


Focus sur Docker CLI

Run An Image - List Images


Un raccourci pour construire un conteneur à partir d’une image et
l’exécuter : commande docker run.
commande crée un nouveau conteneur pour une image et l’exécute

☛ docker run hello-world


Hello from Docker :
Ce message indique que votre installation semble fonctionner
correctement.

Voir les images sont déjà installées :commande docker image ls.

☛ docker image ls

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 19 / 40


Focus sur Docker CLI

List Containers

Lister les conteneurs construits : commande docker container ls


option -a : tous les conteneurs arrêtés et en cours d’exécution.

☛ docker container ls –a

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 20 / 40


Focus sur Docker CLI

Running Interactively
Permet d’exécuter des commandes à l’intérieur du conteneur s’il le
supporte
option -a : tous les conteneurs arrêtés et en cours d’exécution.

☛ docker run -it openjdk

permet d’exécuter des commandes Java ligne par ligne dans un shell
Java.
Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 21 / 40
Focus sur Docker CLI

List Running Processes

Lister les conteneurs en cours d’exécution : commande docker ps


utile lorsque vous exécutez des conteneurs en arrière-plan.

☛ docker ps

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 22 / 40


Focus sur Docker CLI

Interactive shell

☛ docker run -it ubuntu bash

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 23 / 40


Gestion des Containers de Docker

Sommaire

1 Objectifs et Contenu

2 Pourquoi Conteneuriser (avec Docker) ?

3 Focus sur Docker CLI

4 Gestion des Containers de Docker

5 Gestion des Images Docker

6 Dockerfile

7 Docker registry

8 Atelier

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 24 / 40


Gestion des Containers de Docker

Docker Containers : Lifecycle

Les conteneurs sont aux machines virtuelles ce que les threads sont aux
processus.

☛ docker create : Creates a container but does not start it


☛ docker rename : Allows the container to be renamed
☛ docker run : Creates and starts a container in one operation
☛ docker rm : Deletes a container
☛ docker udapte : Updates a container’s resource limits
☛ docker run - -rm : Removes container when stopped
☛ docker run - -v : Removes volumes associated with container
☛ docker run - -log-driver=syslog : Runs Docker with custom log driver

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 25 / 40


Gestion des Containers de Docker

Docker Containers : Starting and Stopping

☛ docker start : Starts a container, so it is running


☛ docker stop : Stops a running container
☛ docker restart : Stops and starts a container
☛ docker pause : Pauses a running container, freezing it in place
☛ docker unpause : Unpauses a running container
☛ docker wait : Blocks until running container stops
☛ docker kill : Sends a SIGKILL to a running container
☛ docker attach : Connects to a running container

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 26 / 40


Gestion des Containers de Docker

Docker Containers : Information on ...

containers, processes and performance


☛ docker ps : Shows running containers
☛ docker logs : Gets logs from container
☛ docker inspect : Stops and starts a container
☛ docker events : Gets events from container
☛ docker port : Shows public facing port of container
☛ docker top : Shows running processes in container
☛ docker stats : Shows containers’ resource usage statistics
☛ docker diff : Shows changed files in the container’s filesystem
☛ docker ps -a : Shows running and stopped containers
☛ docker stats - - all : Shows a running list of containers

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 27 / 40


Gestion des Containers de Docker

Docker Containers

Import / Export
☛ docker cp : Copies files or folders between a container and the local
filesystem
☛ docker export : Turns container filesystem into tarball archive stream to
STDOUT

Executing Commands
☛ docker exec : Executes a command in container
To enter a running container, attach a new shell process to a running
container called foo
docker exec -it foo /bin/bash

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 28 / 40


Gestion des Images Docker

Sommaire

1 Objectifs et Contenu

2 Pourquoi Conteneuriser (avec Docker) ?

3 Focus sur Docker CLI

4 Gestion des Containers de Docker

5 Gestion des Images Docker

6 Dockerfile

7 Docker registry

8 Atelier

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 29 / 40


Gestion des Images Docker

Docker Images : Life cycle of Containers

Create, Run, Build, Commit, Info


☛ docker images : Shows all images
☛ docker import : Creates an image from a tarball
☛ docker build : Creates image from Dockerfile
☛ docker commit : Creates image from a container, pausing it temporarily if
it is running
☛ docker rmi : Removes an image
☛ docker load : Loads an image from a tar archive as STDIN, including
images and tags
☛ docker save : Saves an image to a tar archive stream to STDOUT with all
parent layers, tags and versions
☛ docker history : Shows history of image
☛ docker tag : Tags an image to a name (local or registry)
Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 30 / 40
Gestion des Images Docker

Docker Images : Life cycle of Containers

Cleaning up
☛ docker rmi : commande pour supprimer des images spécifiques
☛ docker -gci : nettoie les images qui ne sont plus utilisées par aucun
conteneur

Images Created by Redirection


☛ docker load <my _image.tar.gz : Charger une image à partir d’un fichier
☛ docker save my _imagemy _tag > my _image.tar .gz : Enregistrer une
image existante

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 31 / 40


Gestion des Images Docker

Docker Images : Life cycle of Containers

Import/Export Container
☛ cat my _container .tar .gz | docker import - my _imagemy _tag : Importer
un conteneur en tant qu’image à partir d’un fichier
☛ docker export my _container > my _container .tar .gz : Exporter un
conteneur existant

Loading a saved image vs importing an exported container as an image


☛ load : crée une nouvelle image, y compris son historique
☛ import : crée une nouvelle image, en excluant l’historique, ce qui réduit la
taille de l’image par rapport au chargement d’une image

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 32 / 40


Dockerfile

Sommaire

1 Objectifs et Contenu

2 Pourquoi Conteneuriser (avec Docker) ?

3 Focus sur Docker CLI

4 Gestion des Containers de Docker

5 Gestion des Images Docker

6 Dockerfile

7 Docker registry

8 Atelier

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 33 / 40


Dockerfile

Dockerfile

☛ Fichier de configuration.
☛ Configure un conteneur Docker lorsque vous exécutez docker build
dessus

☛ .dockerignore : Fichiers et répertoires à ignorer lors du docker build -t du


Dockerfile
☛ FROM : Définit l’image de base pour les instructions suivantes
☛ MAINTAINER : Définit le champ Auteur des images générées
☛ RUN : exécute les commande dans le l’image du conteneur
☛ CMD : Fournit des valeurs par défaut pour un conteneur en cours
d’exécution.
☛ EXPOSE : informe Docker que le conteneur écoute les ports réseau
spécifiés au moment de l’exécution
☛ ENV : définit les variables d’environnement
Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 34 / 40
Dockerfile

Dockerfile

☛ ADD : Copie de nouveaux fichiers, répertoires ou fichiers distants dans le


conteneur (à éviter utiliser COPY à la place car invalide les caches)
☛ COPY : Définit l’image de base pour les instructions suivantes
☛ ENTRYPOINT : Configure un conteneur qui s’exécutera en tant que
exécutable
☛ VOLUME : Crée un point de montage pour les volumes
☛ USER : Définit le nom d’utilisateur pour les commandes
RUN/CMD/ENTRYPOINT
☛ WORKDIR : Définit le répertoire de travail
☛ ARG : Définit une variable d’exécution
☛ ONBUILD : Ajoute une instruction de déclenchement lorsque l’image est
utilisée comme base lors d’un build
☛ STOPSIGNAL : Définit le signal qui sera envoyé au conteneur pour le
quitter.
Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 35 / 40
Docker registry

Sommaire

1 Objectifs et Contenu

2 Pourquoi Conteneuriser (avec Docker) ?

3 Focus sur Docker CLI

4 Gestion des Containers de Docker

5 Gestion des Images Docker

6 Dockerfile

7 Docker registry

8 Atelier

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 36 / 40


Docker registry

Docker Hub

☛ Docker maintient son propre base d’image (regestry) : Docker Hub


☛ Contient un grand nombre d’images

☛ docker login : connexion au Docker Hub


☛ docker logout : Déconnexion du Docker Hub
☛ docker search : cherche une image dans Docker Hub
☛ docker pull : une image du Docker Hub vers la machine locale
☛ docker push : ne image dans Docker Hub à partir de la machine locale

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 37 / 40


Atelier

Sommaire

1 Objectifs et Contenu

2 Pourquoi Conteneuriser (avec Docker) ?

3 Focus sur Docker CLI

4 Gestion des Containers de Docker

5 Gestion des Images Docker

6 Dockerfile

7 Docker registry

8 Atelier

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 38 / 40


Atelier

Atelier : plateforme de conteneurisation Docker

Tâches à faire
☛ Portainer
☛ Docker HUB
☛ Dockerfile
☛ Docker Compose

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 39 / 40


Chapitre suivant : KVM

Chapitre 02 : Conteneurisation avec Docker

Dr Mandicou BA
mandicou.ba@esp.sn
http://www.mandicouba.net

Diplôme d’Ingénieuer de Conception (DIC, 3e année)


Master Professionel (Master, 2e année)
Options : GLSI et SRT

Dr Mandicou BA (ESP) Infrastructures de Virtualisation (DIC2) 40 / 40

Vous aimerez peut-être aussi