Skip to main content

Le concept containerisation (Docker)

· 6 min read

Docker est de plus en plus populaire car il résout des problèmes courants dans le développement logiciel, en particulier ceux liés à la configuration de l'environnement et à la compatibilité. Les applications modernes utilisent souvent une combinaison de différentes technologies, chacune avec des dépendances de version spécifiques. Ces applications doivent fonctionner de manière cohérente dans divers environnements (développement, test, production), qui peuvent différer en termes de système d'exploitation, de version et de matériel. Sans Docker, chaque environnement doit être configuré avec les versions correctes des services, ce qui entraîne des problèmes de compatibilité et des configurations complexes.

Qu'est-ce qu'un conteneur et quels problèmes résout-il?

Un conteneur est un moyen de packager des applications avec tout ce dont ils ont besoin à l'intérieur de ce package, y compris toutes ses dépendances et toutes les configurations nécessaires.

Le package est portable comme tout autre artefact, et ce package peut être facilement partagé et déplacé entre une équipe de développement ou une équipe de développement et d'opérations.

La portabilité des conteneurs, ainsi que tout ce qui est packagé dans un environnement isolé, lui donne des avantages qui rendent le processus de développement et de déploiement plus efficace.

Problèmes résolus par Docker

Docker est de plus en plus populaire car il résout des problèmes courants dans le développement logiciel, en particulier ceux liés à la configuration de l'environnement et à la compatibilité. Les applications modernes utilisent souvent une combinaison de différentes technologies, chacune avec des dépendances de version spécifiques. Ces applications doivent fonctionner de manière cohérente dans divers environnements (développement, test, production), qui peuvent différer en termes de système d'exploitation, de version et de matériel. Sans Docker, chaque environnement doit être configuré avec les versions correctes des services, ce qui entraîne des problèmes de compatibilité et des configurations complexes.

Les principaux problèmes que Docker résout incluent :

  1. La compatibilité des services avec le système d'exploitation sous-jacent et ses bibliothèques.
  2. La gestion des différentes versions des services et de leurs dépendances.
  3. La simplification du processus de configuration pour les nouveaux développeurs.

La solution de Docker consiste à regrouper chaque service avec ses dépendances système requises dans des conteneurs isolés. Cela permet de changer des composants sans affecter les autres services et de modifier le système d'exploitation sous-jacent sans impacter les services. Docker garantit que les applications fonctionnent de manière cohérente dans différents environnements, évitant ainsi le problème du "ça fonctionne sur ma machine".

De plus, Docker fournit des images prêtes à l'emploi pour divers environnements dans son dépôt officiel, ce qui facilite la configuration et l'exécution des services localement pour les développeurs. Par exemple, les développeurs peuvent récupérer une version spécifique d'une image de base de données Postgres et l'exécuter avec une seule commande. Cette flexibilité s'étend à l'exécution de plusieurs versions du même service pour différentes applications.

En résumé, Docker simplifie la configuration des environnements, assure la compatibilité et offre une flexibilité dans la gestion des services et de leurs dépendances.

Développement d'applications avant / après conteneur

Voyons maintenant comment les conteneurs améliorent le processus de développement par des exemples spécifiques.

Comment avons-nous développé des applications avant les conteneurs?

Habituellement, lorsque vous avez une équipe de développeurs travaillant sur une application, vous devez installer directement la plupart des services sur votre système d'exploitation.

Chaque développeur de l'équipe devrait alors aller installer les binaires de ces services, les configurer et les exécuter sur son environnement de développement local. Le processus d'installation sera différent en fonction du système d'exploitation qu'ils utilisent.

Vous avez donc quelques commandes à exécuter, et les chances qu'une erreur se produise sont élevées, en raison du nombre d'étapes nécessaires pour installer chaque service.

Maintenant, voyons comment les conteneurs résolvent certains de ces problèmes.

Vous n'avez pas à installer des services directement sur votre système d'exploitation, car le conteneur possède sa propre couche de système d'exploitation isolée avec une image de base Linux.

Vous avez tout packagé dans un environnement isolé, en tant que développeur, vous n'avez pas chercher les binaires à télécharger sur votre machine. Au lieu de cela, vous allez consulter le registre de conteneurs pour trouver le conteneur spécifique à votre application et le télécharger sur votre machine locale.

Déploiement d'application avant / après conteneur

Avant les conteneurs

Un processus de déploiement traditionnel ressemblera à ceci:

L'équipe de développeur créera des artefacts, qui sont essentiellement des fichiers, ainsi que des instructions sur l'installation et les configurer sur le serveur. Tous ces artefacts et instructions seront fournis par l'équipe de développement:

alt text

L'équipe de développement donnerait donc ces artefacts à l'équipe des opérations, et l'équipe d'opération mettrait en place les environnements pour déployer ces applications:

Texte alt

  • Dépendances externes sur le système d'exploitation du serveur: Le problème avec cette approche est que vous devez d'abord configurer tout et tout installer directement sur le système d'exploitation du serveur. Cela pourrait entraîner des conflits avec les versions de dépendance.
  • Mauvaise communication: un autre problème qui pourrait résulter de ce processus est un malentendu entre l'équipe de développement et les opérations. Parce que tout est dans un guide textuel, il pourrait y avoir des cas, où les développeurs manquent de mentionner certains points critiques sur la configuration et en cas d'échec, l'équipe d'opérations doit retourner aux développeurs et demander plus de détails.

Avec les Conteneurs

Avec les conteneurs, ce processus est simplifié, car maintenant les développeurs et les opérations fonctionnent dans une équipe pour former toutes les dépendances de configuration dans l'application.

Texte alt

Cela signifie que si vous utilisez un conteneur Docker, vous n'avez pas besoin de configurer quoi que ce soit directement sur le serveur, car tout est déjà encapsulé dans le conteneur. Au lieu de cela, il vous suffit d'exécuter une commande docker qui récupère le conteneur que vous avez stocké dans le registre, puis l'exécute.

C'est donc beaucoup plus simple et aucune configuration environnementale n'est nécessaire sur le serveur. La seule chose bien sûr est que vous devez installer et configurer le runtime docker sur le serveur avant de pouvoir y exécuter des conteneurs. Mais ce n'est qu'un effort unique.