Conteneurisation
Cette photo par Auteur inconnu est soumise à la licence CC BY-SA
Plan
• Conteneurisation avec Docker
• Les images
• Les conteneurs
• Gestion des volumes
• Le réseau
• Orchestration des conteneurs
La conteneurisation
La conteneurisation est définie comme une forme de virtualisation du
système d'exploitation, à travers laquelle les applications sont
exécutées dans des espaces utilisateur isolés appelés conteneurs, tous
utilisant le même système d'exploitation (SE) partagé.
Un conteneur est essentiellement un environnement informatique
entièrement packagé et portable
LXC (LinuX Containers)
Contenur1 Contenur2
App A App B Objectif
Librairies et Librairies/bin
binaires aires Avoir un environnement aussi proche que possible mais sans le
surcoût associé à l'utilisation d'un noyau séparé ou à la simulation
de matériel.
LXC (Contrôleur) Un conteneur n’inclut pas d’OS, les conteneurs accèdent à l’OS
hôte d’une manière isolée les uns des autres
Linux Kernel Un conteneur virtualise l’environnement d’exécution: processeur,
système de fichiers, mémoire et ne virtualise pas la machine
Hardware LXC repose sur deux fonctionnalités du noyau Linux:
- cgroups (control groups):
- les namespaces: qui permettent d’isoler les ressources
de chaque groupe.
Machines virtuelles / Contenur
2013 basé sur LXC à l’origine
• Le service dockerd: gère les requêtes et les objets dockers:
images,conteneurs,volumes, réseaux.
Architecture Docker • Le client (docker): outil pour communiquer avec le service
docker
• Le registry docker : stocke les images
OCI Open Container
Initiative • Définit un standard pour les
conteneurs et leurs
environnements d’exécution
• Le consortium OCI a été
fondé en 2015 par un groupe
d’entreprises pour
développer des standards
ouverts de référence pour
les conteneurs,
indépendants des plates-
formes.
Image Docker
Template pour créer des conteneurs
Image DockerFile
Docker hub
Une image est constituée
d’une collection de layers
(couches)et de
métadonnées Conteneur Conteneur Conteneur
Un layer est un ensemble
de modifications sur des
fichiers.
Conteneur
Exécute une instance d’une image
PULL [NOM_IMAGE]:
TÉLÉCHARGER UNE IMAGE
Commandes
SEARCH [CRITERE]:
de gestion RECHERCHER DES IMAGES
des images
IMAGES: AFFICHER LA
LISTE DES IMAGES LOCALES
Commandes de gestion des conteneurs
run [nom_image]: exécute un
conteneur
-docker rm <container>
-it exécute le conteneur en
mode interactif
ps: liste des conteneurs actifs
dans le système,pour afficher - docker stop <container id>
tous les conteneurs il faut
ajouter l’option –a. -docker pause <container>
-aq liste les UUID des - Docker start <container>
conteneurs
Un volume docker ne dépend pas du cycle de vie d’un conteneur
et peut être partagé par plusieurs conteneurs
Commandes de
gestion des volume create [nom_volume]: crée un volume docker
volumes
run –mount:pour exécuter un conteneur en lui attachant un
volume docker, utiliser les options suivantes
source=[nom_volume],destination=[chemin_dans_conteneur]
[docker_image]
Atelier
docker run -it --name mc1 centos /bin/bash
[root@386ec090afdc /]# hostname
386ec090afdc
[root@386ec090afdc /]# exit
stop le container
docker start mycontainer
docker attach mycontainer
[root@386ec090afdc /]#
ensuite pour le mettre en background
faire Crtl-p Crtl-q
et
docker ps
Pour lancer un container en tâche de fond en ligne de commande faire
docker run -it -d --name mycontainer centos /bin/bash
docker run -d --name mytest ubuntu
/bin/bash -c "while true; do date ; sleep
docker 5;rundone"-d --name mytest ubuntu
/bin/bash# faire les
-ccommandes suivantes
"while true; doet date
vérifier;chaques
sleeprésultats à
5; done" chaque étape
docker
# faire les commandesps suivantes et vérifier chaques résultats à
chaquedocker
étape logs mytest
docker docker
ps pause mytest
docker docker
logs logs mytest
mytest
docker docker
pauseunpause
mytest mytest
docker docker
logs logs mytest
mytest
docker unpause mytest
docker logs mytest
Voir les changements à l'intérieur d’un container
Par rapport à l’image sur le disque
[root@9e02ac8c48be /]#
ls -ld
touch {abc,def,ghi}
ls
ls -ld
ls -alrt
[fedora@ansible ~]$ docker diff 9e02ac8c48be
A /ghi
A /abc
A /def
C dénote un changement , A dénote un ajout , D denote un retrait
la commande diff répertorie les fichiers et répertoires modifiés dans le système de 15
fichiers d'un conteneur depuis sa création.
Les 4 manières de créer une image Docker
docker commit: crée une image à partir d’un container
docker commit c3f279d17e0a test:version3
docker load : command docker load --input < fichier tar créé par un docker
export>
docker load --input [Link]
commandes intermediaires qui creent un fichier de type archive (tar)
docket save : docker pull busybox:latest
docker save -o [Link] busybox:latest
docker export: command docker pour exporter un container
docker export red_panda > [Link]
A Noter: Attention à la différence entre les commandes SAVE et EXPORT
docker import : crée une image en important un fichier tar d’une image 16
KVM qcow2 par exemple cat [Link] | sudo docker