La technologie de conteneurs Docker (site officiel éponyme https://www.docker.com ) bouleverse les habitudes des équipes de développement, de test, de déploiement, d’exploitation, de « DevOps »…
C’est quoi Docker ?
C’est une approche alternative et novatrice dans le processus de packaging et déploiement d’applications (web), prenant en hypothèse:
- Les exploitants ne devraient pas de préoccuper de la façon dont les conteneurs sont construits, ni ce qu’ils contiennent (!!). Et devraient les considérer comme des boites-noires (appliances) interconnectées les unes aux autres.
- Les conteneurs sont construits par les développeurs, et utilisés tels quels partout (ça sent le miracle promis par Java à une certaine époque: « write once, run anywhere »). Partout ça veut dire: en test, dev, et en production.
- On ne met pas une application à jour, on la redéploie: ça implique une gestion fine des éventuels paramètres de configuration.
- Ces applications devraient être publiées en entrepôt (docker « registry« ).
Notion de Registry
Incontournable, le « registry » est un composant majeur, car utilisé à tous les niveaux:
- Développement: évidemment, pour partir d’une bonne base de travail. Cela permet de bénéficier des couches basses pré-qualifiées avec les stacks souhaitées (PHP, Java, Ruby…).
Ces ressources sont obtenues depuis docker.io , utilisé ainsi comme un gestionnaire de ressources (comme depuis github…). - Exploitation: moins évident, il faut de solides connaissance « DevOps » (le terme à la mode) et une grande confiance dans le système.
Mais peut contribuer à solidifier ces couches basses avec patches de sécurité, ou bonnes pratiques selon le besoin. - NB: localement le développement s’appuie sur des registries internes pour la production d’application clé-en-main.
Cette méthode est confortable pour le développeur, car elle ne perturbe pas sa façon de travailler. En effet, sur registries interne: on tagge, on commit, etc. comme sur un repo Git! - Enfin, sur une version qualifiée du registry interne, l’exploitation peut déployer l’application. L’intérêt est de minimiser la bande passante lors des futures opérations (upgrades).
Aller plus haut
Un peu d’outillage n’est pas superflu 🙂 , et pas mal de littérature fleurit sur le sujet, tant mieux! Ce petit billet en compilation de bonnes feuilles.
Montée en puissance
Tout doucement, commencer par la base sur les conteneurs!
Gestion des conteneurs : https://linuxfr.org/news/gerer-les-containers-avec-docker
Tutoriel pour manipuler les conteneurs: https://linuxfr.org/news/docker-tutoriel-pour-manipuler-les-conteneurs
Quelques logiciels pour survivre avec : https://linuxfr.org/news/logiciels-pour-survivre-avec-docker , basé sur http://blog.adminrezo.fr/2014/04/logiciels-environnement-docker-lxc-linux-containers/
Cas pratiques
On peut s’en servir pour qualifier des technos rapidement, par exemple « LemonLDAP::NG » :
https://blog.savoirfairelinux.com/2015/tester-lemonldapng-en-5-minutes-avec-docker/
Faire de la composition de conteneur:
http://javaetmoi.com/2015/07/plateforme-lamp-docker-compose/
Et rêve de tout développeur, automatiser la chaîne de production grâce à l’intégration continue:
http://blog.xebialabs.com/2015/09/16/docker-container-delivery-vs-traditional-app-delivery-in-xl-deploy/
Ressources
- http://blog.octo.com/en/docker-registry-first-steps/
- https://www.docker.com
- et puis Google aussi