Docker pour les débutants : tout ce que vous devez savoir

0
160

Docker crée des applications empaquetées appelées conteneurs. Chaque conteneur fournit un environnement isolé similaire à une machine virtuelle (VM). Contrairement aux machines virtuelles, les conteneurs Docker n'exécutent pas un système d'exploitation complet. Ils partagent le noyau de votre hôte et se virtualisent au niveau logiciel.

Docker Basics

Docker est devenu un outil standard pour les développeurs de logiciels et les administrateurs système. C'est un moyen pratique de lancer rapidement des applications sans affecter le reste de votre système. Vous pouvez lancer un nouveau service avec une seule commande docker run.

Les conteneurs encapsulent tout ce qui est nécessaire pour exécuter une application, des dépendances du package du système d'exploitation à votre propre code source. Vous définissez les étapes de création d'un conteneur sous forme d'instructions dans un fichier Docker. Docker utilise le Dockerfile pour construire une image.

Les images définissent les logiciels disponibles dans les conteneurs. Cela équivaut à peu près au démarrage d'une machine virtuelle avec un système d'exploitation ISO. Si vous créez une image, tout utilisateur de Docker pourra lancer votre application avec docker run.

Comment fonctionne Docker ?

Les conteneurs utilisent les fonctionnalités du noyau du système d'exploitation pour fournir des environnements partiellement virtualisés. Il est possible de créer des conteneurs à partir de zéro avec des commandes telles que chroot. Cela démarre un processus avec un répertoire racine spécifié au lieu de la racine du système. Mais l'utilisation directe des fonctionnalités du noyau est délicate, peu sûre et sujette aux erreurs.

Publicité

Docker est une solution complète pour la production, la distribution et l'utilisation de conteneurs. Les versions modernes de Docker sont composées de plusieurs composants indépendants. Tout d'abord, il y a la Docker CLI, avec laquelle vous interagissez dans votre terminal. La CLI envoie des commandes à un démon Docker. Cela peut s'exécuter localement ou sur un hôte distant. Le démon est responsable de la gestion des conteneurs et des images à partir desquelles ils sont créés.

Le dernier composant est appelé l'environnement d'exécution du conteneur. Le runtime invoque les fonctionnalités du noyau pour lancer réellement les conteneurs. Docker est compatible avec les runtimes conformes à la spécification OCI. Ce standard ouvert permet l'interopérabilité entre différents outils de conteneurisation.

Vous n'avez pas besoin de trop vous soucier du fonctionnement interne de Docker lorsque vous démarrez pour la première fois. L'installation de docker sur votre système vous donnera tout ce dont vous avez besoin pour créer et exécuter des conteneurs.

Pourquoi tant de gens utilisent Docker ?

Les conteneurs sont devenus si populaires parce qu'ils résolvent de nombreux problèmes courants dans le développement de logiciels. La possibilité de conteneuriser une fois et de l'exécuter partout réduit l'écart entre votre environnement de développement et vos serveurs de production.

L'utilisation de conteneurs vous donne l'assurance que chaque environnement est identique. Si vous avez un nouveau membre de l'équipe, il n'a qu'à exécuter docker pour configurer sa propre instance de développement. Lorsque vous lancez votre service, vous pouvez utiliser votre image Docker pour le déployer en production. L'environnement en direct correspondra exactement à votre instance locale, évitant “ça marche sur ma machine” scénarios.

Docker est plus pratique qu'une machine virtuelle à part entière. Les machines virtuelles sont des outils à usage général conçus pour prendre en charge toutes les charges de travail possibles. En revanche, les conteneurs sont légers, autonomes et mieux adaptés aux cas d'utilisation jetables. Comme Docker partage le noyau de l'hôte, les conteneurs ont un impact négligeable sur les performances du système. Le temps de lancement du conteneur est presque instantané, car vous ne démarrez que des processus, pas un système d'exploitation entier.

Mise en route

Docker est disponible sur toutes les distributions Linux populaires. Il fonctionne également sous Windows et macOS. Suivez les instructions de configuration de Docker pour votre plate-forme pour la mettre en place et l'exécuter.

Publicité

Vous pouvez vérifier que votre installation fonctionne en démarrant un simple conteneur :

docker run hello-world

Cela va démarrer un nouveau conteneur avec l'image de base hello-world. L'image émet une sortie expliquant comment utiliser Docker. Le conteneur sort alors, vous ramenant à votre terminal.

Créer des images

Une fois que vous avez exécuté hello-world, vous êtes prêt à créer vos propres images Docker. Un Dockerfile décrit comment exécuter votre service en installant le logiciel requis et en copiant les fichiers. Voici un exemple simple utilisant le serveur Web Apache :

FROM httpd:latest RUN echo “LoadModule headers_module modules/mod_headers.so” >> /usr/local/apache2/conf/httpd.conf COPIER .htaccess /var/www/html/.htaccess COPIER index.html /var/www/html/index.html COPIER css//var/www/html/css < p>La ligne FROM définit l'image de base. Dans ce cas, nous partons de l'image officielle d'Apache. Docker applique les instructions restantes dans votre fichier Docker au-dessus de l'image de base.

L'étape RUN exécute une commande dans le conteneur. Il peut s'agir de n'importe quelle commande disponible dans l'environnement du conteneur. Nous activons le module Apache d'en-têtes, qui pourrait être utilisé par le fichier .htaccess pour configurer les règles de routage.

Publicité

Les dernières lignes copient les fichiers HTML et CSS dans votre répertoire de travail dans l'image du conteneur. Votre image contient maintenant tout ce dont vous avez besoin pour faire fonctionner votre site Web.

Maintenant, vous pouvez créer l'image :

docker build -t mon-site:v1 .

Docker utilisera votre Dockerfile pour construire l'image. Vous verrez la sortie dans votre terminal pendant que Docker exécute chacune de vos instructions.

Le -t dans la commande balise votre image avec un nom donné (my-website:v1). Cela permet de s'y référer plus facilement à l'avenir. Les balises ont deux composants, séparés par deux points. La première partie définit le nom de l'image, tandis que la seconde indique généralement sa version. Si vous omettez les deux points, Docker utilisera par défaut la dernière version de la balise.

Le fichier . à la fin de la commande indique à Docker d'utiliser le Dockerfile dans votre répertoire de travail local. Cela définit également le contexte de construction, vous permettant d'utiliser des fichiers et des dossiers dans votre répertoire de travail avec des instructions COPY dans votre Dockerfile.

Une fois que vous avez créé votre image, vous pouvez démarrer un conteneur à l'aide de docker run :

docker run -d -p 8080:80 my-website:v1

Nous utilisons quelques drapeaux supplémentaires avec docker exécuté ici. L'indicateur -d permet à la CLI Docker de se détacher du conteneur, ce qui lui permet de s'exécuter en arrière-plan. Un mappage de port est défini avec -p, donc le port 8080 sur votre hôte correspond au port 80 dans le conteneur. Vous devriez voir votre page Web si vous visitez localhost:8080 dans votre navigateur.

Publicité

Les images Docker sont formées à partir de couches. Chaque instruction de votre Dockerfile crée un nouveau calque. Vous pouvez utiliser des fonctionnalités de construction avancées pour référencer plusieurs images de base, en supprimant les couches intermédiaires des images antérieures.

Registres d'images

Une fois que vous avez une image, vous pouvez poussez-le vers un registre. Les registres fournissent un stockage centralisé afin que vous puissiez partager des conteneurs avec d'autres. Le registre par défaut est Docker Hub.

Lorsque vous exécutez une commande qui référence une image, Docker vérifie d'abord si elle est disponible localement. Si ce n'est pas le cas, il essaiera de le retirer de Docker Hub. Vous pouvez extraire manuellement des images avec la commande docker pull :

docker pull httpd:latest

Si vous souhaitez publier une image, créez un compte Docker Hub. Exécutez docker login et entrez votre nom d'utilisateur et votre mot de passe.

Ensuite, étiquetez votre image à l'aide de votre nom d'utilisateur Docker Hub :

docker tag my-image:latest docker-hub-username/my-image:latest

Maintenant, vous pouvez pousser votre image :

docker push docker-hub-username/my-image:latest

Les autres utilisateurs pourront extraire votre image et démarrer des conteneurs avec elle.

Publicité

Vous pouvez exécuter votre propre registre si vous avez besoin d'un stockage d'images privé. Plusieurs services tiers proposent également des registres Docker comme alternatives à Docker Hub.

Gérer vos conteneurs

La CLI Docker dispose de plusieurs commandes pour vous permettre gérer vos conteneurs en cours d'exécution. Voici quelques-uns des plus utiles à connaître :

Lister les conteneurs

docker ps vous montre tous vos conteneurs en cours d'exécution. L'ajout de l'indicateur -a affichera également les conteneurs arrêtés.

Arrêt et démarrage des conteneurs

Pour arrêter un conteneur, exécutez docker stop my-container. Remplacez my-container par le nom ou l'ID du conteneur. Vous pouvez obtenir ces informations à partir de la commande ps. Un conteneur arrêté est redémarré avec docker start my-container.

Les conteneurs fonctionnent généralement aussi longtemps que leur processus principal reste actif. Les stratégies de redémarrage contrôlent ce qui se passe lorsqu'un conteneur s'arrête ou que votre hôte redémarre. Passez –restart always à docker run pour faire redémarrer un conteneur immédiatement après son arrêt.

Obtenir un shell

Vous pouvez exécuter une commande dans un conteneur à l'aide de docker exec my-container my-command. Ceci est utile lorsque vous souhaitez appeler manuellement un exécutable distinct du processus principal du conteneur.

Publicité

Ajoutez l'indicateur -it si vous avez besoin d'un accès interactif. Cela vous permet de tomber dans un shell en exécutant docker exec -it my-container sh.

Monitoring Logs

Docker collecte automatiquement la sortie émise vers un conteneur&# 8217;s flux d'entrée et de sortie standard. La commande docker logs my-container affichera les journaux d'un conteneur dans votre terminal. L'indicateur –follow configure un flux continu afin que vous puissiez afficher les journaux en temps réel.

< h3 id="cleaning-up-resources">Nettoyage des ressources

Les anciens conteneurs et images peuvent rapidement s'accumuler sur votre système. Utilisez docker rm my-container pour supprimer un conteneur par son ID ou son nom.

La commande pour les images est docker rmi my-image:latest. Transmettez l'ID de l'image ou le nom complet de la balise. Si vous spécifiez une balise, l'image ne sera pas supprimée tant qu'elle n'aura plus de balises attribuées. Sinon, la balise donnée sera supprimée mais les autres balises de l'image resteront utilisables.

Les nettoyages en masse sont possibles à l'aide de la commande docker prune. Cela vous permet de supprimer facilement tous les conteneurs arrêtés et les images redondantes.

Gestion graphique

Si le terminal n'est pas votre truc, vous peut utiliser des outils tiers pour configurer une interface graphique pour Docker. Les tableaux de bord Web vous permettent de surveiller et de gérer rapidement votre installation. Ils vous aident également à prendre le contrôle à distance de vos conteneurs.

Stockage de données persistant

Les conteneurs Docker sont éphémères par défaut . Les modifications apportées au système de fichiers d'un conteneur ne persisteront pas après l'arrêt du conteneur. Il n'est pas sûr d'exécuter une forme de système de stockage de fichiers dans un conteneur démarré avec une commande d'exécution de docker de base.

Publicité

Il existe différentes approches pour gérer les données persistantes. Le plus courant est d'utiliser un volume Docker. Les volumes sont des unités de stockage montées dans des systèmes de fichiers conteneurs. Toutes les données d'un volume resteront intactes après l'arrêt de son conteneur lié, vous permettant de connecter un autre conteneur à l'avenir.

Maintien de la sécurité

Les charges de travail dockerisées peuvent être plus sécurisées que leurs homologues bare metal, car Docker fournit une certaine séparation entre le système d'exploitation et vos services. Néanmoins, Docker est un problème de sécurité potentiel, car il s'exécute normalement en tant qu'utilisateur root et pourrait être exploité pour exécuter des logiciels malveillants.

Si vous n'exécutez Docker que comme outil de développement, l'installation par défaut est généralement sûr à utiliser. Les serveurs de production et les machines avec un socket démon exposé au réseau doivent être renforcés avant la mise en service.

Auditez votre installation Docker pour identifier les problèmes de sécurité potentiels. Il existe des outils automatisés disponibles qui peuvent vous aider à trouver des faiblesses et à suggérer des solutions. Vous pouvez également analyser les images de conteneurs individuels à la recherche de problèmes qui pourraient être exploités de l'intérieur.

Travailler avec plusieurs conteneurs

La commande docker ne fonctionne que avec un conteneur à la fois. Vous souhaiterez souvent utiliser des conteneurs dans leur ensemble. Docker Compose est un outil qui vous permet de définir vos conteneurs de manière déclarative dans un fichier YAML. Vous pouvez tous les démarrer avec une seule commande.

Ceci est utile lorsque votre projet dépend d'autres services, tels qu'un backend Web qui repose sur un serveur de base de données. Vous pouvez définir les deux conteneurs dans votre docker-compose.yml et bénéficier d'une gestion simplifiée avec une mise en réseau automatique.

Ici’s un simple fichier docker-compose.yml :

version : “3” services : app : image : app-server:latest ports : – 8000:80 database : image : database-server:latest volumes : – database-data:/data volumes : database-data : Advertisement

Cela définit deux conteneurs (application et base de données). Un volume est créé pour la base de données. Cela est monté sur /data dans le conteneur. Le port 80 du serveur d'applications est exposé en tant que 8000 sur l'hôte. Exécutez docker-compose up -d pour lancer les deux services, y compris le réseau et le volume.

L'utilisation de Docker Compose vous permet d'écrire des définitions de conteneurs réutilisables que vous pouvez partager avec d'autres. Vous pouvez valider un docker-compose.yml dans votre contrôle de version au lieu de demander aux développeurs de mémoriser les commandes d'exécution de docker.

Il existe également d'autres approches pour exécuter plusieurs conteneurs. Docker App est une solution émergente qui fournit un autre niveau d'abstraction. Ailleurs dans l'écosystème, Podman est une alternative à Docker qui vous permet de créer des “pods” de conteneurs dans votre terminal.

Orchestration de conteneurs

Docker n'est normalement pas exécuté tel quel en production. Il est désormais plus courant d'utiliser une plateforme d'orchestration telle que Kubernetes ou le mode Docker Swarm. Ces outils sont conçus pour gérer plusieurs réplicas de conteneurs, ce qui améliore l'évolutivité et la fiabilité.

Docker n'est qu'un élément du mouvement plus large de la conteneurisation. Les orchestrateurs utilisent les mêmes technologies d'exécution de conteneur pour fournir un environnement mieux adapté à la production. L'utilisation de plusieurs instances de conteneur permet des mises à jour continues ainsi qu'une distribution sur les machines, ce qui rend votre déploiement plus résilient aux changements et aux pannes. La CLI Docker standard cible un hôte et fonctionne avec des conteneurs individuels.

Une plate-forme puissante pour les conteneurs

Docker vous offre tout ce dont vous avez besoin pour travailler avec des conteneurs. Il est devenu un outil clé pour le développement de logiciels et l'administration du système. Les principaux avantages sont une isolation et une portabilité accrues pour les services individuels.

Publicité

Se familiariser avec Docker nécessite une compréhension des concepts de base des conteneurs et des images. Vous pouvez les appliquer pour créer vos images et environnements spécialisés qui conteneurisent vos charges de travail.

LIRE LA SUITE

  • › Comment contrôler votre maison intelligente à partir des paramètres rapides Android
  • › Comment convertir un document Word en présentation PowerPoint
  • › Qu'est-ce qu'Amazon Echo Auto et comment ça marche ?
  • › Comment vérifier la résolution de votre écran sous Windows 10
  • › Comment récupérer le widget météo de la barre des tâches de Windows 10