Livre Blanc: Docker, À Quoi Çà Sert ?
Livre Blanc: Docker, À Quoi Çà Sert ?
Livre Blanc: Docker, À Quoi Çà Sert ?
A QUOI A SERT ?
AUTEUR : DAVID NEGRIER
JUIN 2015
CONTEXTE
Cre il y a tout juste 2 ans, Docker est la startup par excellence. 135 millions de
dollars levs, value en avril 2015 plus de 1 milliard de dollars de capitalisation
boursire, la socit cre par des franais fait le buzz dans la Silicon Valley. Elle attire
lattention des plus gros : Google, Amazon, IBM, Microsoft, tout le monde suit de prs
son volution. Alors simple bulle ou vraie rvolution ? Et puis dabord, cest quoi
Docker ?
UN HEBERGEMENT MUTUALISE :
clic. On peut la faire passer dun serveur un autre par une simple copie dun fichier,
etc.
Pour terminer ce tour dhorizon des solutions dhbergement pre-Docker , rajoutons
une nuance propos des machines virtuelles. Nous allons faire la distinction entre 2
types dhbergements :
LE SERVEUR VIRTUEL PUBLIC est une offre dans laquelle le serveur que
vous commandez fonctionne sur un hte dont lhbergeur est responsable. Cest par
exemple le cas avec Amazon Web Services (AWS pour les intimes). Vous commandez
un serveur virtuel, vous ne savez rien de lhte sur lequel il tourne. Dautres serveurs
virtuels dautres clients fonctionnent sur le mme hte. En fait, Amazon pourrait trs
bien dcider de changer votre serveur dhte, cela ne vous concerne pas.
Pour faire simple, avec un mme serveur, on gre plus dapplications, donc on fait des
conomies ! Succs assur, surtout auprs de gros consommateurs de serveurs
comme Google !
Cet avantage est aussi un inconvnient potentiel. Puisque les containers partagent le
mme noyau, un container pourrait sattribuer toutes les ressources dun serveur.
Mme sil existe des techniques pour viter cela, on comprend que les containers ne
soient pas aussi efficaces que les machines virtuelles dans le cadre dun cloud public.
Les containers sont donc en fait naturellement en concurrence avec les offres de
cloud priv, type OpenStack.
Evidemment, les containers seront installs sur un serveur hte, qui sera la plupart du
temps un serveur ddi, mais qui pourrait aussi tre un serveur virtuel !
ce niveau de lecture de ce livre blanc, vous devez dj avoir une ide de la rponse
la question Est-ce que Docker est fait pour mon entreprise ? . Si vous avez ressenti
le besoin de disposer dun cloud priv, si vous multipliez les serveurs pour de petites
applications ou si au contraire vous avez de nombreuses applications hberges sur
un seul serveur et que vous souhaitez les stocker dans des environnements bien
spars, il est probable que la rponse soit oui.
LE DOCKERFILE
Afin de mettre en place un container Docker, il faut indiquer Docker la liste des
commandes excuter pour installer les applications que lon souhaite mettre dans le
container. Cette liste de commandes est saisie dans un fichier nomm Dockerfile. Et
qui rdige ce Dockerfile ? Le dveloppeur !
Docker dclenche donc un transfert de responsabilit des ops vers les devs .
Avant Docker, le choix des applications installes (base de donnes, serveur web, etc.)
tait la main des ops . Souvent, les dveloppeurs navaient pas la main sur la
machine de production pour installer lapplication. Avec Docker, le dev fournit un
container dans lequel il a configur lui-mme les applications.
Est-ce une bonne chose ?
Oui, pour plusieurs raisons :
Le dveloppeur a souvent une trs bonne connaissance des applications quil
utilise et sait les configurer trs prcisment.
Cette configuration est de plus stocke avec le code (donc versionne dans un
dpt de code type GIT).
Le fichier Dockerfile est autodocument et remplace avantageusement une
documentation dinstallation qui pourrait ne pas tre toujours mise jour.
La quatrime ligne (EXPOSE) permet douvrir le port 80. Il sagit du port rseau utilis
par le protocole HTTP. Nous devons systmatiquement prciser Docker quels sont
les ports qui sont accessibles depuis lextrieur du container pour des raisons de
scurit.
La dernire ligne (CMD) contient linstruction qui sera lance par dfaut au dmarrage
du container. Ici, nous dmarrons le serveur Apache.
LA REGISTRY DOCKER
9
Puisque chaque container est bas sur un container parent, lorsque vous souhaitez
construire votre propre container, la premire question va tre :
de quelle image partir ?
Mais avant tout, quest-ce quune image ? Une image est cre partir de fichiers de
configuration Dockerfile qui proposent une description exacte de ce qui doit tre
install sur le systme. Les images contiennent tout ce que lon souhaite y installer (un
script lancer, une base de donnes MySQL) mais ne sont pas actives. Cest le
container qui a le pouvoir dinteragir avec les applications prsentes dans limage (faire
tourner un serveur par exemple).
Une des grandes forces de Docker, cest justement doffrir une registry
(http://registry.hub.docker.com/). Il sagit dun site rfrenant un trs grand nombre
dimages (plusieurs dizaines de milliers de containers !)
Nimporte qui peut se crer un compte dans la registry et venir dposer ses propres
images (qui seront publiques).
Attention cependant, la plupart de ces images sont de trs mauvaise qualit, ou non
maintenues ! Il faut donc apprendre faire le tri. Voici nos conseils :
Utiliser en priorit des images officielles si elles existent. Celles-ci peuvent tre
soit :
o Dveloppes par les quipes de Docker (par exemple limage ubuntu)
o Dveloppes par les quipes des projets eux-mmes (par exemple
limage Mysql)
Si lapplication que vous utilisez ne dispose pas dune image officielle, il est
probable que quelquun en ait dj dvelopp une. Avant de vous prcipiter
dessus, vrifiez :
o Le nombre de tlchargements et dtoiles , qui donnent une
indication de la popularit de limage
o Les diffrents tags , qui permettent de voir si limage est supporte
dans le temps par son auteur
Si vous navez pas une grande confiance en une image, par exemple parce
quelle semble non maintenue, il vaut mieux rcuprer le code du Dockerfile de
limage et repartir de ce code pour votre projet (i.e. faire un fork).
Note : les images publies sur Docker sont par dfaut publiques. Docker offre
nanmoins la possibilit dhberger des images prives contre un abonnement
10
11
12
13
14
Mais que se passe-t-il si vous voulez disposer de plusieurs containers (donc plusieurs
applications web) sur le mme hte ?
Par exemple, vous avez peut-tre 2 containers PHP et un container NodeJS qui
souhaiteraient rpondre sur le port 80. Hlas, un port ne peut tre occup que par un
seul container !
Pour rsoudre ce problme, Docker propose de passer par un reverse-proxy .
Derrire ce nom barbare se cache un processus tout simple. Cest un autre container
(gnralement utilisant le serveur web Nginx), qui va couter sur le port 80. En fonction
du nom de domaine demand, la requte sera automatiquement transfre au
container concern.
15
16
DERNIERE MINUTE !
Nous allions publier ce livre blanc et une nouvelle vient juste d'tre annonce... Docker,
CoreOS, Google, Amazon et Microsoft (entre autres) ont dcid de travailler ensemble
pour crer un standard unique de dploiement de containers: the Open Container
Project. Il s'agira d'un standard permettant l'introprabilit entre des containers
Docker (le standard de-facto jusque l) et d'autres containers. Quand on vous dit que
les choses bougent vite dans le monde des containers.
17
CONCLUSION
Alors Docker, simple mode ou vraie rvolution ?
Rvolution, assurment. Docker est une technologie trs jeune, et pourtant dj trs
ancre auprs des devops. Il est clair que les avantages offerts par la technologie et sa
facilit dapproche vont rendre lutilisation des containers incontournable dans le futur.
Mais doit-on adopter Docker tout de suite ?
Et bien tout dpend de votre besoin. La solution est neuve et bouge encore beaucoup:
Suivre les volutions de Docker peut tre couteux.
Egalement, la qualit assez moyenne des images existantes dans le repository
impose un cot dadaptation assez fort. La promesse de Docker est de fournir
des images de containers comme des boites noires qui marchent du
premier coup, mais force est davouer que pour linstant, il est frquent de
devoir modifier ces images.
Les bonnes pratiques dutilisation commencent tout juste merger et ne sont
pas encore universellement partages, tant du point de vue dveloppeur que du
point de vue oprationnel.
Les outils dorchestration sont trop nombreux pour savoir lequel choisir pour
une architecture complexe, avec un vrai risque de choisir un outil qui va prir.
Cependant, il ne sagit que de dfauts de jeunesse et dici quelques annes,
lenvironnement sera plus stable et plus mr.
La preuve ? Les leves de fonds successives de Docker assurent que la technologie va
voluer. Si Docker est une technologie qui ne fonctionne aujourdhui que sous Linux,
Microsoft est en train de travailler une compatibilit Windows, preuve de lintrt des
gants de linformatique pour les containers.
Et cest comprhensible ! la clef, nous parlons dconomies importantes en termes
de matriel et dune automatisation de processus dinstallation complexes.
Alors nul ne peut lire lavenir, et peut-tre que Docker tombera aussi vite quelle est
monte, mais une chose est sre : la technologie des containers que Docker a russi
dmocratiser est l pour rester.
18
A PROPOS DE THECODINGMACHINE
TheCodingMachine accompagne ses clients sur des missions de conseil
technologique et sur des projets de dveloppement d'applications Web.
Nous sommes spcialiss dans le dveloppement de sites Internet, dextranets
(videmment), dintranets, dapplications Web mtiers en PHP et en JavaScript.
Fonde en 2005, TheCodingMachine a pilot plus de 300 projets. Nous travaillons
aussi bien pour des grands comptes privs et publics, pour des PME-PMI que pour des
startups. Nous avons investi ds notre cration dans la R&D, ce qui nous permet par
exemple dtre la pointe des technologies web (PHP, Node.JS, AngularJS, streaming
video etc.).
www.thecodingmachine.com
Tl : 01 71 18 39 73
contact@thecodingmachine.com
4, rue de la Michodire 75002 PARIS
19