Janvier 24 2019

Qu'est-ce que Docker ? Pourquoi devrais-je m'intéresser à Docker ?

Print Friendly, PDF & Email

Qu'est-ce que Docker ?

Docker est une nouvelle approche de la virtualisation. Si vous comprenez la virtualisation, n'hésitez pas à sauter la section suivante. Sinon, vous aurez besoin d'une compréhension de base de la virtualisation avant de pouvoir vous aider à comprendre Docker.

Qu'est-ce que la virtualisation ?

Commençons par une métaphore : imaginez que vous possédez une maison. Vous avez un ami qui a besoin d'un endroit. Vous avez quelques options si vous voulez aider votre ami.

  1. Emmenez votre ami directement dans votre chambre avec vous. Cela pourrait devenir un peu inconfortable.
  2. Construisez une nouvelle maison pour votre ami sur votre propriété. C'est une solution coûteuse.
  3. Invitez votre ami à rester dans la chambre d'amis. Nous irons bientôt ailleurs...

La troisième option est assez bonne. Vous êtes capable d'aider votre ami sans lui construire une nouvelle maison, tout en gardant vos vies séparées. Vous partagerez des ressources communes comme la cuisine et le salon, mais vous pouvez entrer dans vos chambres et fermer la porte pour plus d'intimité.

La virtualisation, c'est comme installer votre ami dans votre chambre d'amis. Imaginez que vous vouliez exécuter un serveur Web sur votre ordinateur. Vous voulez le séparer de votre système d'exploitation et de vos applications. Pour ce faire, vous pouvez effectuer une machine virtuelle contenant le serveur Web. Il fonctionne comme un ordinateur séparé, mais utilise le processeur et la RAM de votre ordinateur. Lorsque vous démarrez la machine virtuelle, l'intégralité du système d'exploitation s'affiche dans une fenêtre au sein du système d'exploitation.

En quoi Docker est-il différent ?

Docker est une façon différente de faire de la virtualisation. Lorsqu'une machine virtuelle typique englobe le système d'exploitation avec l'application en cours d'exécution, Docker partage autant que possible entre les systèmes virtualisés. Cela les amène à utiliser moins de ressources lorsqu'elles sont exécutées et les rend plus facile à distribuer à d'autres développeurs ou à votre environnement de production.

Pourquoi les développeurs devraient-ils utiliser Docker ?

Docker en propose aux développeurs Web de formidables super-pouvoirs .

Partage facile des environnements de développement

Si vous et moi faisons équipe sur une application Node, nous aimerions nous assurer qu'ils ont tous les deux installé Node et que est la même version dans pour que nos environnements soient cohérents. Nous pourrions sauter ceci et espérer le meilleur, mais pourrait nous causent des problèmes qui peuvent être difficiles à cerner. Les bibliothèques et notre code se comportent parfois différemment entre les différentes versions du nœud.

La solution est de s'assurer que nous avons tous les deux la même version de Node, mais, si nous avons chacun déjà d'autres projets sur nos systèmes qui nécessitent d'autres versions de Node, nous voudrions probablement installer NVM ce qui nous permet de changer facilement de version de Node. Nous pouvons ensuite ajouter un fichier .nvmrc à la racine du projet en spécifiant la version commune que nous voulons.

Nous n'avons qu'à le faire une fois, donc notre travail est fait. Pour résumer, voici ce que nous devions faire :

  1. Choisissez une version du nœud.
  2. Installez NVM.
  3. Installez notre version choisie de Node.
  4. Ajoutez un .nvmrc au répertoire du projet, en définissant la version correcte du nœud.
  5. Lancez l'application.

Cela fonctionne, mais c'est beaucoup de travail. Nous devons refaire la plupart de cela pour toute autre personne qui souhaite se joindre à nous sur ce projet. Même si nous prenons toutes ces mesures, nous ne pouvons pas encore garantir que l'environnement est le même pour tous les développeurs. Les choses pourraient se briser entre les développeurs exécutant différents systèmes d'exploitation ou même différentes versions du même système d'exploitation.

Docker nous permet de résoudre tous ces problèmes en offrant le même environnement de développement à tous les développeurs. Ici à la place, avec Docker, voici ce que nous ferions :

  1. Installez Docker.
  2. Écrivez un fichier Docker.
  3. Exécutez docker build -t . Le nom de l'image peut être tout ce que vous choisissez.
  4. Exécuter docker exécuter -p 3000 : 3000 . L'option "p" mappe un port de conteneur à un port local. Cela vous permet de connecter le port 3000 de votre ordinateur auquel le port 3000 du conteneur sera associé. Utilisez le même nom d'image qu'à l'étape 3.

Cela peut ne pas sembler beaucoup plus simple que la configuration Node / NVM (et ce n'est vraiment pas le cas). Ce non ils viennent avec un avantage cependant. Vous devrez installer Docker seulement une fois quelle que soit votre pile technologique. Bien sûr, vous n'aurez besoin d'installer Node qu'une seule fois (à moins que vous n'ayez besoin de plusieurs versions), mais, lorsque vous serez prêt à travailler sur une application qui se trouve sur une pile différente, vous devrez installer tous les logiciels dont vous avez besoin. Avec Docker, vous devrez simplement écrire un autre Dockerfile (ou un Docker Composer un selon la complexité de votre application).

Le Dockerfile est très simple : c'est un fichier texte appelé « Dockerfile » sans extension. Jetons un coup d'œil à un Dockerfile que vous pourriez utiliser pour un simple Node.

# Cette image Docker sera basée sur l'image Node 11.6 FROM node : 11.6.0 # Installez le package COPY des dépendances * .json ./ RUN npm install # Copiez l'application de nœud de l'hôte dans l'image à /app COPY. / app # Exposez le port 3000 et lancez l'app EXPOSE 3000 CMD npm start

Ce Dockerfile est écrit pour une application de nœud qui écoute sur le port 3000 et démarre avec la commande npm start. Mettez-le dans votre référentiel de projet et les nouveaux développeurs intégrés deviennent assez simples et 100% cohérents - chaque développeur obtient toujours le même environnement.

Développer sur le même environnement que la production

Une fois l'application installée dans un environnement de développement Docker, vous pouvez envoyer l'intégralité du conteneur directement en production. Si vous pensez que c'est un problème de gérer les incohérences entre deux développeurs, attendez simplement que vous écriviez le code qui fonctionne sur votre machine juste pour m'assurer que nonfonctions en production . C'est extrêmement frustrant.

Vous avez des tonnes d'options pour déployer des conteneurs Docker en production. En voici quelques uns:

J'aime l'approche d'Heroku car c'est la seule qui vous permet simplement d'accélérer votre projet avec un Dockerfile pour les exécuter. D'autres prennent de nombreuses autres mesures, telles que le transfert de l'image Docker vers un référentiel. Les étapes supplémentaires ne sont pas la fin du monde, mais elles ne sont pas nécessaires.

Qu'en est-il des applications plus complexes ?

En raison de la philosophie de Docker (un processus par conteneur), le la plupart des applications nécessiteront plusieurs conteneurs . Par exemple, un site WordPress doit être composé d'un conteneur pour le serveur Web exécutant PHP et d'un conteneur pour la base de données MySQL. Cela signifie que vous avez besoin d'un moyen pour les conteneurs de parler. C'est appelé orchestration de conteneurs .

Si vous pouvez exécuter tous les conteneurs sur un seul hôte, Docker Compose il répondra probablement aux besoins d'orchestration. Il est inclus lorsque vous installez Docker et il est facile à apprendre. Il vous permet de lancer plusieurs conteneurs en même temps et de vous mettre en réseau afin qu'ils puissent se parler. C'est le moyen le plus rapide et le plus simple d'orchestrer plusieurs conteneurs.

Si vous devez orchestrer des conteneurs éparpillés plus hôte, Kubernetes est la solution dominante. De nombreux hôtes prenant en charge les déploiements Docker proposent Kubernetes pour l'orchestration.

Gains rapides grâce à la compréhension de Docker

Cela peut ne pas sembler important maintenant, mais archivez ces connaissances pour la première fois que vous rencontrez un problème causé par des différences d'environnements. Elle non veut que cela se reproduise. Apprentissage de Docker, vous serez en mesure d'assurer un environnement cohérent pour votre application , quel que soit l'endroit où il est exécuté ou qui l'exécute. Ça signifie résultats cohérents sur vous, vos clients et vos employeurs pouvez compter sur vous.

Vous avez des doutes ? Vous ne savez pas par où commencer ? Contactez-nous


Nous avons toutes les réponses à vos questions pour vous aider à faire le bon choix.

Écrivez-nous

Discutez directement avec notre support technique.

0256569681

Appelez-nous immédiatement pendant les heures de bureau de 9h30 à 19h30

Recevoir de l'aide

Ouvrez un ticket directement dans l'espace support.

INFORMATIONS

ManagedServer.it est le premier fournisseur italien de solutions d'hébergement hautes performances. Notre modèle d'abonnement est abordable et prévisible, afin que les clients puissent accéder à nos technologies d'hébergement fiables, à nos serveurs dédiés et au cloud. ManagedServer.it offre également d'excellents services d'assistance et de conseil sur l'hébergement des principaux CMS Open Source tels que WordPress, WooCommerce, Drupal, Prestashop, Magento.

haut