• # Docker c'est bien

    Posté par . En réponse au journal Docker, la plateforme à la mode. Évalué à 8.

    J'aime bien Docker, je l'utilise sur mon serveur perso en tentant de rester au maximum dans sa "philosophie", mais moi aussi j'ai du mal !

    • l'IPv6, un projet si récent sans que le support de l'IPv6 soit pensé de base c'est regrettable, du coup je lance mes conteneurs sans réseau et le rajoute après avec ip ns, perdant au passage toute la philosophie réseau de docker.

    • La philosophie de CoreOS/Docker est que tout doit tourner dans un conteneur pour être plus facile à migrer, mais chez moi l'hôte fournis plusieurs services aux conteneurs (logging, stockage, cron)

    • Le logging justement, la solution de Docker de capturer la sortie du programme est très insuffisante, et les astuces pour recycler les logs des conteneurs relèvent du chamanisme.

    Docker compte que toutes les applications accepterons de rester au premier plan, et de logger sur stderr mais c'est loin d'être le cas malgré l'arrivé de longue date de plusieurs superviseurs qui réclament ce mode de fonctionnement (genre runit ou Deamontools), de systemd, de Docker, le patch pour garder Postfix au premier plan, n'a jamais été aussi loin d'être intégré, et c'est pas le seul !

    Du coup je log sur le rsyslog de l'hôte, y'a l'astuce qui traîne sur le net, mais /!\ elle n’est pas bonne, essayez de relancer rsyslog et ça cassera le bitoniau magique. Il faut partager un dossier contenant le socket et pas le socket lui-même.

    • Pour cron j'utilise aussi celui de l'hôte avec docker exec, mais ça me permet pas de récupérer le code de sortie du programme, à voir si d'autres solutions genre nsenter le permettent.

    Si y'a un truc que j'aime bien par contre c'est les Dockerfile ! Elle sont parfaitement suffisantes pour moi et m'offre une sécurité appréciable.

    Avant je conservais des images de mes VM avec toujours la problématique de garder une image saine dans le temps face à la menace des rootkits.

    Avec les Dockerfile je garde qu'une recette et génère une image propre quand je le veut.

    On peut même imaginer automatiser tout ça pour qu'un conteneur soit régénère toutes les genre 30 minutes.

    Ça remplace pas SELinux mais c'est une sécurité supplémentaire pour moi.

    J'aime tellement cette méthode que je fait la même chose pour mes serveurs physiques maintenant, au lieu de les sauvegarder je crée un script pour les ré-générer à l'identique.

    Pour le "un service par conteneur", j'y arrive plutôt bien, il m'arrive même de redécouper un service sur plusieurs conteneurs pour mieux isoler ce qui sera directement exposé au net ou non, genre pour Dovecot :
    - dovecot-pub : le service public accessible via le net
    - dovecot-int : même-chose qu'au dessus, mais uniquement sur le réseau local, utilisé par horde pour accéder à l'IMAP
    - dovecot-auth : la couche d'authentification SASL pour Postfix
    - dovecot-lmtp : reçoit les mails entrant de Postfix et les place dans la boite de l'utilisateur

    Sur ces quatre conteneurs, seul le premier est accessible directement via le net.

    Par contre ce qui me manque c'est une possibilité de hiérarchiser les conteneurs dans une arborescence, je sais les tags c’est plus moderne, mais ça me parle moins.

    C'est un bon projet, mais avec des défauts de jeunesse qu'on a du mal a comprendre sur des choses qui font partie de ce que j’estime être le minimum vital.