7 Nov

Docker -Windows 1er pas

Pourquoi ?

 

Le problème des VM est qu’elles occupent plus d’espace que nécessaire. Prenons l’exemple d’un serveur d’application. Il contient l’application et un système d’exploitation dédié. Ce dernier consomme de l’espace de stockage, de la mémoire, des cycles de CPU et d’autres ressources matérielles. ON ce retrouve vite avec des hôtes devant faire tourner un grand nombre de VM, chacune d’entre elles exécutant le même système d’exploitation.

La technique des conteneurs vise à résoudre ce problème de volume en utilisant une instance unique du système d’exploitation, partagée par tous les conteneurs. Un conteneur ressemble à une application virtualisée dans la mesure où il renferme les fichiers binaires et de configuration de l’application, mais côté système d’exploitation, il ne stocke que les composants modifiés par l’application, tels que les entrées du registre ou les pilotes spécifiques dont elle a besoin. »

(Mais aussi pour les développeurs => agile )

Un conteneur permet d’isoler chaque service : le serveur web, la base de données, une application peuvent être exécutés de façon indépendante dans leur conteneur dédié, contenant uniquement les dépendances nécessaires. Chaque conteneur est relié par des réseaux virtuels. Il est possible de monter des volumes de disque de la machine hôte dans un conteneur.

Une image est un container “statique“, c’est à dire qu’on a pris une photo d’un container à un instant T comprenant nos paramétrages par défaut ce qui nous permet de la dupliquer à volonté.

Les images Docker permettent aussi de réaliser des sauvegardes de tout votre environnement. En cas de gros problème, vous pourrez les restaurer. Le bémol c’est que les images peuvent être très lourdes, rendant la restauration un peu longue.

Les Dockerfiles sont des fichiers qui permettent de construire une image Docker adaptée aux besoins, étape par étape.

Les Dockerfiles prennent très peu de place et peuvent se partager/transmettre facilement. En même temps, il est possible de recréer son environnement rapidement. Mais aussi d’effectuer des tests avec des librairies qui ont subi de nouvelles mises à jour, pour vérifier que le système fonctionne toujours aussi bien avant de déployer ces mises à jour en production.

Un Docker compose est un fichier très utilisé qui permet de créer un multi-conteneur en définissant simplement la liste des conteneurs à utiliser. Et c’est très pratique car on peut ainsi décrire l’ensemble de son environnement, constitué de plusieurs images ou Dockerfiles… faire le lien entre une base de données et le site web

Container Linux / Windows

Sous Linux, il y a plein de tutos sur le net en fonction de la distribution. Ce sont des containers qui s’exécutent sur l’OS.

Sous Windows il y a moins de littérature et il y a surtout 2 grands concepts.

Les conteneurs Hyper-V : l’OS partagé par les conteneurs est celui d’une VM. Sous Windows 10 et server 16. On switch entre une vm linux et une vm windows selon l’OS « père ». C’est plus sécurisé mais plus gourmand.

Sous Windows serveur 16, on peut aussi mettre en œuvre directement Conteneurs Windows Server . Moins sécurisés, ils s’exécutent directement au-dessus de Windows Server. Partagent le même OS, les connexions réseau et le système de fichiers que le conteneur hôte. De ce fait ce ne peut etre que des Containers Windows . Ils sont par contre très légers.

Les conteneurs sont un mécanisme d’amélioration de l’efficacité grâce au partage des fichiers binaires du système d’exploitation. Cette approche améliore non seulement la capacité de l’hôte, mais facilite également la gestion des correctifs, car il y a moins de systèmes d’exploitation à mettre à jour.

Docker desktop

Une fois l’installation du programme faite. On obtient une petite baleine  dans la barre des taches.

La baleine

Les préférences permettent de gérer le stockage, le réseau etc. Attention : Il faut switcher si l’on veut des containers Windows ou des containers Linux

Kitematic est un outil permettant de facilter la gestion de docker. Mais il faut beaucoup passer par  Powershell.

Les commandes docker commencent par Docker – ouvrir une invite PS et taper

  • Docker help 
  • Docker ps  permet de voir les containers en route
  • Docker run pour lancer un container
  • docker commit image image_modifie
  • docker inspect dem1_nginx
  • docker stop demo_nginx

Volume

Quand on installe un service via docker il faut pouvoir « injecter » les fichiers de configuration. Il faut partager un volume entre le container et l’hôte.

Partager : dans les paramètres -settings de docker

Aller dans partager.

On accédera à ce partage en «lançant » un container avec l’option v et le mappage hote :container

v /host_mnt/e/rep-local:/usr/local/etc/haproxy par exemple

docker run –name hap -d -p8080:80 –link nginx-1 –link nginx-2 -v /host_mnt/e/docker:/usr/local/etc/haproxy haproxy:alpine

Exemple avec des containers Linux :

2 serveurs Web NGINX et un load balancer HAproxy

Containers NGINX

Lancer son container

docker run –name dem1_nginx -p 80 -d nginx

Petite explication rapide des options passées à docker run :

  • –name permet de donner un nom à notre conteneur. Si on le fait pas nous même, Docker en génèrera un à notre place (par ex. tender_bardeen) ;
  • -p 80 : on indique à Docker qu’on souhaite que le port 80 du conteneur soit lié à un de nos ports locaux, qu’il aura choisi lui-même ;
  • -d lance le conteneur de manière détachée (sans ça, notre terminal reste attaché, et si on fait ctrl+c, on arrête le conteneur).

Docker ps permet de voir le processus et surtout le port pour interroger notre site web

Pour aller dans les fichiers du container on peut passer par l’exec depuis Kitematic:

On peut aussi se connecter sur le conteneur « nom » actuellement actif avec la commande docker exec :

docker exec -it nom-container /bin/sh

On est alors dans le shell du container qu’on manipule comme un Linux.

Un petit apt-get install wim pour avoir un éditeur (on fera plus tard une image=dockfile avec le nécessaire)

Ensuite dans le répertoire /usr/share/nginx/

Modifier chaque fichier index.html -serveur 1 / serveur 2

(il y a voir plus simple, plus script, mais on verra plus tard)

Haproxy

Ensuite pour installer un container Haproxy,  il faut au préalable préparer le fichier de config

Puis enfin faite le lien entre les serveurs Web, le fichier de config et lancer le container

docker run –name hapx1 -d -p8080:80 –link nginx-1 –link nginx-2 -v /host_mnt/e/docker:/usr/local/etc/haproxy haproxy:alpine

Après un petit Docker ps

(la suite plus tard)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.