====== Docker ====== Docker est un programme gérant des conteneurs, à l'image d'une VM, mais avec l'avantage de réutilisé le kernel de la machine pour allegé le poids du conteneur. Cela permet de faire tourner des serveurs a l’intérieur d'un serveur, en utilisant un minimum de ressources ===== Installation ===== Installer docker est très simple, si on oublie tout ses dérivé (docker-compose, kubernetes, etc..) que je ne maitrise pas.. Debian-based distro : sudo apt install docker Arch-Based distro : sudo pacman -Sy docker ===== Faire tourner un Docker ===== Pour démarrer un docker rien de plus simple : docker run nginx Ceci est un prompt simple lançant un serveur nginx. mais pas vraiment utilisable en l'état. Il faudrait ajouter des arguments... Voici ceux que j'utilise :  * ''-d'' pour Detach, permet de faire tourner le conteneur en arrière plan * ''-i'' pour interactive, permet de se connecter sur un terminal dans le conteneur. * ''-v //volume//://path//'' pour Volume, permet de lier une partie du système de fichier du conteneur à celui de l'hôte afin de conserver des données. * ''--restart=always'' pour dire à docker de redémarrer le conteneur dès qu'il le vois éteint, lors d'un reboot de l'hôte par example... * ''--network=//réseau//'' pour lié un réseau docker, nous reviendrons sur ce détail plus tard mais sachez que les différent "réseau" docker sont très puissant. * ''--ip'' pour spécifier une adresse ip du conteneur (en fonction du réseau choisit) * ''--name'' permet de donner un nom au conteneur simplifiant la gestion quand vous en faites tourner plusieurs. * ''-p 80:80'' pour port, est un argument également très utilisé, car il permet de lier un port réseau de l'hôte directement au conteneur (ici je lie le port 80 au port 80). On peut donc en déduire une commande permettant de faire tourner un serveur nginx sur votre machine : docker run -id --restart=always -v /var/www:/var/www -p 80:80 --name nginx-test nginx ===== Autres Commandes Utiles ===== Pour Gérer vos Docker vous aurez besoin de docker ps qui va lister vos conteneur, avec diverse informations sur le réseau, le volume, l'état du conteneur etc... docker stop permet de stopper un conteneur docker remove pour supprimer un conteneur arrêté. ===== Les Réseau Docker ===== Il existe plusieurs façon de gérer la partie réseaux des conteneur docker. 1 - Le default bridge : Dans ce réseau créer par défaut à l'installation de docker, le conteneur utilise un sous-réseau accessible depuis le système hôte. Pour y accéder de l'exterieur il faut "publier" les port nécessaire ie ajouter l'argument ''-p 80:80'' relie le port 80 de l'hôte vers le port 80 du conteneur ou utiliser un reverse proxy sur le système hôte voir [[nginx/reverse|NGINX reverse proxy]] 2 - User-Defined bridge : Ce type de réseau fonctionne comme le précédent, a la différence qu'il faut créer les sous-réseaux que vous voulez utiliser avec ''docker network create monRéseau'' vous pourrez ainsi spécifier l'adresse réseau de ''monRéseau'' ===== Les Volumes ===== To do