Outils pour utilisateurs

Outils du site


issue107:c_c

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
issue107:c_c [2016/04/17 12:07] andre_domenechissue107:c_c [2016/04/18 09:06] (Version actuelle) auntiee
Ligne 1: Ligne 1:
 **After having set up my intel NUC (see last month’s article for more information), I started using NGINX and Apache to serve my in-progress web projects. However, setting up various virtual hosts, managing it, and a complicated series of dependencies, had me abandon that plan relatively quickly. Instead, I switched to Vagrant for a few projects. Unfortunately, while setting up a Vagrant system is pretty quick, it’s also heavier than it needs to be resource-wise. Instead, I looked into Docker. This month, I’d like to cover what Docker is, and how I’ve set it up to manage my various web projects.** **After having set up my intel NUC (see last month’s article for more information), I started using NGINX and Apache to serve my in-progress web projects. However, setting up various virtual hosts, managing it, and a complicated series of dependencies, had me abandon that plan relatively quickly. Instead, I switched to Vagrant for a few projects. Unfortunately, while setting up a Vagrant system is pretty quick, it’s also heavier than it needs to be resource-wise. Instead, I looked into Docker. This month, I’d like to cover what Docker is, and how I’ve set it up to manage my various web projects.**
  
-Après avoir installé mon NUC intel (pour plus d'informations, voir l'article du mois dernier), j'ai commencé à utiliser NGINX et Apache comme serveur de mes projets Internet en cours de développement. Toutefois, installer différents hôtes virtuelsles gérer avec un ensemble de dépendances compliquées m'ont assez rapidement incité à abandonner cette méthode. À la place, je suis passé à Vagrant pour quelques projets. Malheureusement, alors que l'installation d'un système Vagrant est assez rapide, il est bien plus lourd que nécessaire en ce qui concerne les ressources. À la place, j'ai considéré Docker. Ce mois-ci, j'aimerais traiter de ce qu'est Dockeret comment je l'ai paramétré pour gérer mes différents projets Web.+Après avoir installé mon NUC Intel (pour plus d'informations, voir l'article du mois dernier), j'ai commencé à utiliser NGINX et Apache comme serveur de mes projets Internet en cours de développement. Toutefois, installer différents hôtes virtuels et les gérer avec un ensemble de dépendances compliquéesm'ont assez rapidement incité à abandonner cette méthode. À la place, je suis passé à Vagrant pour quelques projets. Malheureusement, alors que l'installation d'un système Vagrant est assez rapide, il est bien plus lourd que nécessaire en ce qui concerne les ressources. J'ai donc envisagé Docker. Ce mois-ci, je vais parler de ce qu'est Docker et de comment je l'ai paramétré pour gérer mes différents projets Web.
  
 **What is Docker? **What is Docker?
Ligne 15: Ligne 15:
 Docker est une façon de créer des conteneurs virtualisés pour faire tourner des logiciels et des services. La grande différence entre Docker et Vagrant est que Docker partage la base de la virtualisation avec tous les conteneurs. Ainsi, alors que Vagrant crée une véritable VM (machine virtuelle) indépendante, Docker crée à la place une VM qui utilise un noyau commun partagé par toutes les autres VM et basé sur LXC. Docker est une façon de créer des conteneurs virtualisés pour faire tourner des logiciels et des services. La grande différence entre Docker et Vagrant est que Docker partage la base de la virtualisation avec tous les conteneurs. Ainsi, alors que Vagrant crée une véritable VM (machine virtuelle) indépendante, Docker crée à la place une VM qui utilise un noyau commun partagé par toutes les autres VM et basé sur LXC.
  
-Alors qu'il est difficile d'expliquer la différence entre Vagrant et Docker en termes simples (l'essentiel des différences réside dans les détails), on peut relever certaines choses. Par exemple, que Docker démarre généralement plus rapidement et consomme moins de ressources (puisqu'il partage certain noyaux des invités). +Alors qu'il est difficile d'expliquer la différence entre Vagrant et Docker en termes simples (l'essentiel des différences réside dans les détails), on peut relever certaines choses. Par exemple, que Docker démarre généralement plus rapidement et consomme moins de ressources (puisqu'il partage le noyau de l'hôte). 
-Il doit fonctionner sur une machine Linux, mais Docker fournit des outils pour s'installer facilement sur Windows ou Mac (en utilisant une machine virtuelle de base qui fournit le noyau Linux).+Il doit fonctionner sur une machine Linux, mais Docker fournit des outils pour s'installer facilement sous Windows ou Mac (en utilisant une machine virtuelle de base qui fournit le noyau Linux).
  
  
Ligne 32: Ligne 32:
 Installation Installation
  
-Docker peut être affecté à différents réseaux virtuels, « exposer » des ports, faire tourner des images spécifiques, et peut partager des fichiers ou dossiers avec l'hôte et les invités. Ma configuration actuelle est : +Docker peut être affecté à différents réseaux virtuels, « exposer » des ports, faire tourner des images spécifiques, et partager des fichiers ou dossiers avec l'hôte et les invités. Ma configuration actuelle est : 
-• Un réseau privé privé (appelé « webnet »).+• Un réseau privé (appelé « webnet »).
 • Un conteneur Docker utilisant HAProxy et « exposant » le port 80. Il inclut également une IP statique sur webnet.  • Un conteneur Docker utilisant HAProxy et « exposant » le port 80. Il inclut également une IP statique sur webnet. 
 • De nombreux conteneurs Docker utilisant l'image nickistre/Ubuntu-lamp et partageant avec les invités un dossier hôte à /var/www/html (le dossier d'Apache par défaut). Chacun d'eux dispose d'une IP statique sur le réseau webnet, mais n'expose aucun port (puisque les communications passent par HAProxy). • De nombreux conteneurs Docker utilisant l'image nickistre/Ubuntu-lamp et partageant avec les invités un dossier hôte à /var/www/html (le dossier d'Apache par défaut). Chacun d'eux dispose d'une IP statique sur le réseau webnet, mais n'expose aucun port (puisque les communications passent par HAProxy).
Ligne 78: Ligne 78:
 Comment s'y prendre pour créer mes machines ? Comment s'y prendre pour créer mes machines ?
  
-La commande standard de Docker sera en gros toujours la même.+La commande standard de Docker sera toujours à peu près la même.
  
 docker run -d -v {SHARE} --net webnet --ip 172.18.0.X --name {NAME} {IMAGE} docker run -d -v {SHARE} --net webnet --ip 172.18.0.X --name {NAME} {IMAGE}
Ligne 85: Ligne 85:
 • « docker run » crée un conteneur. • « docker run » crée un conteneur.
 • -d détache le conteneur créé (sinon toutes les sorties du conteneur seront automatiquement envoyées vers le terminal et la fermeture du terminal fermera l'instance de docker). • -d détache le conteneur créé (sinon toutes les sorties du conteneur seront automatiquement envoyées vers le terminal et la fermeture du terminal fermera l'instance de docker).
-• -v{SHARE} donne l'adresse du dossier partagé sous la forme /local/path:/remote/path. Par exemple : -v/home/lswest/web/pelican:/var/www/html.+• -v{SHARE} donne l'adresse du dossier partagé sous la forme /local/path:/remote/path. Par exemple : -v /home/lswest/web/pelican:/var/www/html.
 • --net webnet configure le réseau que doit utiliser le conteneur. • --net webnet configure le réseau que doit utiliser le conteneur.
-• --ip 172.18.0.X il s'agit de l'IP statique que je donne. J'aime les avoir en ordre basique de façon à rendre plus facile l'ajout d'entrées au HAProxy. Si vous choisissez une  plage différente dans cette étape, modifiez en fonction.+• --ip 172.18.0.X il s'agit de l'IP statique que je donne. J'aime les avoir bien organisés de façon à rendre plus facile l'ajout d'entrées au HAProxy. Si vous choisissez une plage différente dans cette étape, adaptez en conséquence.
 • --name{name} c'est le nom sous lequel l'instance du docker sera reconnue. Par exemple -–namepelican. On peut l'utiliser dans les commandes start/stop/restart/rm et il apparaît dans la liste de docker ps. • --name{name} c'est le nom sous lequel l'instance du docker sera reconnue. Par exemple -–namepelican. On peut l'utiliser dans les commandes start/stop/restart/rm et il apparaît dans la liste de docker ps.
-• {IMAGE} il s'agit de l'image à utiliser comme base du conteneur. J'aime l'image nickistre/Ubuntu-lamp qui contient Ubuntu 14.04 et LAMP. Il existe d'autres images (telles que ArchLinux) mais, puisque mes serveurs Digital Ocean tournent de base sous Ubuntu, j'essaie de rester aussi proche que possible de l'environnement réel. L'image du HAProxy que j'utilise est HAProxy:1.5 (l'image officielle de HAProxy, version 1.5)+• {IMAGE} il s'agit de l'image à utiliser comme base du conteneur. J'aime l'image nickistre/Ubuntu-lamp qui contient Ubuntu 14.04 et LAMP. Il existe d'autres images (telles que ArchLinux) mais, puisque mes serveurs Digital Ocean tournent habituellement sous Ubuntu, j'essaie de rester aussi proche que possible de l'environnement réel. L'image du HAProxy que j'utilise est HAProxy:1.5 (l'image officielle de HAProxy, version 1.5)
  
 **In the case of the HAProxy image (which should be created first), the command will look like this: **In the case of the HAProxy image (which should be created first), the command will look like this:
Ligne 117: Ligne 117:
 Démarrage automatique Démarrage automatique
  
-Si vous voulez que les conteneurs Docker soient toujours en fonction (après un crash, un redémarrage du système ou  de session), vous pouvez ajouter –restart=always à la commande run. Ceci doit être fait en créant le conteneur. Donc, si vous en avez déjà créé un, vous devez l'arrêter, l'effacer (rm) et le recréer.+Si vous voulez que les conteneurs Docker soient toujours en fonction (après un crash, un redémarrage du système ou de session), vous pouvez ajouter –restart=always à la commande run. Ceci doit être fait à la création du conteneur. Donc, si vous en avez déjà créé un, vous devez l'arrêter, l'effacer (rm) et le recréer.
  
 Cela ne fonctionne-t-il que pour le port 80 ? Cela ne fonctionne-t-il que pour le port 80 ?
Ligne 133: Ligne 133:
 J'ai sauvegardé un exemple de ma configuration ici : http://pastebin.com/1M5DMkF3  J'ai sauvegardé un exemple de ma configuration ici : http://pastebin.com/1M5DMkF3 
  
-Pratiquement, l'ajout de nouveaux conteneurs ne consiste qu'à copier la ligne acl (#33], la ligne use_backend (#36et le bloc backend (#39-43). Assurez-vous de l'incrémentation des numéros d'étiquettes (host-test1 devient host-test2, etc.). Et donnez à chaque backend un nom unique (et réglez bien l'IP !).+Pratiquement, pour ajouter de nouveaux conteneurs on n'qu'à copier la ligne acl (#33), la ligne use_backend (#36et le bloc backend (#39-43). Assurez-vous de l'incrémentation des numéros d'étiquettes (host-test1 devient host-test2, etc.). Et donnez à chaque backend un nom unique (et réglez bien l'IP !).
  
 **How do I make a wildcard dnsmasq entry? **How do I make a wildcard dnsmasq entry?
issue107/c_c.1460887667.txt.gz · Dernière modification : 2016/04/17 12:07 de andre_domenech