2. Une définition
de docker
• Docker propose une solution beaucoup plus légère, basée sur la
capacité du système Linux à créer des espaces isolés auxquels on
affecte une partie des ressources de la machine-hôte.
• Ces espaces, ou containers partitionnent en quelque sorte le
système-hôte en sous-systèmes étanches, au sein desquels le
nommage (des processus, des utilisateurs, des ports réseaux) est
purement local. On peut par exemple faire tourner un processus
apache sur le port 80 dans le conteneur A, un autre processus d’une
autre application sur le port 80 dans le conteneur B, sans conflit ni
confusion. Tous les nommages sont en quelque sorte interprétés
par rapport à un container donné (notion d’espace de nom).
• Les conteneurs Linux sont beaucoup plus légers en consommation
de ressources que les VMs, puisqu’ils s’exécutent au sein d’un
unique système d’exploitation. Docker exploite cette spécificité du
système Linux pour proposer un mode de virtualisation (que nous
avons appelé “pseudo-serveur” en préambule) léger et flexible.
3.
4. Organisation
de docker
• Docker et ses conteneurs
• Docker (ou, très précisément, le docker engine) est un programme
qui va nous permettre de créer des conteneurs Linux et d’y installer
des environnements prêts à l’emploi, les images.
• Docker s’exécute toujours dans un environnement Linux, pour les
raisons mentionnées ci-dessus. Si vous avez une machine sous
Windows ou Mac OS, Docker propose une machine virtuelle Linux
ultralégère au sein de laquelle il s’exécute.
5. Un peu de
vocabulaire
Docker
Un peu de vocabulaire dans tout ce qui suit,
Le système hôte est le système d’exploitation principal gérant votre
machine ; c’est par exemple Windows, ou Mac OS.
Docker VM désigne le système Linux où Docker s’exécute, qui peut donc
être soit directement votre machine si vous êtes sous Linux, soit une VM
Linux s’exécutant sur votre machine Windows ou Mac OS.
Docker engine ou moteur docker est le programme qui gère les
conteneurs; il s’exécute dans la Docker VM.
Un conteneur est une partie autonome de la Docker VM, se comportant
comme une machine indépendante.
Le client Docker est l’utilitaire grâce auquel on transmet au moteur les
commandes de gestion de ces conteneurs
6. Les images
docker
• Un conteneur Docker peut donc être vu comme un sous-
système Linux autonome, mobilisant très peu de
ressources car l’essentiel des tâches système est délégué
au système Linux dans lequel il est instancié. On dispose
donc virtuellement d’un moyen de multiplier à peu de
frais des pseudo-machines dans lesquelles on pourrait
installer “à la main” des logiciels divers et variés.
• Docker va un peu plus loin en proposant des installations
pré-configurées, empaquetées de manière à pouvoir être
placées très facilement dans un conteneur. On les appelle
des images.
• On peut ainsi trouver des images avec pré-configuration
de serveurs de données (Oracle, Postgres, MySQL),
serveurs Web (Apache, njinx), serveurs NoSQL (mongodb,
cassandra), moteurs de recherche (ElasticSearch).
7.
8. Les images
docker (suite)
• Une image se place dans un conteneur. On peut placer la même image dans
plusieurs conteneurs et obtenir ainsi un système distribué. Examinons la
figure précédente montrant une configuration complète, avec un système-
hôte Windows. Nous avons tous les composants à l’œuvre, essayons de bien
comprendre.
1)Le système hôte a créé une VM Docker (donc, une machine virtuelle Linux
dans laquelle s’exécute le Docker Engine).
2)Docker a téléchargé (nous verrons comment plus tard) les images de plusieurs
systèmes de gestion de données
3)Ces images ont été instanciées dans des conteneurs A, B et C. L’instanciation
consiste à installer l’image dans le conteneur et à l’exécuter.
4)L’ensemble constitue donc un système distribué virtuel, le tout s’exécutant sur
la machine-hôte et gérable très facilement grâce aux utilitaires Docker. Nous
avons par exemple dans chaque conteneur un serveur MySQL. Maintenant, on
peut se connecter à ces serveurs à partir de la machine-hôte avec une
application cliente (par exemple phpMyAdmin) et tester le système distribué
9. Les images
docker (suite)
• On peut instancier l’image de MongoDB dans 4
conteneurs et obtenir un cluster MongoDB en
quelques minutes. Evidemment, les
performances globales ne dépasseront pas celle
de l’unique machine hébergeant Docker. Mais
pour du développement ou de
l’expérimentation, c’est suffisant, et le gain en
temps d’installation est considérable.
• En résumé: avec Docker, on dispose d’une boîte
à outils pour émuler des environnements
complexes avec une très grande facilité.
11. Boite à outils docker
docker pull: on
récupère l’image
1
docker run –t <nom du
conteneur>: télécharge
et démarre le conteneur
2
Exemple: $docker
run –t debian:latest
3
12. La boite à outils de docker(suite)
Pour exécuter de manière interactive un conteneur docker
docker run –ti debian:latest « /bin/bash »
Lister les images chargées:
docker images
Lister les conteneurs actifs:
docker ps -a
Effacer toutes les images et conteneurs:
docker system prune -f
13. Boite à outils docker (suite)
Chercher une image
docker
https://hub.docker.com/
14. La boite à outils de docker (suite)
Inspecter la
configuration de
son conteneur
docker inspect
<nom
conteneur>
Effacer un
conteneur
docker rmi <nom
du conteneur>