C’est quoi un conteneur ?
Denis PEYRUSAUBES
Un conteneur, c’est un processus auquel on donne son propre petit monde : ses fichiers, sa vue du réseau et des autres processus. Il partage le noyau Linux de la machine qui l’exécute, mais dispose d’un environnement isolé. Vu de cette machine, il apparaît donc comme un processus ordinaire : c’est son environnement qui est isolé. L’exemple ci-dessous le montre : nous allons lancer un conteneur et retrouver son processus dans la liste des processus de l’hôte.
Pour comprendre un peu mieux
Sur une machine Linux équipée de Docker Engine, commencez par vérifier qu’aucun Nginx ne tourne déjà :
ps -ef | grep '[n]ginx: master process'
La commande ne renvoie rien. Les crochets dans [n]ginx évitent d’afficher la commande de recherche elle-même, qui contient le mot cherché.
Lancez maintenant un serveur web Nginx dans un conteneur :
docker run -d --name demo nginx
Puis relancez exactement la même recherche :
ps -ef | grep '[n]ginx: master process'
Cette fois, le processus principal de Nginx apparaît dans la liste des processus de l’hôte, comme n’importe quel autre processus. Rien n’a été installé sur la machine, et pourtant elle exécute maintenant Nginx.
Ce processus est bien exécuté par votre machine. Le conteneur définit l’environnement dans lequel il tourne et ce à quoi il a accès.
Avec Docker Desktop, le conteneur Linux tourne dans une VM : c’est dans cet environnement Linux que vit son processus, pas directement dans celui de votre Mac ou de Windows.
Une fois la démonstration terminée, vous pouvez arrêter et supprimer ce conteneur :
docker rm -f demo
Simple, pas exhaustif. Ces explications prennent parfois des raccourcis pédagogiques. L’idée : vous donner une première représentation du concept, suffisamment juste pour comprendre la suite. Les détails et les exceptions viendront après.