Agence web » Actualités du digital » Que fait Docker et quand devez-vous l'utiliser?

Que fait Docker et quand devez-vous l'utiliser?

Docker est un outil pour exécuter vos applications à l'intérieur de conteneurs. Les conteneurs regroupent toutes les dépendances et le code dont votre application a besoin pour s'exécuter dans un seul fichier, qui s'exécutera de la même manière sur n'importe quelle machine.

Qu'est-ce que Docker?

Docker est un concept similaire aux machines virtuelles, sauf qu'il est beaucoup plus léger. Au lieu d'exécuter un système d'exploitation séparé complet (ce qui représente une surcharge considérable), Docker exécute des conteneurs, qui utilisent le même système d'exploitation hôte et ne virtualisent qu'au niveau logiciel.

Docker Engine s'exécute sur Linux, Windows et macOS et prend en charge Linux et Windows pour les conteneurs Docker. La saveur exacte de Linux n'a pas vraiment d'importance; la plupart des versions de Linux exécuteront le même noyau et ne diffèrent que par le logiciel utilisateur. Docker peut installer ce logiciel utilisateur dans le conteneur, vous permettant d'exécuter un conteneur CentOS sur Ubuntu. Par exemple, vous ne pourriez pas exécuter FreeBSD sur Ubuntu, car les noyaux sont différents.

L'image du conteneur Docker inclut uniquement ce dont votre application a besoin pour fonctionner. Si votre application utilise nginx et Node.js, l'image du conteneur les inclura, mais vous ne serez pas accablé par toutes les autres applications utilisateur que vous trouverez généralement sous Linux.

Pourquoi Docker est-il si utile?

Docker prend le même type de contrôle de version et d'empaquetage que ceux fournis par Git et NPM et vous permet de l'utiliser pour votre logiciel serveur. Étant donné que votre conteneur est une image unique, il est très facile de suivre la version des différentes versions de votre conteneur. Et comme tout est contenu, cela facilite la gestion de toutes vos dépendances.

Avec Docker, votre environnement de développement sera exactement le même que votre environnement de production, et exactement le même que l'environnement de développement de tous les autres, ce qui atténuera le problème «il est cassé sur ma machine!

Si vous vouliez ajouter un autre serveur à votre cluster, vous n’auriez pas à vous soucier de reconfigurer ce serveur et de réinstaller toutes les dépendances dont vous avez besoin. Une fois que vous avez créé un conteneur, vous pouvez partager le fichier de conteneur avec n'importe qui, et ils pourraient facilement avoir votre application opérationnelle avec quelques commandes. Docker facilite l'exécution de plusieurs serveurs, en particulier avec des moteurs d'orchestration comme Kubernetes et Docker Swarm.

Docker vous permet également d'organiser votre code pour le déploiement sur de nouveaux services. Supposons que vous disposiez d'un serveur Web que vous utilisez pour votre application. Vous avez probablement beaucoup de choses installées sur ce serveur, vous avez un serveur Web nginx pour héberger du contenu statique, vous avez probablement une base de données pour stocker des choses sur le backend, peut-être avez-vous un serveur API fonctionnant sur Express. js aussi. Idéalement, vous les diviseriez en applications distinctes pour les exécuter sur des serveurs distincts, mais le développement peut devenir compliqué.

Docker aide à nettoyer cela; vous pouvez empaqueter votre serveur Web et l'exécuter avec un conteneur nginx, vous pouvez empaqueter votre serveur API et l'exécuter avec un conteneur Node.js, et vous pouvez empaqueter votre base de données et l'exécuter dans son propre conteneur (bien que ce soit peut être pas la meilleure idée, mais c'est possible). Vous pouvez prendre ces trois conteneurs Docker et les exécuter tous sur la même machine. Si vous devez changer de serveur, c'est aussi simple que de migrer ces conteneurs vers un nouveau serveur. Si vous devez évoluer, vous pouvez déplacer l'un de ces conteneurs vers un nouveau serveur ou le déployer sur un cluster de serveurs.

Docker peut également vous faire économiser de l'argent si vous souhaitez exécuter plusieurs applications sur un seul VPS. Si chaque application a des dépendances différentes, il est très facile pour votre serveur de s'encombrer, comme une assiette de Thanksgiving avec tout se mélangeant. Avec Docker, vous pouvez exécuter plusieurs conteneurs séparés avec, par exemple, des versions distinctes de PHP, comme un plateau de déjeuner de lycée avec tout séparé.

Comment utilisez-vous Docker?

En production, il existe de nombreux services pour héberger des conteneurs Docker, notamment AWS ECS, des instances de conteneur Azure, des droplets DigitalOcean Docker et bien d'autres. Si votre fournisseur n'offre pas d'hébergement Docker géré, vous pouvez toujours l'installer vous-même sur votre VPS.

En développement, les conteneurs Docker sont simples à exécuter et ne nécessitent que quelques commandes. Pour commencer, vous devez installer le moteur Docker sur votre système d'exploitation hôte. Pour Windows et macOS, vous pouvez utiliser Docker Desktop, mais pour Linux, vous devrez installer Docker Community Edition à partir de votre gestionnaire de packages. Pour les distributions basées sur Debian comme Ubuntu, ce serait:

sudo apt-get install docker

Avec l'une ou l'autre méthode d'installation, vous devez maintenant avoir accès à Docker à partir de la ligne de commande. Pour vérifier que cela fonctionne, vous pouvez exécuter:

docker run hello-world

Docker doit extraire cette image du didacticiel du Docker Hub, un référentiel en ligne de nombreuses images de conteneurs utiles. Vous pouvez utiliser plusieurs de ces images comme base pour installer vos applications dans.

Créons un simple serveur Web basé sur nginx. Nginx fournit une version du Docker Hub que nous pouvons utiliser comme point de départ. Créez un nouveau répertoire pour stocker les fichiers et ouvrez-le:

mkdir ~/dockertest && cd ~/dockertest

Toute modification apportée à l'image de base nginx sera effectuée avec un Dockerfile. Les Dockerfiles sont comme des makefiles pour les conteneurs, ils définissent les commandes à exécuter lorsque Docker crée la nouvelle image avec vos modifications. Le Dockerfile est simplement appelé Dockerfile, sans extension. Créez ce fichier avec touch Dockerfileet ouvrez-le dans un éditeur de texte. Collez ceci dans:

FROM nginx
COPY html /usr/share/nginx/html

La première ligne est une commande Docker qui indique à Docker de baser cette image sur l'image nginx du Hub. La deuxième ligne est une autre commande qui copie sur un répertoire de ce dossier local (~/dockertest/html) dans l'image Docker, dans ce cas en remplaçant le dossier HTML pour nginx.

Vous pouvez exécuter de nombreuses commandes dans Dockerfiles. Par exemple, si votre application doit installer des dépendances, vous pouvez faire quelque chose comme RUN cd src/ && npm install. Tout ce dont votre application a besoin pour démarrer son installation et être opérationnelle est défini dans le Dockerfile.

Nous n'avons pas fait ./html répertoire encore, alors allez-y et exécutez:

mkdir html && touch html/index.html

Pour créer le répertoire et l'entrée HTML. Ouvert index.html et collez du HTML factice:

Hello From nginx, inside Docker! Inside, your computer?

Maintenant, nous sommes prêts à cuisiner notre image. Assurez-vous d'être à la racine du projet (dans ~/dockertest, pas dans le html dossier) et exécutez:

docker build -t dockertest .

La période à la fin signifie que nous utiliserons le répertoire actuel comme point de départ. Docker devrait trouver le Dockerfile et se mettre au travail. Cela ne devrait cependant prendre que quelques secondes, et quand c'est fait, vous pouvez l'exécuter avec:

docker run --name DockerTest -p 8080:80 -d dockertest

Cela lancera un nouveau conteneur appelé DockerTest, en utilisant l'image «dockertest» que nous avons créée. le -p flag lie un port local à un port à l'intérieur du conteneur, dans ce cas, liant le port HTTP par défaut de nginx (port 80) au port 8080 sur votre machine locale. S'ouvrir localhost:8080 dans votre navigateur Web, et vous devriez voir nginx fonctionner.

Si vous souhaitez une configuration supplémentaire, vous pouvez modifier les fichiers de configuration de nginx en incluant COPY nginx.conf /etc/nginx/nginx.conf et écrire votre propre fichier de configuration. Ceci est plus difficile à configurer que la modification directe du fichier de configuration, car vous devrez reconstruire l'image à chaque modification. Mais pour l'avantage supplémentaire de pouvoir prendre le même conteneur que vous utilisez dans le développement et le déployer en production, c'est un compromis assez équitable.

Si vous souhaitez un didacticiel plus approfondi sur la mise en réseau, le déploiement et la conteneurisation des applications existantes, nous vous recommandons de lire ce guide.

★★★★★