Docker Presentation
Docker Presentation
Docker Presentation
Bases
Utilisation avancées
Toujours plus loin
Jean-Mathieu Chantrein
LERIA
9 novembre 2018
1/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases
Utilisation avancées
Toujours plus loin
Licence
2/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases
Utilisation avancées
Toujours plus loin
Plan
1 Introduction générale
Conteneur versus machine virtuelle
Des technologies de conteneurisations différentes pour des objectifs différents
2 Bases
Introduction
Définitions et prérequis
Premiers pas
Volatilité, persistance et sécurité des données
Sécurité des conteneurs
Conteneurs graphiques
3 Utilisation avancées
Créations d’images : méthode naı̈ve
Créations d’images : Dockerfile
4 Toujours plus loin
Travaux pratiques
3/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Plan
1 Introduction générale
Conteneur versus machine virtuelle
Des technologies de conteneurisations différentes pour des objectifs différents
2 Bases
Introduction
Définitions et prérequis
Premiers pas
Volatilité, persistance et sécurité des données
Sécurité des conteneurs
Conteneurs graphiques
3 Utilisation avancées
Créations d’images : méthode naı̈ve
Créations d’images : Dockerfile
4 Toujours plus loin
Travaux pratiques
4/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Introduction
Dans cette section nous allons définir quelques notions qui nous permettront de
mieux appréhender les principales différences qu’il y a entre une machine physique
(réelle), une machine virtuelle et un conteneur.
5/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
6/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
6/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
6/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
6/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
6/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
7/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
7/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
7/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
7/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
7/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
8/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Avantages
Portabilité des VM
Isolation des applications
Mutualisations des ressources
Ressources à la demande
Démarrage plus rapide qu’une
machine réelle
8/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Avantages
Portabilité des VM
Isolation des applications
Mutualisations des ressources
Ressources à la demande
Démarrage plus rapide qu’une
machine réelle
8/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Avantages
Portabilité des VM
Isolation des applications
Mutualisations des ressources
Ressources à la demande
Démarrage plus rapide qu’une
machine réelle
8/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Avantages
Portabilité des VM
Isolation des applications
Mutualisations des ressources
Ressources à la demande
Démarrage plus rapide qu’une
machine réelle
8/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Avantages
Portabilité des VM
Isolation des applications
Mutualisations des ressources
Ressources à la demande
Démarrage plus rapide qu’une
machine réelle
8/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Inconvénients
Performance inférieure à une
exécution native
Consommation de mémoire vive
importante
Consommation de mémoire de
masse importante
Plus lent qu’ un conteneur
8/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Inconvénients
Performance inférieure à une
exécution native
Consommation de mémoire vive
importante
Consommation de mémoire de
masse importante
Plus lent qu’ un conteneur
8/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Inconvénients
Performance inférieure à une
exécution native
Consommation de mémoire vive
importante
Consommation de mémoire de
masse importante
Plus lent qu’ un conteneur
8/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Inconvénients
Performance inférieure à une
exécution native
Consommation de mémoire vive
importante
Consommation de mémoire de
masse importante
Plus lent qu’ un conteneur
8/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
9/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
9/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
9/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
9/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
La conteneurisation
Un conteneur fournit un environnement d’exécution isolé pour une/des
applications
Un conteneur partage le noyau du système d’exploitation de l’hôte
L’isolation est effectuée par des fonctionnalités du noyau (cgroups,
usernamespace, capabilities)
Il existe différents types de conteneurs (chroot, Docker, LXC, OpenVZ,
Rocket, Singularity, ...)
On appelle hyperviseur ou orchestrateur le logiciel ayant pour mission de
gérer les conteneurs (LXD, proxmox (pct), compose, swarm, kubernetes)
10/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
La conteneurisation
Un conteneur fournit un environnement d’exécution isolé pour une/des
applications
Un conteneur partage le noyau du système d’exploitation de l’hôte
L’isolation est effectuée par des fonctionnalités du noyau (cgroups,
usernamespace, capabilities)
Il existe différents types de conteneurs (chroot, Docker, LXC, OpenVZ,
Rocket, Singularity, ...)
On appelle hyperviseur ou orchestrateur le logiciel ayant pour mission de
gérer les conteneurs (LXD, proxmox (pct), compose, swarm, kubernetes)
10/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
La conteneurisation
Un conteneur fournit un environnement d’exécution isolé pour une/des
applications
Un conteneur partage le noyau du système d’exploitation de l’hôte
L’isolation est effectuée par des fonctionnalités du noyau (cgroups,
usernamespace, capabilities)
Il existe différents types de conteneurs (chroot, Docker, LXC, OpenVZ,
Rocket, Singularity, ...)
On appelle hyperviseur ou orchestrateur le logiciel ayant pour mission de
gérer les conteneurs (LXD, proxmox (pct), compose, swarm, kubernetes)
10/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
La conteneurisation
Un conteneur fournit un environnement d’exécution isolé pour une/des
applications
Un conteneur partage le noyau du système d’exploitation de l’hôte
L’isolation est effectuée par des fonctionnalités du noyau (cgroups,
usernamespace, capabilities)
Il existe différents types de conteneurs (chroot, Docker, LXC, OpenVZ,
Rocket, Singularity, ...)
On appelle hyperviseur ou orchestrateur le logiciel ayant pour mission de
gérer les conteneurs (LXD, proxmox (pct), compose, swarm, kubernetes)
10/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
La conteneurisation
Un conteneur fournit un environnement d’exécution isolé pour une/des
applications
Un conteneur partage le noyau du système d’exploitation de l’hôte
L’isolation est effectuée par des fonctionnalités du noyau (cgroups,
usernamespace, capabilities)
Il existe différents types de conteneurs (chroot, Docker, LXC, OpenVZ,
Rocket, Singularity, ...)
On appelle hyperviseur ou orchestrateur le logiciel ayant pour mission de
gérer les conteneurs (LXD, proxmox (pct), compose, swarm, kubernetes)
10/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
11/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Avantages
Portabilité des conteneurs (+ ou -)
Isolations des applications (+ ou -)
Mutualisations des ressources
Ressources à la demande
Démarrage quasiment aussi rapide
qu’une application native
Contrairement aux VMs, pas
d’overhead (économisation des
ressources matérielles)
11/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Avantages
Portabilité des conteneurs (+ ou -)
Isolations des applications (+ ou -)
Mutualisations des ressources
Ressources à la demande
Démarrage quasiment aussi rapide
qu’une application native
Contrairement aux VMs, pas
d’overhead (économisation des
ressources matérielles)
11/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Avantages
Portabilité des conteneurs (+ ou -)
Isolations des applications (+ ou -)
Mutualisations des ressources
Ressources à la demande
Démarrage quasiment aussi rapide
qu’une application native
Contrairement aux VMs, pas
d’overhead (économisation des
ressources matérielles)
11/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Avantages
Portabilité des conteneurs (+ ou -)
Isolations des applications (+ ou -)
Mutualisations des ressources
Ressources à la demande
Démarrage quasiment aussi rapide
qu’une application native
Contrairement aux VMs, pas
d’overhead (économisation des
ressources matérielles)
11/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Avantages
Portabilité des conteneurs (+ ou -)
Isolations des applications (+ ou -)
Mutualisations des ressources
Ressources à la demande
Démarrage quasiment aussi rapide
qu’une application native
Contrairement aux VMs, pas
d’overhead (économisation des
ressources matérielles)
11/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Avantages
Portabilité des conteneurs (+ ou -)
Isolations des applications (+ ou -)
Mutualisations des ressources
Ressources à la demande
Démarrage quasiment aussi rapide
qu’une application native
Contrairement aux VMs, pas
d’overhead (économisation des
ressources matérielles)
11/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Inconvénients
Ne permet d’exécuter que des
applications compatibles avec le
système hôte
Peut-être sans état, volatile
(dépend des technologies
employées) ⇒ pas de snapshot
RAM incluse, pas de persistance
des données nativement
11/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Inconvénients
Ne permet d’exécuter que des
applications compatibles avec le
système hôte
Peut-être sans état, volatile
(dépend des technologies
employées) ⇒ pas de snapshot
RAM incluse, pas de persistance
des données nativement
11/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Inconvénients (suite)
Certaines de ces technologies sont
encore jeunes (docker, singularity)
Courbe d’apprentissage un peu plus
élevée que pour des VM
Évolution très (trop ?) rapide
Va-t-on vraiment vers un
changement de paradigme ?
11/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Inconvénients (suite)
Certaines de ces technologies sont
encore jeunes (docker, singularity)
Courbe d’apprentissage un peu plus
élevée que pour des VM
Évolution très (trop ?) rapide
Va-t-on vraiment vers un
changement de paradigme ?
11/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Inconvénients (suite)
Certaines de ces technologies sont
encore jeunes (docker, singularity)
Courbe d’apprentissage un peu plus
élevée que pour des VM
Évolution très (trop ?) rapide
Va-t-on vraiment vers un
changement de paradigme ?
11/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Inconvénients (suite)
Certaines de ces technologies sont
encore jeunes (docker, singularity)
Courbe d’apprentissage un peu plus
élevée que pour des VM
Évolution très (trop ?) rapide
Va-t-on vraiment vers un
changement de paradigme ?
11/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Divers
On peut imbriquer plusieurs VM ou plusieurs conteneurs les uns dans les autres
(en anglais nested virtualisation/containers)
12/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
13/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Terminal:
jmc@laptop/home/jmc $ mkdir new root
jmc@laptop/home/jmc $ cp -r /bin/ new root/
jmc@laptop/home/jmc $ sudo chroot new root /bin/bash
jmc@laptop/home/jmc $ # Zut alors
13/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Terminal:
jmc@laptop/home/jmc $ ldd /bin/bash
jmc@laptop/home/jmc $ cp -r /lib new root/
jmc@laptop/home/jmc $ cp -r /lib64 new root/
jmc@laptop/home/jmc $ sudo chroot new root /bin/bash
bash-4.3# pwd
/
bash-4.3# echo $UID
0
bash-4.3# exit
jmc@laptop/home/jmc $
13/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Terminal:
jmc@laptop/home/jmc $ sudo chroot –userspec 2000 :2000 new root /bin/bash
bash-4.3# echo $UID
2000
bash-4.3# ls -l / # A vous de voir
bash-4.3# rm -r –no-preserve-root / # A votre avis ? Et lorsque on ne met pas
l’option userspec ?
bash-4.3# exit
jmc@laptop/home/jmc $
13/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Plan
1 Introduction générale
Conteneur versus machine virtuelle
Des technologies de conteneurisations différentes pour des objectifs différents
2 Bases
Introduction
Définitions et prérequis
Premiers pas
Volatilité, persistance et sécurité des données
Sécurité des conteneurs
Conteneurs graphiques
3 Utilisation avancées
Créations d’images : méthode naı̈ve
Créations d’images : Dockerfile
4 Toujours plus loin
Travaux pratiques
14/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Il s’agit des conteneurs qui ont pour objectif de n’exécuter qu’une application,
qu’un service, voire même qu’un seul processus. Les deux principaux concurrents
sont :
Docker (Docker Inc.)
Rocket (CoreOS Inc.)
Ce sont des technologies très prisées par le monde du DevOps (relation entre les
développeurs et les administrateurs systèmes/réseaux).
L’utilisation de ces technologies met en avant l’utilisation des architectures de
micro-services (1 conteneur = 1 micro-service, multi-conteneurisation du service).
Il s’agit de conteneur sans état (stateless), il n’y a pas de persistance de données
par défaut, car ces conteneurs sont volatiles.
15/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
Ce sont des conteneurs qui ont pour objectif de remplacer les VM. Ils diffèrent des
conteneurs applicatifs dans le sens ou ils peuvent fournir un ensemble de (micro)
services. Ce sont des conteneurs avec état (statefull) : ils offrent une persistance
des données et ils ont pour vocation d’être manipulés comme des VMs (snapshot,
backup, migration à chaud). Les principaux concurrents sont :
LXC (via LXD, Canonical)
LXC (via Proxmox pct, Proxmox)
OpenVZ
Les conteneurs LXC sont capables d’héberger des conteneurs Docker (sous
conditions : voir
https://stgraber.org/2016/04/13/lxd-2-0-docker-in-lxd-712/).
16/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Conteneur versus machine virtuelle
Utilisation avancées Des technologies de conteneurisations différentes pour des objectifs différents
Toujours plus loin
17/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Plan
1 Introduction générale
Conteneur versus machine virtuelle
Des technologies de conteneurisations différentes pour des objectifs différents
2 Bases
Introduction
Définitions et prérequis
Premiers pas
Volatilité, persistance et sécurité des données
Sécurité des conteneurs
Conteneurs graphiques
3 Utilisation avancées
Créations d’images : méthode naı̈ve
Créations d’images : Dockerfile
4 Toujours plus loin
Travaux pratiques
18/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
La puissance de docker ?
Démonstration wordpress PWD
19/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
20/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
20/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
20/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
20/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
20/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Historique
Solomon Hykes débute le projet Docker en interne pour DotCloud en France.
Docker a été distribué en tant que projet open source à partir de mars 2013
À partir de la version 0.9, Docker abandonne l’utilisation de LXC et
développe sa propre librairie de conteneurs : libcontainer
Docker est principalement développé par la société Docker Inc
En 3 ans, 10 000 forks et 1400 contributeurs sur github pour le projet Docker
21/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Carte d’identité
22/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
23/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
23/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
23/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Installation
Ubuntu 16.04 (VM ou natif)
Dernière version stable de docker en CE (Community Edition)
https://docs.docker.com/engine/installation/linux/ubuntu/
#uninstall-old-versions
https://docs.docker.com/engine/installation/linux/ubuntu/
#install-using-the-repository
24/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Terminal:
jmc@laptop/home/jmc $ sudo usermod -aG docker $USER
jmc@laptop/home/jmc $ # Déconnexion, reconnexion
jmc@laptop/home/jmc $ systemctl enable docker # Activation au démarrage de
l’hôte
Considérez que vous êtes root à chaque fois que votre commande est préfixée
par docker
24/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Terminal:
jmc@laptop/home/jmc $ sudo usermod -aG docker $USER
jmc@laptop/home/jmc $ # Déconnexion, reconnexion
jmc@laptop/home/jmc $ systemctl enable docker # Activation au démarrage de
l’hôte
Considérez que vous êtes root à chaque fois que votre commande est préfixée
par docker
24/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Plan
1 Introduction générale
Conteneur versus machine virtuelle
Des technologies de conteneurisations différentes pour des objectifs différents
2 Bases
Introduction
Définitions et prérequis
Premiers pas
Volatilité, persistance et sécurité des données
Sécurité des conteneurs
Conteneurs graphiques
3 Utilisation avancées
Créations d’images : méthode naı̈ve
Créations d’images : Dockerfile
4 Toujours plus loin
Travaux pratiques
25/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Définitions formelles
Les images et les couches : bases des conteneurs docker
Une image désigne une collection ordonnée (par empilement) de
modifications d’un système de fichiers racine.
On conserve chacune de ces modifications du FS dans une couche ou un
layer identifiable par le hash sha256 de son contenu. ⇒ Une image désigne
donc une collection ordonnée de couche.
A chaque couche intermédiaire est associé une image intermédiaire.
Les couches sont créées grâce à l’exécution de conteneurs qui sont
transformés en image. (Pas de panique, on va faire un schéma)
Il peut y avoir des couches vides (empty layer).
Les couches désignées par une image sont nécessairement en lecture seule.
Une image est unique. Elle est identifiée par une fonction de hachage sha256
de son descriptif. Elle n’a pas d’état (i.e. : on n’exécute pas une image) et
elle est immuable.
26/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Définitions formelles
Les images et les couches : bases des conteneurs docker
Une image désigne une collection ordonnée (par empilement) de
modifications d’un système de fichiers racine.
On conserve chacune de ces modifications du FS dans une couche ou un
layer identifiable par le hash sha256 de son contenu. ⇒ Une image désigne
donc une collection ordonnée de couche.
A chaque couche intermédiaire est associé une image intermédiaire.
Les couches sont créées grâce à l’exécution de conteneurs qui sont
transformés en image. (Pas de panique, on va faire un schéma)
Il peut y avoir des couches vides (empty layer).
Les couches désignées par une image sont nécessairement en lecture seule.
Une image est unique. Elle est identifiée par une fonction de hachage sha256
de son descriptif. Elle n’a pas d’état (i.e. : on n’exécute pas une image) et
elle est immuable.
26/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Définitions formelles
Les images et les couches : bases des conteneurs docker
Une image désigne une collection ordonnée (par empilement) de
modifications d’un système de fichiers racine.
On conserve chacune de ces modifications du FS dans une couche ou un
layer identifiable par le hash sha256 de son contenu. ⇒ Une image désigne
donc une collection ordonnée de couche.
A chaque couche intermédiaire est associé une image intermédiaire.
Les couches sont créées grâce à l’exécution de conteneurs qui sont
transformés en image. (Pas de panique, on va faire un schéma)
Il peut y avoir des couches vides (empty layer).
Les couches désignées par une image sont nécessairement en lecture seule.
Une image est unique. Elle est identifiée par une fonction de hachage sha256
de son descriptif. Elle n’a pas d’état (i.e. : on n’exécute pas une image) et
elle est immuable.
26/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Définitions formelles
Les images et les couches : bases des conteneurs docker
Une image désigne une collection ordonnée (par empilement) de
modifications d’un système de fichiers racine.
On conserve chacune de ces modifications du FS dans une couche ou un
layer identifiable par le hash sha256 de son contenu. ⇒ Une image désigne
donc une collection ordonnée de couche.
A chaque couche intermédiaire est associé une image intermédiaire.
Les couches sont créées grâce à l’exécution de conteneurs qui sont
transformés en image. (Pas de panique, on va faire un schéma)
Il peut y avoir des couches vides (empty layer).
Les couches désignées par une image sont nécessairement en lecture seule.
Une image est unique. Elle est identifiée par une fonction de hachage sha256
de son descriptif. Elle n’a pas d’état (i.e. : on n’exécute pas une image) et
elle est immuable.
26/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Définitions formelles
Les images et les couches : bases des conteneurs docker
Une image désigne une collection ordonnée (par empilement) de
modifications d’un système de fichiers racine.
On conserve chacune de ces modifications du FS dans une couche ou un
layer identifiable par le hash sha256 de son contenu. ⇒ Une image désigne
donc une collection ordonnée de couche.
A chaque couche intermédiaire est associé une image intermédiaire.
Les couches sont créées grâce à l’exécution de conteneurs qui sont
transformés en image. (Pas de panique, on va faire un schéma)
Il peut y avoir des couches vides (empty layer).
Les couches désignées par une image sont nécessairement en lecture seule.
Une image est unique. Elle est identifiée par une fonction de hachage sha256
de son descriptif. Elle n’a pas d’état (i.e. : on n’exécute pas une image) et
elle est immuable.
26/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Définitions formelles
Les images et les couches : bases des conteneurs docker
Une image désigne une collection ordonnée (par empilement) de
modifications d’un système de fichiers racine.
On conserve chacune de ces modifications du FS dans une couche ou un
layer identifiable par le hash sha256 de son contenu. ⇒ Une image désigne
donc une collection ordonnée de couche.
A chaque couche intermédiaire est associé une image intermédiaire.
Les couches sont créées grâce à l’exécution de conteneurs qui sont
transformés en image. (Pas de panique, on va faire un schéma)
Il peut y avoir des couches vides (empty layer).
Les couches désignées par une image sont nécessairement en lecture seule.
Une image est unique. Elle est identifiée par une fonction de hachage sha256
de son descriptif. Elle n’a pas d’état (i.e. : on n’exécute pas une image) et
elle est immuable.
26/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Définitions formelles
Les images et les couches : bases des conteneurs docker
Une image désigne une collection ordonnée (par empilement) de
modifications d’un système de fichiers racine.
On conserve chacune de ces modifications du FS dans une couche ou un
layer identifiable par le hash sha256 de son contenu. ⇒ Une image désigne
donc une collection ordonnée de couche.
A chaque couche intermédiaire est associé une image intermédiaire.
Les couches sont créées grâce à l’exécution de conteneurs qui sont
transformés en image. (Pas de panique, on va faire un schéma)
Il peut y avoir des couches vides (empty layer).
Les couches désignées par une image sont nécessairement en lecture seule.
Une image est unique. Elle est identifiée par une fonction de hachage sha256
de son descriptif. Elle n’a pas d’état (i.e. : on n’exécute pas une image) et
elle est immuable.
26/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
27/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
27/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
27/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
27/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
27/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
28/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
28/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
28/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
28/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
28/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
28/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
28/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
28/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Représentation graphique
29/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Représentation graphique
29/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Représentation graphique
29/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Représentation graphique
29/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Représentation graphique
29/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Représentation graphique
29/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Représentation graphique
29/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Représentation graphique
29/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Représentation graphique
29/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Représentation graphique
29/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Représentation graphique
29/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Représentation graphique
29/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Représentation graphique
29/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Représentation graphique
29/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Images particulières
Une ”top level image” n’est pas une image intermédiaire
Une image taguée ”none” est une image intermédiaire, sinon c’est une top
level image pendante (dangling)
Une image taguée ”missing” est une image manquante mais dont on a
obtenu le layer associé (via docker pull)
30/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Images particulières
Une ”top level image” n’est pas une image intermédiaire
Une image taguée ”none” est une image intermédiaire, sinon c’est une top
level image pendante (dangling)
Une image taguée ”missing” est une image manquante mais dont on a
obtenu le layer associé (via docker pull)
30/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Images particulières
Une ”top level image” n’est pas une image intermédiaire
Une image taguée ”none” est une image intermédiaire, sinon c’est une top
level image pendante (dangling)
Une image taguée ”missing” est une image manquante mais dont on a
obtenu le layer associé (via docker pull)
30/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Images particulières
Une ”top level image” n’est pas une image intermédiaire
Une image taguée ”none” est une image intermédiaire, sinon c’est une top
level image pendante (dangling)
Une image taguée ”missing” est une image manquante mais dont on a
obtenu le layer associé (via docker pull)
30/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Images particulières
Une ”top level image” n’est pas une image intermédiaire
Une image taguée ”none” est une image intermédiaire, sinon c’est une top
level image pendante (dangling)
Une image taguée ”missing” est une image manquante mais dont on a
obtenu le layer associé (via docker pull)
30/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Images particulières
Une ”top level image” n’est pas une image intermédiaire
Une image taguée ”none” est une image intermédiaire, sinon c’est une top
level image pendante (dangling)
Une image taguée ”missing” est une image manquante mais dont on a
obtenu le layer associé (via docker pull)
30/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Images particulières
Une ”top level image” n’est pas une image intermédiaire
Une image taguée ”none” est une image intermédiaire, sinon c’est une top
level image pendante (dangling)
Une image taguée ”missing” est une image manquante mais dont on a
obtenu le layer associé (via docker pull)
30/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Images particulières
Une ”top level image” n’est pas une image intermédiaire
Une image taguée ”none” est une image intermédiaire, sinon c’est une top
level image pendante (dangling)
Une image taguée ”missing” est une image manquante mais dont on a
obtenu le layer associé (via docker pull)
30/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
31/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
32/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
33/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Gestion de docker
docker info : affiche des informations relatives à l’écosystème docker sur la
machine
docker inspect : affiche des informations de bas niveau sur des objets docker
(images, conteneurs, réseaux, ...)
docker version : affiche la version de docker
34/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
35/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
35/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
35/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
35/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
35/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
35/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
35/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
35/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
”Philosophies” de docker ?
36/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
”Philosophies” de docker ?
36/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
”Philosophies” de docker ?
36/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Plan
1 Introduction générale
Conteneur versus machine virtuelle
Des technologies de conteneurisations différentes pour des objectifs différents
2 Bases
Introduction
Définitions et prérequis
Premiers pas
Volatilité, persistance et sécurité des données
Sécurité des conteneurs
Conteneurs graphiques
3 Utilisation avancées
Créations d’images : méthode naı̈ve
Créations d’images : Dockerfile
4 Toujours plus loin
Travaux pratiques
37/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Hello world !
Terminal:
jmc@laptop/home/jmc $ docker run hello-world
Unable to find image ’hello-world :latest’ locally
latest : Pulling from library/hello-world
78445dd45222 : Downloading [===============> ]
38/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Hello world !
Terminal:
jmc@laptop/home/jmc $ docker run hello-world
Unable to find image ’hello-world :latest’ locally
latest : Pulling from library/hello-world
78445dd45222 : Extracting [=========> ]
38/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Hello world !
Terminal:
jmc@laptop/home/jmc $ docker run hello-world
Unable to find image ’hello-world :latest’ locally
latest : Pulling from library/hello-world
78445dd45222 : Pull complete
Digest :
sha256 :c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Status : Downloaded newer image for hello-world :latest
...
38/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Terminal:
Conteneur:
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://cloud.docker.com/
38/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Terminal:
jmc@laptop/home/jmc $ docker ps
jmc@laptop/home/jmc $ docker ps -a
Terminal:
jmc@laptop/home/jmc $ docker ps
jmc@laptop/home/jmc $ docker ps -a
Terminal:
jmc@laptop/home/jmc $ docker ps
jmc@laptop/home/jmc $ docker ps -a
Terminal:
jmc@laptop/home/jmc $ docker ps
jmc@laptop/home/jmc $ docker ps -a
Hello world !
Terminal:
jmc@laptop/home/jmc $ docker images
Hello world !
Terminal:
jmc@laptop/home/jmc $ docker images
Hello world !
Terminal:
jmc@laptop/home/jmc $ docker images
Hello world !
Terminal:
jmc@laptop/home/jmc $ docker images
Hello world !
Terminal:
jmc@laptop/home/jmc $ docker rm furious pare # docker rm ccdd8 (debut CONTAINER ID)
furious pare
38/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Hello world !
Terminal:
jmc@laptop/home/jmc $ docker rmi hello-world # docker rmi 48b (debut IMAGE ID)
Untagged : hello-world :latest
Untagged : hello-world@sha256 :c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Deleted : sha256 :48b5124b2768d2b917edcb640435044a97967015485e812545546cbed5cf0233
Deleted : sha256 :98c944e98de8d35097100ff70a31083ec57704be0991a92c51700465e4544d08
38/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Hello world !
Terminal:
jmc@laptop/home/jmc $ docker rmi hello-world # docker rmi 48b (debut IMAGE ID)
Untagged : hello-world :latest
Untagged : hello-world@sha256 :c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Deleted : sha256 :48b5124b2768d2b917edcb640435044a97967015485e812545546cbed5cf0233
Deleted : sha256 :98c944e98de8d35097100ff70a31083ec57704be0991a92c51700465e4544d08
38/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Hello world !
Terminal:
jmc@laptop/home/jmc $ docker rmi hello-world # docker rmi 48b (debut IMAGE ID)
Untagged : hello-world :latest
Untagged : hello-world@sha256 :c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Deleted : sha256 :48b5124b2768d2b917edcb640435044a97967015485e812545546cbed5cf0233
Deleted : sha256 :98c944e98de8d35097100ff70a31083ec57704be0991a92c51700465e4544d08
38/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Hello world !
Terminal:
jmc@laptop/home/jmc $ docker rmi hello-world # docker rmi 48b (debut IMAGE ID)
Untagged : hello-world :latest
Untagged : hello-world@sha256 :c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Deleted : sha256 :48b5124b2768d2b917edcb640435044a97967015485e812545546cbed5cf0233
Deleted : sha256 :98c944e98de8d35097100ff70a31083ec57704be0991a92c51700465e4544d08
38/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Hello world !
Terminal:
jmc@laptop/home/jmc $ docker rmi hello-world # docker rmi 48b (debut IMAGE ID)
Untagged : hello-world :latest
Untagged : hello-world@sha256 :c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Deleted : sha256 :48b5124b2768d2b917edcb640435044a97967015485e812545546cbed5cf0233
Deleted : sha256 :98c944e98de8d35097100ff70a31083ec57704be0991a92c51700465e4544d08
38/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
40/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
41/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
42/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Plan
1 Introduction générale
Conteneur versus machine virtuelle
Des technologies de conteneurisations différentes pour des objectifs différents
2 Bases
Introduction
Définitions et prérequis
Premiers pas
Volatilité, persistance et sécurité des données
Sécurité des conteneurs
Conteneurs graphiques
3 Utilisation avancées
Créations d’images : méthode naı̈ve
Créations d’images : Dockerfile
4 Toujours plus loin
Travaux pratiques
43/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Terminal:
jmc@laptop/home/jmc $ docker run -it ubuntu /bin/bash
Unable to find image ’ubuntu :latest’ locally
latest : Pulling from library/ubuntu
bd97b43c27e3 : Pull complete
6960dc1aba18 : Pull complete
2b61829b0db5 : Pull complete
1f88dc826b14 : Pull complete
73b3859b1e43 : Pull complete
Digest :
sha256 :ea1d854d38be82f54d39efe2c67000bed1b03348bcc2f3dc094f260855dff368
Status : Downloaded newer image for ubuntu :latest
44/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Terminal:
Conteneur:
root@dfdf734253a9 :/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr
var
root@dfdf734253a9 :/# rm -rf / # Aucune incidence sur l’hôte car pas de
montage de volume
rm : it is dangerous to operate recursively on ’/’
rm : use –no-preserve-root to override this failsafe
44/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Terminal:
Conteneur:
root@dfdf734253a9 :/# rm -rf –no-preserve-root /
...
rm : cannot remove ’/proc/fs/aufs/plink maint’ : Read-only file system
...
root@dfdf734253a9 :/# ls
bash : /bin/ls : No such file or directory
root@dfdf734253a9 :/# exit
jmc@laptop/home/jmc $
44/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Terminal:
jmc@laptop/home/jmc $ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dfdf734253a9 ubuntu "/bin/bash" 26 minutes ago Exited (127) 6 minutes ago stoic_engelbart
44/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Terminal:
jmc@laptop/home/jmc $ docker run -it ubuntu /bin/bash
Conteneur:
root@63f0abcc808a :/# #Ceci est un nouveau conteneur
root@63f0abcc808a :/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr
var
root@63f0abcc808a :/# exit
jmc@laptop/home/jmc $
44/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Terminal:
jmc@laptop/home/jmc $ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
63f0abcc808a ubuntu "/bin/bash" 32 minutes ago Exited (0) 27 seconds ago suspicious_goldstine
44/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Terminal:
jmc@laptop/home/jmc $ docker run -it -v / :/danger racine hote –hostname
myhostname –name myname ubuntu /bin/bash
Conteneur:
root@myhostname :/# ls
bin boot dev etc home lib lib64 media mnt opt proc danger racine hote root run
sbin srv sys tmp usr var
root@myhostname :/# ls /danger racine hote
bin boot cdrom dev etc home initrd.img lib lib64 lost+found media mnt opt proc
root run sbin srv sys tmp usr var vmlinuz
root@myhostname :/# # Ne pas faire rm -rf /danger racine hote :-0
44/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Terminal:
jmc@laptop/home/jmc $ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5c2eacbfcfee ubuntu "/bin/bash" 8 minutes ago Exited (0) 28 seconds ago myname
44/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Terminal:
jmc@laptop/home/jmc $ docker run -it –rm ubuntu /bin/bash
Conteneur:
root@30481297b94c :/# exit
jmc@laptop/home/jmc $ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
jmc@laptop/home/jmc $
44/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Résumé
Il peut être dangereux d’exécuter des conteneurs contenant des processus root
On peut monter des répertoires de l’hôte dans le conteneur afin d’assurer la
persistance de certaines données
Cette technologie de persistance s’appelle data volume
Pour des montages sur des ressources partagées (NFS, ISCSI, FC) : voir
docker volume plugin
Il existe une technologie de persistance à travers des conteneurs : data
volume container
45/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Résumé
Il peut être dangereux d’exécuter des conteneurs contenant des processus root
On peut monter des répertoires de l’hôte dans le conteneur afin d’assurer la
persistance de certaines données
Cette technologie de persistance s’appelle data volume
Pour des montages sur des ressources partagées (NFS, ISCSI, FC) : voir
docker volume plugin
Il existe une technologie de persistance à travers des conteneurs : data
volume container
45/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Résumé
Il peut être dangereux d’exécuter des conteneurs contenant des processus root
On peut monter des répertoires de l’hôte dans le conteneur afin d’assurer la
persistance de certaines données
Cette technologie de persistance s’appelle data volume
Pour des montages sur des ressources partagées (NFS, ISCSI, FC) : voir
docker volume plugin
Il existe une technologie de persistance à travers des conteneurs : data
volume container
45/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Résumé
Il peut être dangereux d’exécuter des conteneurs contenant des processus root
On peut monter des répertoires de l’hôte dans le conteneur afin d’assurer la
persistance de certaines données
Cette technologie de persistance s’appelle data volume
Pour des montages sur des ressources partagées (NFS, ISCSI, FC) : voir
docker volume plugin
Il existe une technologie de persistance à travers des conteneurs : data
volume container
45/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Résumé
Il peut être dangereux d’exécuter des conteneurs contenant des processus root
On peut monter des répertoires de l’hôte dans le conteneur afin d’assurer la
persistance de certaines données
Cette technologie de persistance s’appelle data volume
Pour des montages sur des ressources partagées (NFS, ISCSI, FC) : voir
docker volume plugin
Il existe une technologie de persistance à travers des conteneurs : data
volume container
45/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Plan
1 Introduction générale
Conteneur versus machine virtuelle
Des technologies de conteneurisations différentes pour des objectifs différents
2 Bases
Introduction
Définitions et prérequis
Premiers pas
Volatilité, persistance et sécurité des données
Sécurité des conteneurs
Conteneurs graphiques
3 Utilisation avancées
Créations d’images : méthode naı̈ve
Créations d’images : Dockerfile
4 Toujours plus loin
Travaux pratiques
46/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Capabilities
Il peut être dangereux d’exécuter des conteneurs contenant des processus root
En cas d’escalade de privilège depuis le conteneur sur l’hôte : par défaut le
root dans le conteneur n’a pas les mêmes droits que le potentiel root sur
l’hôte.
En effet celui-ci ne dispose pas de toutes les capabilities.
Plus d’info sur https://linux.die.net/man/7/capabilities
48/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Capabilities
Il peut être dangereux d’exécuter des conteneurs contenant des processus root
En cas d’escalade de privilège depuis le conteneur sur l’hôte : par défaut le
root dans le conteneur n’a pas les mêmes droits que le potentiel root sur
l’hôte.
En effet celui-ci ne dispose pas de toutes les capabilities.
Plus d’info sur https://linux.die.net/man/7/capabilities
48/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Capabilities
Il peut être dangereux d’exécuter des conteneurs contenant des processus root
En cas d’escalade de privilège depuis le conteneur sur l’hôte : par défaut le
root dans le conteneur n’a pas les mêmes droits que le potentiel root sur
l’hôte.
En effet celui-ci ne dispose pas de toutes les capabilities.
Plus d’info sur https://linux.die.net/man/7/capabilities
48/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Capabilities
Il peut être dangereux d’exécuter des conteneurs contenant des processus root
En cas d’escalade de privilège depuis le conteneur sur l’hôte : par défaut le
root dans le conteneur n’a pas les mêmes droits que le potentiel root sur
l’hôte.
En effet celui-ci ne dispose pas de toutes les capabilities.
Plus d’info sur https://linux.die.net/man/7/capabilities
48/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
49/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
50/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
50/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
50/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
50/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
50/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Démon docker
Surface d’attaque
Le démon docker est exécuté en root !
Seul un administrateur devrait pouvoir contrôler ce démon. (quid wrapper)
Quelle confiance accordez vous à l’image docker que vous téléchargez ?
Il est recommandé de n’utiliser que docker sur un serveur (à part ssh, dhcp,
etc, s’il y a d’autres applications, il faut les conteneuriser ou il faut les
déplacer)
Il ne faut pas faire ses tests de conteneur sur une machine de prod !
51/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Démon docker
Surface d’attaque
Le démon docker est exécuté en root !
Seul un administrateur devrait pouvoir contrôler ce démon. (quid wrapper)
Quelle confiance accordez vous à l’image docker que vous téléchargez ?
Il est recommandé de n’utiliser que docker sur un serveur (à part ssh, dhcp,
etc, s’il y a d’autres applications, il faut les conteneuriser ou il faut les
déplacer)
Il ne faut pas faire ses tests de conteneur sur une machine de prod !
51/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Démon docker
Surface d’attaque
Le démon docker est exécuté en root !
Seul un administrateur devrait pouvoir contrôler ce démon. (quid wrapper)
Quelle confiance accordez vous à l’image docker que vous téléchargez ?
Il est recommandé de n’utiliser que docker sur un serveur (à part ssh, dhcp,
etc, s’il y a d’autres applications, il faut les conteneuriser ou il faut les
déplacer)
Il ne faut pas faire ses tests de conteneur sur une machine de prod !
51/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Démon docker
Surface d’attaque
Le démon docker est exécuté en root !
Seul un administrateur devrait pouvoir contrôler ce démon. (quid wrapper)
Quelle confiance accordez vous à l’image docker que vous téléchargez ?
Il est recommandé de n’utiliser que docker sur un serveur (à part ssh, dhcp,
etc, s’il y a d’autres applications, il faut les conteneuriser ou il faut les
déplacer)
Il ne faut pas faire ses tests de conteneur sur une machine de prod !
51/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Démon docker
Surface d’attaque
Le démon docker est exécuté en root !
Seul un administrateur devrait pouvoir contrôler ce démon. (quid wrapper)
Quelle confiance accordez vous à l’image docker que vous téléchargez ?
Il est recommandé de n’utiliser que docker sur un serveur (à part ssh, dhcp,
etc, s’il y a d’autres applications, il faut les conteneuriser ou il faut les
déplacer)
Il ne faut pas faire ses tests de conteneur sur une machine de prod !
51/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
Plan
1 Introduction générale
Conteneur versus machine virtuelle
Des technologies de conteneurisations différentes pour des objectifs différents
2 Bases
Introduction
Définitions et prérequis
Premiers pas
Volatilité, persistance et sécurité des données
Sécurité des conteneurs
Conteneurs graphiques
3 Utilisation avancées
Créations d’images : méthode naı̈ve
Créations d’images : Dockerfile
4 Toujours plus loin
Travaux pratiques
52/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction
Introduction générale Définitions et prérequis
Bases Premiers pas
Utilisation avancées Volatilité, persistance et sécurité des données
Toujours plus loin Sécurité des conteneurs
Conteneurs graphiques
C’est possible
Il est tout à fait possible d’exécuter des conteneurs graphiques (skype dans
un conteneur par exemple).
En général, on fait un mapping de /tmp/.X11-unix et de /.Xauthority de
l’hôte vers le conteneur avec Xorg.
Certains utilisent vnc (beaucoup moins efficace, mais plus sécurisé ...).
Quid de Wayland ?
Nous n’aborderons pas plus cet aspect dans ce cours.
53/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
Plan
1 Introduction générale
Conteneur versus machine virtuelle
Des technologies de conteneurisations différentes pour des objectifs différents
2 Bases
Introduction
Définitions et prérequis
Premiers pas
Volatilité, persistance et sécurité des données
Sécurité des conteneurs
Conteneurs graphiques
3 Utilisation avancées
Créations d’images : méthode naı̈ve
Créations d’images : Dockerfile
4 Toujours plus loin
Travaux pratiques
54/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
La méthode naı̈ve
3 cas d’usage
Pour un usage pédagogique
Lorsque l’on n’est pas en mesure de configurer un environnement autrement
qu’en mode graphique :-( (éclipse par exemple)
Pour déboguer une construction automatisée (docker build)
55/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
La méthode naı̈ve
Terminal:
jmc@laptop/home/jmc $ docker run -it -h conteneur –name
conteneur avant commit ubuntu /bin/bash
Conteneur:
root@conteneur :/# echo ”hello world !”
>/nouveau fichier dans le systeme de fichier racine.txt
root@conteneur :/# exit
exit
56/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
La méthode naı̈ve
Terminal:
jmc@laptop/home/jmc $ docker images
56/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
La méthode naı̈ve
Terminal:
jmc@laptop/home/jmc $ docker run –rm image apres commit du conteneur cat
/nouveau fichier dans le systeme de fichier racine.txt
Conteneur:
hello world !
jmc@laptop/home/jmc $
56/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
La méthode naı̈ve
A vous
Faire une image ”mon image” à partir d’une ubuntu 16.04
Cette nouvelle image contiendra le paquet inetutils-ping
Tester la commande ”docker run mon image ping localhost”
Plan
1 Introduction générale
Conteneur versus machine virtuelle
Des technologies de conteneurisations différentes pour des objectifs différents
2 Bases
Introduction
Définitions et prérequis
Premiers pas
Volatilité, persistance et sécurité des données
Sécurité des conteneurs
Conteneurs graphiques
3 Utilisation avancées
Créations d’images : méthode naı̈ve
Créations d’images : Dockerfile
4 Toujours plus loin
Travaux pratiques
58/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
60/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
61/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
FROM
ENTRYPOINT
RUN
VOLUME
CMD
USER
LABEL
WORKDIR
MAINTAINER (déprécié,
ARG
utiliser LABEL)
ONBUILD
EXPOSE
STOPSIGNAL
ENV
HEALTHCHECK
ADD
SHELL
COPY
Capables d’interpréter les variables d’environnement
62/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
63/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
Terminal:
64/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
Terminal:
Step 5/8 : RUN apt update && apt install -yq openssh-server && rm -rf /varlib/apt/lists/* && mkdir /var/run/sshd
---> Running in c378b292a0d0
---> 15bd3d357785
Removing intermediate container c378b292a0d0
Step 6/8 : RUN chmod u+s /usr/sbin/sshd
---> Running in a697d7d0bcde
---> 174bd751e04d
Removing intermediate container a697d7d0bcde
Step 7/8 : USER lambda
---> Running in e512834f2b07
---> c7002394e3de
Removing intermediate container e512834f2b07
Step 8/8 : CMD /usr/sbin/sshd -D
---> Running in 83b6f14485f3
---> 1c1305bc7c28
Removing intermediate container 83b6f14485f3
Successfully built 1c1305bc7c28
jmc@laptop/home/jmc/sshd $
64/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
65/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
65/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
65/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
65/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
65/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
65/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
65/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
65/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
65/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
65/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
65/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
65/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
65/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
65/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
65/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
66/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
Terminal:
jmc@laptop/home/jmc/sshd $ docker build . -t sshd
Sending build context to Docker daemon 8.192 kB
Step 1/8 : FROM debian:testing-slim
---> f2020c7a5565
Step 2/8 : ENV VERSION 1 DEBIAN_FRONTEND noninteractive
---> Using cache
---> e3ef9a7b6a23
Step 3/8 : LABEL maintainer "Jean-Mathieu Chantrein" maintainer_email "[email protected]" version "${VERSION}"
---> Using cache
---> fbb7230757c2
Step 4/8 : RUN useradd lambda --create-home --shell /bin/bash && echo "lambda:password" | chpasswd
---> Using cache
---> a17fecb71d55
Step 5/8 : RUN apt update && apt install -yq openssh-server && rm -rf /varlib/apt/lists/* && mkdir /var/run/sshd
---> Using cache
---> 15bd3d357785
67/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
Terminal:
Step 6/8 : RUN chmod u+s /usr/sbin/sshd && echo "Une modification de cette instruction"
---> Running in a74783d3335a
Une modification de cette instruction
---> 1e8030a5f34b
Removing intermediate container a74783d3335a
Step 7/8 : USER lambda
---> Running in 6275d6897c41
---> 07c952331a94
Removing intermediate container 6275d6897c41
Step 8/8 : CMD /usr/sbin/sshd -D
---> Running in 35b3a68cb6e8
---> 8f8b2b932bc7
Removing intermediate container 35b3a68cb6e8
Successfully built 8f8b2b932bc7
jmc@laptop/home/jmc/sshd $
67/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
Terminal:
jmc@laptop/home/jmc/sshd $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sshd latest 8f8b2b932bc7 17 minutes ago 143 MB
<none> <none> 1c1305bc7c28 2 days ago 143 MB
debian testing-slim f2020c7a5565 5 days ago 55.2 MB
67/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
Suppression automatique des images non utilisées (i.e. : n’étant parentes d’aucune
top level image taguée)
67/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
Terminal:
jmc@laptop/home/jmc/sshd $ docker images -a # Combien d’images ?
REPOSITORY TAG IMAGE ID CREATED SIZE
sshd latest 8f8b2b932bc7 29 minutes ago 143 MB
<none> <none> 07c952331a94 29 minutes ago 143 MB
<none> <none> 1e8030a5f34b 29 minutes ago 143 MB
<none> <none> 15bd3d357785 2 days ago 142 MB
<none> <none> a17fecb71d55 2 days ago 55.6 MB
<none> <none> fbb7230757c2 2 days ago 55.2 MB
<none> <none> e3ef9a7b6a23 2 days ago 55.2 MB
debian testing-slim f2020c7a5565 5 days ago 55.2 MB
67/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
Terminal:
jmc@laptop/home/jmc/sshd $ docker history sshd
IMAGE CREATED CREATED BY SIZE COMMENT
8f8b2b932bc7 About an hour ago /bin/sh -c #(nop) CMD ["/usr/sbin/sshd" "... 0 B
07c952331a94 About an hour ago /bin/sh -c #(nop) USER [lambda] 0 B
1e8030a5f34b About an hour ago /bin/sh -c chmod u+s /usr/sbin/sshd && ec... 791 kB
15bd3d357785 3 days ago /bin/sh -c apt update && apt install -... 86.8 MB
a17fecb71d55 3 days ago /bin/sh -c useradd lambda --create-home --... 333 kB
fbb7230757c2 3 days ago /bin/sh -c #(nop) LABEL maintainer=Jean-M... 0 B
e3ef9a7b6a23 3 days ago /bin/sh -c #(nop) ENV VERSION=1 DEBIAN_FR... 0 B
f2020c7a5565 5 days ago /bin/sh -c #(nop) CMD ["bash"] 0 B
<missing> 5 days ago /bin/sh -c #(nop) ADD file:2bad6c695080ae4... 55.2 MB
Les images de taille 0 n’ont pas généré de layer et reposent sur les layers des
images parentes (on parle de layer vide (empty layer))
Pourquoi y a-t-il une différence de 3 jours dans la création des images ?
67/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
68/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
Pour info
69/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
A vous
Rédigez un dockerfile permettant de créer une image ”mon image” à partir
d’une ubuntu 16.04
Cette nouvelle image contiendra le paquet inetutils-ping
La commande par défaut doit être ping localhost (instruction CMD)
Testez votre image en instanciant un conteneur
Essayez de surcharger la commande par défaut en la remplaçant par ping
qwant.com
70/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
71/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases Créations d’images : méthode naı̈ve
Utilisation avancées Créations d’images : Dockerfile
Toujours plus loin
Plan
1 Introduction générale
Conteneur versus machine virtuelle
Des technologies de conteneurisations différentes pour des objectifs différents
2 Bases
Introduction
Définitions et prérequis
Premiers pas
Volatilité, persistance et sécurité des données
Sécurité des conteneurs
Conteneurs graphiques
3 Utilisation avancées
Créations d’images : méthode naı̈ve
Créations d’images : Dockerfile
4 Toujours plus loin
Travaux pratiques
72/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker
Introduction générale
Bases
Travaux pratiques
Utilisation avancées
Toujours plus loin
73/73
Jean-Mathieu Chantrein Fondements de la technologie de conteneurisations docker