Introduction à Docker
Docker est une plateforme de conteneurisation open source permettant de Packager, Distribuer et Exécuter les applications.
Docker s'articule autour de 3 principes de base: IMAGE
, REGISTRY
et CONTAINER
-
IMAGE
L’image correspond à l’environnement d’exécution de votre application. Elle contient l’ensemble des fichiers systèmes qui vont être disponibles l’application ainsi que d’autres méta-données -
REGISTRE
Le registre est de répertoire de stockage pour les images que nous créons. Il peut être public ou privé. -
CONTENEUR
Un conteneur est une instance d’une image. D’un point de vue système, il correspond à un processus s’exécutant sur l’hôte sur lequel est installé Docker.
Quelle relation l'on peut établir entre ces 3 principes ?
-
- On Construit une l'image de notre application au travers d'un Dockerfile
-
- On pousse cette image dans un registry (Docker Hub)
-
- Exécution de l'image (Container) qui va induire un téléchargement de l'image
Nous allons maintenant créer une application NodeJS qui afficher I am Nom de la machine
et qui réppond sur le port 3000.
Pour ce faire une nous allons installer NodeJS, Docker, Créer note image, lancer exécuter l'image et faire quelques tests.
- Création d'une application simple Node JS
myapp/main.js
const http = require("http");
const os = require("os");
const handler = (req, res) => {
res.writeHead(200);
res.end("I am " + os.hostname() + "\n");
};
const web = http.createServer(handler);
web.listen(3000);
- Construction de l'image Docker
Dockerfile
FROM node:23-alpine
ADD main.js /main.js
ENTRYPOINT ["node", "main.js"]
build
docker buildx -t myapp:1.0.0 .
test
docker run --name myapp-container -p 3000:3000 -d myapp:1.0.0
Faire un test dans le navigateur: http://localhost:3000
On supprime le conteneur
docker stop myapp-container
docker ps
docker rm myapp-container
- Publication de l'image
Comme registre, nous choisissons Docker HUB. Après avoir créé son compte, on s'y connecte:
docker login -u ladci
Pour créer mot de passe (Access Token), merci d'utiliser le lien ci-dessous:
https://app.docker.com/settings/personal-access-tokens
Pour pousser une image dans Docker HUB
, il faut la tagger avec votre nom de repo
docker tag myapp:1.0.0 ladci/myapp:1.0.0
Après avoir créer taggé
l'image, on peut maintenant la pousser sur Docker HUB
docker push ladci/myapp:1.0.0
test
docker run --name myapp-container -p 3000:3000 -d ladci/myapp:1.0.0
Faire un test dans le navigateur: http://localhost:3000