GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Quand et pourquoi utiliser Docker

Qu'est-ce que Docker ?

Depuis sa sortie en 2012, Docker est devenu l'une des technologies à la croissance la plus rapide dans les devops et le développement Web. Cependant, comme toute nouvelle technologie, elle est encore en cours de développement, présente certaines limites et ne convient pas à tous les projets. Ce guide donne un aperçu des avantages et des inconvénients de Docker afin que vous puissiez décider s'il serait un bon ajout à votre projet.

Pour une introduction plus basique aux concepts et à la terminologie de Docker, consultez notre guide Introduction à Docker.

Avantages de Docker

  1. Reproductibilité :Semblable à une application Java, qui s'exécutera exactement de la même manière sur n'importe quel appareil capable d'exécuter une machine virtuelle Java, un conteneur Docker est garanti identique sur n'importe quel système pouvant exécuter Docker. Les spécifications exactes d'un conteneur sont stockées dans un Dockerfile. En distribuant ce fichier aux membres de l'équipe, une organisation peut garantir que toutes les images construites à partir du même Dockerfile fonctionneront de manière identique. De plus, avoir un environnement constant et bien documenté facilite le suivi de votre application et l'identification des problèmes.

  2. Isolement  :les dépendances ou les paramètres d'un conteneur n'affecteront aucune installation ou configuration sur votre ordinateur, ni sur aucun autre conteneur en cours d'exécution. En utilisant des conteneurs distincts pour chaque composant d'une application (par exemple, un serveur Web, un frontal et une base de données pour l'hébergement d'un site Web), vous pouvez éviter les dépendances conflictuelles. Vous pouvez également avoir plusieurs projets sur un seul serveur sans vous soucier de créer des conflits sur votre système.

  3. Sécurité  :Avec des mises en garde importantes (voir ci-dessous), la séparation des différents composants d'une grande application dans différents conteneurs peut avoir des avantages en matière de sécurité :si un conteneur est compromis, les autres ne sont pas affectés.

  4. Centre Docker :Pour les cas d'utilisation courants ou simples, comme une pile LAMP, la possibilité d'enregistrer des images et de les transférer vers Docker Hub signifie qu'il existe déjà de nombreuses images bien entretenues disponibles. Pouvoir extraire rapidement une image prédéfinie ou créer à partir d'un Dockerfile officiellement maintenu peut rendre ce type de processus de configuration extrêmement rapide et simple.

  5. Gestion de l'environnement :Docker facilite la maintenance de différentes versions, par exemple, d'un site Web utilisant nginx. Vous pouvez avoir un conteneur séparé pour les tests, le développement et la production sur le même Linode et le déployer facilement sur chacun.

  6. Intégration continue :Docker fonctionne bien dans le cadre de pipelines d'intégration continue avec des outils tels que Travis, Jenkins et Wercker. Chaque fois que votre code source est mis à jour, ces outils peuvent enregistrer la nouvelle version en tant qu'image Docker, lui attribuer un numéro de version et la transmettre à Docker Hub, puis la déployer en production.

Quand utiliser Docker

Si votre application appartient à une ou plusieurs des catégories suivantes, Docker peut convenir :

  1. Apprentissage de nouvelles technologies :Pour démarrer avec un nouvel outil sans passer du temps sur l'installation et la configuration, Docker propose un environnement isolé et jetable. De nombreux projets maintiennent des images Docker avec leurs applications déjà installées et configurées. Par exemple, si vous souhaitez vérifier un système de traçage distribué comme Zipkin, vous pouvez avoir une configuration de travail sur localhost simplement en exécutant :

    sudo docker run -d -p 9411:9411 openzipkin/zipkin
    
  2. Cas d'utilisation de base :Extraire des images de Docker Hub est également une bonne solution si votre application est suffisamment basique ou standard pour fonctionner avec une image Docker par défaut. Des cas tels que l'hébergement d'un site Web à l'aide d'une pile LAMP, l'utilisation d'un proxy inverse ou la configuration d'un serveur Minecraft ont souvent une image officielle ou bien prise en charge disponible sur DockerHub. Si la configuration par défaut de ces images est acceptable pour vos besoins, l'extraction de l'image peut vous faire gagner beaucoup de temps qui serait autrement consacré à la configuration de votre environnement et à l'installation des outils nécessaires.

  3. Isolement de l'application  :Si vous souhaitez exécuter plusieurs applications sur un serveur, conserver les composants de chaque application dans des conteneurs distincts évitera les problèmes de gestion des dépendances.

  4. Équipes de développeurs  :Si vous avez des développeurs travaillant avec différentes configurations, Docker offre un moyen pratique d'avoir des environnements de développement locaux qui correspondent étroitement à l'environnement de production, sans avoir besoin de ssh dans une boîte distante.

Quand ne pas utiliser Docker

Il y a aussi des moments où Docker n'est pas la meilleure solution. Voici quelques exemples :

  1. Votre application est compliquée et vous n'êtes pas/n'avez pas d'administrateur système. Pour les applications volumineuses ou compliquées, l'utilisation d'un Dockerfile préfabriqué ou l'extraction d'une image existante ne suffira pas. Créer, modifier et gérer la communication entre plusieurs conteneurs sur plusieurs serveurs est une tâche chronophage.

  2. Les performances sont essentielles pour votre application. Docker brille par rapport aux machines virtuelles en termes de performances, car les conteneurs partagent le noyau hôte et n'émulent pas un système d'exploitation complet. Cependant, Docker impose des coûts de performance. Les processus exécutés dans un conteneur ne seront pas aussi rapides que ceux exécutés sur le système d'exploitation natif. Si vous avez besoin d'obtenir les meilleures performances possibles de votre serveur, vous voudrez peut-être éviter Docker.

  3. Vous ne voulez pas de soucis de mise à niveau. Docker est une nouvelle technologie encore en développement. Pour obtenir de nouvelles fonctionnalités, vous devrez probablement mettre à jour les versions fréquemment, et la rétrocompatibilité avec les versions précédentes n'est pas garantie.

  4. La sécurité est essentielle pour votre application. Comme mentionné ci-dessus, conserver les différents composants d'une application dans des conteneurs séparés offre certains avantages en matière de sécurité, car un compromis dans un conteneur ne peut pas facilement affecter le reste de votre système. Cependant, l'approche de conteneurisation de Docker soulève ses propres problèmes de sécurité, en particulier pour les applications plus complexes. Ces problèmes peuvent être résolus, mais nécessitent l'attention d'un ingénieur en sécurité expérimenté. (Voir la section Plus d'informations pour des liens vers des discussions sur ces problèmes).

  5. Plusieurs systèmes d'exploitation. Étant donné que les conteneurs Docker partagent le système d'exploitation de l'ordinateur hôte, si vous souhaitez exécuter ou tester la même application sur différents systèmes d'exploitation, vous devrez utiliser des machines virtuelles au lieu de Docker.

  6. Clusters. Les conteneurs Docker sur des serveurs distincts peuvent être combinés pour former un cluster avec Docker Swarm. Cependant, Docker ne remplace pas les outils d'approvisionnement ou d'automatisation tels qu'Ansible, SaltStack et Chef. De plus, Docker a récemment annoncé la prise en charge de Kubernetes, laissant entendre que Docker Swarm pourrait ne pas être suffisant en tant que gestionnaire de cluster autonome.

Devez-vous utiliser des conteneurs Docker ?

Docker est devenu un moyen extrêmement populaire de configurer, enregistrer et partager des environnements de serveur à l'aide de conteneurs. Pour cette raison, l'installation d'une application ou même d'une grande pile peut souvent être aussi simple que d'exécuter docker pull ou docker run . Séparer les fonctions de l'application dans différents conteneurs offre également des avantages en matière de gestion de la sécurité et des dépendances.

Cependant, Docker ne remplace pas l'ingénierie système ou la gestion de la configuration, et son approche présente des inconvénients. Les développeurs doivent résister à la tentation de conteneuriser chaque application qu'ils créent, simplement parce que Docker est une solution populaire et conviviale. Comme pour tout outil, les exigences de tout projet doivent être soigneusement étudiées avant de décider d'utiliser Docker.

Plus d'informations

Vous pouvez consulter les ressources suivantes pour plus d'informations sur ce sujet. Bien que ceux-ci soient fournis dans l'espoir qu'ils seront utiles, veuillez noter que nous ne pouvons pas garantir l'exactitude ou l'actualité des documents hébergés en externe.

  • Docker
  • Docker Hub
  • Quand ne pas utiliser Docker
  • 5 problèmes de sécurité lors de l'utilisation de Docker
  • 8 règles de sécurité Docker à respecter
  • Votre logiciel est plus sûr dans les conteneurs Docker

Docker
  1. Comment installer et utiliser Docker dans Ubuntu 20.04

  2. Quand et pourquoi devrais-je utiliser Apt-get Update ?

  3. Comment et pourquoi utiliser un hôte Docker distant

  4. Comment installer et utiliser Docker Compose sur CentOS

  5. Pourquoi Deis et qu'est-ce que c'est ?

Comment installer et utiliser Docker Compose sur Ubuntu 20.04

Comment installer et utiliser Docker Compose sur Ubuntu 22.04

Comment installer et utiliser Docker sur Ubuntu 22.04

Qu'est-ce que Docker Compose et comment l'utiliser ?

Comment installer et utiliser Docker sur Ubuntu 20.04

Comment installer et utiliser Docker sur AlmaLinux 8