Docker
Docker
par Jiel
Maman, explique moi Docker ! Docker pour les débutants :-)
Présentation
Docker est un système de virtualisation par conteneur : il permet de mettre des applications et leur dépendance dans un endroit isolé, appelé conteneur (ou pourrait aussi parler de boîte ou de tiroir). C'est de la virtualisation poussée, dans le sens que le conteneur n'intègre pas de système d'exploitation, mais utilise au maximum les fonctionnalités du système d’exploitation sur lequel il tourne, tout en restant relativement autonome (le conteneur peut être déplacé d'un système à l'autre). Docker a l'avantage de faciliter la portabilité d’exécution d'une application, ainsi que son déploiement et son extensibilité - on peut facilement dupliquer un conteneur. Chaque conteneur possède ses propres processus système, accessibles seulement par lui-même et le système hôte.
Sûrement qu'avec un exemple ce sera plus clair. C'est parti :)
Préparation
Installez le paquet docker. Pour ce tutoriel, installez le paquet nodejs.
Créons une application web basique
Le but est de faire un petit serveur web qui va dire " Coucou" sur le port 8080. Ici l'exemple est en node.js, évidemment vous pouvez la faire en python avec nginx ou n'importe quoi qui vous plaît.
Créons un fichier serveur.js comme suit que l'on place dans un répertoire coucouapp/ :
var http = require('http'); var handleRequest = function(request, response) { response.writeHead(200); response.end("Coucou !"); } var www = http.createServer(handleRequest); www.listen(8080);
Maintenant, lancez le serveur :
node serveur.js
Si vous vous connectez sur http://localhost:8080/, vous devriez voir : "Coucou !".
Dockeriser l'application
Et maintenant, on va dockeriser l'application ci-dessus. Pour cela, il faut créer une image Docker, qui définit ce que contiendra le conteneur. Une image est un modèle, un patron, qui permet de créer des conteneurs. Dis autrement, un conteneur est l'instance d'une image. Bref, une image est définie dans un fichier appelé Dockerfile.
Dans le même répertoire coucouapp/, créez un fichier Dockerfile.
FROM node:4.4 EXPOSE 8080 COPY serveur.js . CMD node serveur.js
Ce fichier utilise l'image LTS Node.js dans le registre de Docker (une bibliothèque qui contient plein d'images Docker de base, ce qui permet de ne pas réinventer la roue), ouvre le port 8080, copie le fichier serveur.js dans l'image (notez le . sur cette ligne) et lance le serveur (comme nous avons fait précédemment).
Premièrement, démarrons le service Docker, qui autorise votre distribution à dialoguer avec Docker.
sudo systemctl start docker
Sous RHEL / CentOS / Fedora, vous aurez peut-être aussi à autoriser votre utilisateur à utiliser docker :
sudo usermod -aG dockerroot $(whoami)
ainsi que rajouter OPTIONS='--selinux-enabled -G dockerroot'
dans /etc/sysconfig/docker.
Maintenant, il faut construire l'image de son conteneur. Ici, on prendra le nom que l'on veut, mais certains hébergeurs imposent un nom.
docker build -t coucouapp .
Voilà, votre application est dockerisée/conteneurisée. Vous pouvez la téléverser sur un serveur (dans votre parc informatique, chez un hébergeur de cloud etc.).
Quelques commandes basiques
Hop, on teste :
docker run -d -p 8080:8080 coucouapp
Si vous vous connectez sur http://localhost:8080/, vous devriez voir : "Coucou !".
Pour voir les processus du conteneur :
docker ps
Pour arrêter le conteneur, on doit renseigner son ID :
docker stop 4r534sd3
Aller plus loin
Docker se développe chaque jour un peu plus. Pour orchestrer un grand nombre de conteneurs Docker, on se tournera vers les logiciels Kubernetes ou Mesos.
@ Retour à la rubrique Administration système
@ Retour à la rubrique Développement
Copyright
© 2016 Jiel Beaumadier
Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la GNU Free Documentation License, Version 1.2 ou n'importe quelle version ultérieure publiée par la Free Software Foundation; sans section invariante, sans page de garde, sans entête et sans page finale. |