Librox blog

À deux, c’est mieux

Accueil > Divers > Docker : une introduction pas comme les autres

Docker : une introduction pas comme les autres

vendredi 20 juin 2014

Vous avez sans doute vu passer quelques articles présentant Docker.io et ses principales commandes. Je vais donc pas vous la refaire. Par contre je vais vous expliquer l’utilisation que je vais en avoir sur mon serveur en production : mail, torrent, Bind, NFS, FTP, WEB puis plus tard Jabber et sans doute d’autres services.

Dans cette première partie, je vais vous décevoir : pas une seule ligne de code :D Je vais seulement essayer de vous décrire mon projet. Un article suivra sur les bases de docker.io : installation, téléchargement des images de base et création des containers de donnés. Puis un article par container offrant un service. Pour finir, j’espère arriver à regrouper tout ça sous un seul script bash qui installera le serveur en 3 coups de cuillères à pot (et tout foutre sur git tant qu’on y est). Donc pour l’instant beaucoup de texte, je vais vous saouler à la CyrilleBorne. Mais vous pouvez me faire confiance, je rentre de 1an au Havre donc les dockers et les containers, ça me connaît.

Pour la présentation de Docker.io, on va faire vite. Je vous conseille :
Le tuto officiel qui est bien expliqué, à suivre pas à pas
Une démystification par Nicolargo
Présentation de Marien qui m’a permis ne plus avoir besoin de la commande sudo
Et la doc officielle qui est très bien faite et lisible.

Fini alternc donc pour mon serveur. Alternc m’a permis de faire mes débuts en auto-hébergement mais désormais c’est de la vieille école... Il me faut maintenant passer de squeeze à wheezy et c’est la galèèère ! D’après mes tests, Alternc ne marche pas du tout sous wheezy alors je vous parle même pas du transfert des sites, des mails et des bases de données... Docker au contraire, c’est de l’ultraportable. On fait un container et on le passe d’un serveur à l’autre sans soucis (j’ai pas encore testé lol). Je peux donc faire mes tests sur mon pc portable et quand ça marche balancer sur le serveur en production. On peut ajouter des services comme on copie sur un disque réseau.

L’idée c’est de respecter une certaine méthodologie et organisation.

Je m’inspire beaucoup de ce mec, le côté puppet en moins

Données sensibles :
Je dois pouvoir repérer d’un coup d’oeil les données à sauvegarder (toutes dans /data). Chaque répertoire dans /data se verra allouer une partition LVM que je pourrai sauvegarder facilement et redimensionner à chaud. Et chaque répertoire dans /data aura son propre container rien que pour partager ces données.
Chaque service disposant d’un socket aura sa propre partition LVM pour y caser son socket (ex : /socket/mysql/mysql.sock). Le container roundcube par exemple qui voudra accéder à mysql, montera le dossier en question en Read Only.
On réinvente pas la roue :
Pour un soucis de compréhension, de portabilité et de simplicité, j’essaierai au maximum de garder les options et répertoire par défaut (ex : conf de bind dans /etc/bind/). Ces répertoires seront liés au dossier /data de l’host à la création du container. On utilise toujours le même lanceur d’application : Supervisord car c’est géniale et ça marche pour une configuration minimale. J’adore l’interface web pour voir l’état des service et relancer/stopper au besoin. Et un accès ssh par container de service pour voir ce qui se passe (au début je pensais que c’était superflu... l’erreur).
On ne se disperse pas :
À chaque service son container. Autant que possible, on garde l’avantage de la virtualisation qui est de pouvoir compartimenter sa machine. J’ai prévu les containers suivants (en plus des containers de données) :

  • Mysql fait
  • DockerUI (pour gérer les containers et images) chopé sur les repo
  • Transmission pour le partage de torrent fait
  • NFS pour le partage multimedia et des documents sur le réseau local fait
  • Bind pour gérer mes noms de domaines fait
  • Postfix le facteur informatique en cours
  • Dovecot la boîte aux lettre informatique à faire
  • Postgrey le STOP PUB informatique à faire
  • ClamAV antivirus à faire
  • Roundcube ou autre webmail : Mailpile est très prometteur à faire
  • Apache+php pour les principaux sites à faire
  • Aggrégateur RSS online (lequel ?) à faire ou à télécharger
  • Proftp pour que les webmasters puissent faire leurs sites à faire
  • Et ce que je trouverai d’intéressant, l’avantage de Docker c’est que je peux en ajouter autant que je veux (limité par la RAM) et si ça me plait pas c’est aussitôt viré sans laisser aucune trace.

J’ai aussi prévu 2G de RAM supplémentaire ajouté à ma machine..

Je mettrai ici le sommaire de tous les autres articles, si je les fais un jour.