Un cyber Pearl Harbor est-il possible ? (25/06/2024 à 18h) : inscrivez-vous !

Emboîter le pas de la conteneurisation avec Docker

2021-09-21
Emboîter-le-pas-de-la-conteneurisation-avec-Docker
Imaginez, vous développez tranquillement votre petit site web en PHP8, c’est joli et vous êtes content, jusqu’au moment où… surprise ! Lors de la mise en ligne, c’est PHP5 qui est installé sur le serveur du client. Tout de suite, c’est moins sympa. Vous faites quoi ? A : l’appel à un ami, vous simulez un coup de téléphone urgent pour prendre la fuite. B : le 50-50, vous avouez que c’est peut-être un peu votre faute, mais pas tant que ça. C : la lecture, vous décidez de vous plonger dans cet article et comprenez directement ce qu’il fallait faire depuis le début.

C’est quoi Docker ?

Docker :

Ouvrier qui travaille au chargement et au déchargement des navires.

Remplacez “ouvrier” par “outil”, “navire” par “applications” et préparez-vous à quitter le port pour vous installer à bord de votre machine virtuelle.

Docker

L’application est bien empaquetée ? On envoie !

📖 Simon, un de nos formateurs, va vous raconter une belle histoire :

Imaginez que vous êtes un grand fan de châteaux de sable. Vous pratiquez même cette activité dans des concours. Chez vous, dans votre bac à sable maison, vous avez un sable jaune parfait, importé de Chance-sur-Plage, dont vous êtes très fier, et avec lequel vous faites des châteaux incroyables. À tel point que vous êtes certains de gagner le concours. 

Un beau château de sable

Seulement, le jour de la compétition, c’est la tuile : le sable fourni, c’est du sable de Pas-de-Bol-sur-Flaque. Il est plus sec et vous sentez que votre construction ne pourra pas tenir. Tous vos plans tombent à l’eau, il va falloir tout repenser en partant de zéro.

Un château de sable qui aurait été plus joli avec Docker

 Ah, si seulement vous pouviez copier-coller tout votre atelier dans le hangar du concours, ça aurait été la victoire assurée !

On développe :

Docker, c’est un peu le fournisseur de bac à sable déplaçable et reproductible. Vous créez un “plan de construction” de votre atelier : les images. Et à chaque fois que vous en aurez besoin, vous pourrez faire apparaître une version toute neuve de l’atelier dans un espace réservé et sécurisé : les containers. Et là, c’est le début de la fin de tous vos problèmes d’incompatibilité, de versions différentes ou encore des heures de perdues en configuration. Avec Docker, l’environnement de travail lui-même devient une partie intégrante du code source, partageable, modifiable et même “versionable” ! Nous avons d’ailleurs détaillé un pas à pas pour déployer Docker pour Symfony.

Pourquoi utiliser Docker ?

📖 On a bien vu que vous aimiez les histoires. Alors, on a passé le clavier à Olivier, formateur O’clock :

Docker, d’un peu plus près

Docker, d’un peu plus près

Il était une fois un développeur qui avait réalisé un site web (jusque-là, rien de déconnant). Tout fonctionnait à merveille, il décida de déployer le site en question sur un serveur pour le passer en production. À lui les vacances bien méritées ! Sauf que le repos fut de courte durée, le site accumulait les bugs et les erreurs, au grand désarroi du développeur qui répétait inlassablement : “ je ne comprends pas, tout fonctionnait bien sur ma machine !” Ce à quoi le patron répondit : “Très bien, alors, déployons ta machine !” 

Et c’est ainsi qu’est né Docker. Ou pas, mais au moins c’est encore un peu plus clair là. 

On développe :

Comme évoqué précédemment avec notre bac à sable reproductible, Docker permet de créer un environnement 100% maîtrisé dans lequel va s’exécuter le fruit de nos développements : c’est un container Docker. Dans un système d’exploitation qui exécute le logiciel Docker, on va pouvoir créer ou récupérer un container dans lequel notre application va s’exécuter sans problème. Il n’y aura pas de surprise vu qu’elle aura été conçue et testée dans ce même container, avec les mêmes versions des langages et bases de données que vous avez utilisées sur votre ordinateur. Et ça tombe bien, Docker fonctionne sous Mac, Linux ou encore Windows.

On utilise principalement Docker pour :

  1. Homogénéiser les environnements de développement : finie la galère de devoir installer la bonne version de PHP, NodeJS ou encore la configuration de base de données à effectuer. On installe Docker, on récupère la configuration du container et c’est (presque) parti. Et ce, même si la moitié de l’équipe de développeurs est sous Mac, l’autre sous GNU/Linux et qu’un petit malin est tout seul sous FreeBSD, par exemple.
  2. Tester : Docker permet de récupérer facilement un environnement dans lequel les tests de l’application vont s’exécuter.
  3. Déployer une application en toute sérénité : on ne déploie plus un site sur un serveur qui peut être mal configuré. Docker permet de déployer tout le nécessaire dans un seul container qui contient notre application.
  4. Isoler : votre site se fait pirater ? 🏴‍☠️ C’est problématique, mais avec Docker, la portée des dégâts sera limitée à votre container et pas à tout le serveur qui héberge le site. Bon, après, ce n’est pas une raison pour laisser de côté la sécurité, mais ça peut rassurer.

Se former à Docker : pour qui et pour quoi ?

Les DevOps :

À la base, “DevOps”, c’était une façon de travailler qui prônait l’idée comme quoi les développeurs et les administrateurs système devraient mieux communiquer entre eux pour faire correspondre les besoins serveur avec les contraintes du logiciel développé. Puis, c’est devenu un poste où la mission principale est de prendre le logiciel écrit par les développeurs et d’automatiser le déploiement sur les serveurs. Et pour ça, Docker est vraiment leur meilleur ami, il va permettre aux DevOps d’empaqueter le logiciel dans un container, ce qui facilite ainsi l’expédition vers le serveur. 

Les développeurs :

Ils vont être amenés à utiliser Docker dans leur environnement de développement. Très souvent, en entreprise, pour travailler avec un logiciel qui a besoin de fonctionner conjointement avec d’autres, plutôt que les installer manuellement, ils vont télécharger une ou plusieurs images Docker, qui contiennent tous les logiciels nécessaires et ainsi gagner un temps considérable.

Exemple : Votre programme a besoin des logiciels PHP, MySQL et Apache. Vous allez récupérer deux images Docker : Une avec PHP et Apache préinstallés. Et l’autre avec MySQL préinstallé. Et vous voilà paré pour développer, avec un environnement de travail prêt à l’emploi en quelques clics ou commandes dans votre terminal.

Les administrateurs système :

Un de leurs rôles principaux étant de garantir le bon fonctionnement des systèmes et réseaux d’une entreprise, ils vont apprécier pouvoir isoler les différentes applications sur le serveur, parce qu’en cas de hack par exemple, seul le container touché va être impacté.

Exemple : Vous rangez votre délicieux morceau de Brie de Meaux dans un tupperware étanche au frigo, mais vous l’oubliez. Il moisit, de la vie commence à se former dessus et il menace le reste de vos aliments présents dans votre frigo. Heureusement, rappelez-vous, il a été placé dans un tupperware étanche, votre frigo est sauvé ! Ce qui n’aurait pas été le cas sans le tupperware. Si vous voulez virtualiser tout ça, il suffit de remplacer le “tupperware” par un “container” et de dire merci Docker.