Agence web » Actualités du digital » Tout ce que tu as besoin de savoir

Tout ce que tu as besoin de savoir

Illustration montrant le logo Docker

Docker crée des applications packagé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.

Bases de Docker

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 impacter le reste de votre système. Vous pouvez lancer un nouveau service avec un seul docker run commander.

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 Dockerfile. Docker utilise le Dockerfile pour construire un 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 Docker fonctionne-t-il ?

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.

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. D’abord, il y a le Docker CLI, c’est ce avec quoi 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é le 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 commencez. Installation 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 car ils résolvent de nombreux défis courants dans le développement de logiciels. La possibilité de conteneuriser une fois et de s’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, ils n’ont qu’à docker run de mettre en place leur 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 les scénarios « ça fonctionne sur ma machine ».

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.

Commencer

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 faire fonctionner.

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

docker run hello-world

Cela démarrera un nouveau conteneur avec la base hello-world image. L’image émet une sortie expliquant comment utiliser Docker. Le conteneur sort ensuite, vous ramenant à votre terminal.

Création d’images

Une fois que tu as couru 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
COPY .htaccess /var/www/html/.htaccess
COPY index.html /var/www/html/index.html
COPY css/ /var/www/html/css

le FROM ligne définit l’image de base. Dans ce cas, nous partons de l’image officielle d’Apache. Docker applique les instructions restantes dans votre Dockerfile au-dessus de l’image de base.

le RUN stage 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 headers module Apache, qui pourrait être utilisé par le .htaccess fichier pour configurer les règles de routage.

Les dernières lignes copient les fichiers HTML et CSS de 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 construire l’image :

docker build -t my-website:v1 .

Docker utilisera votre Dockerfile pour construire l’image. Vous verrez une 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 latest comme version de balise.

le . à 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 COPY instructions dans votre Dockerfile.

Une fois que vous avez créé votre image, vous pouvez démarrer un conteneur en utilisant docker run:

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

Nous utilisons quelques indicateurs supplémentaires avec docker run ici. le -d flag fait que Docker CLI se détache 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.

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 précédentes.

Registres d’images

Une fois que vous avez une image, vous pouvez la transférer dans 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 le docker pull commander:

docker pull httpd:latest

Si vous souhaitez publier une image, créez un compte Docker Hub. Cours 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.

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 de gérer vos conteneurs en cours d’exécution. Voici quelques-uns des plus utiles à connaître :

Répertorier les conteneurs

docker ps vous montre tous vos conteneurs en cours d’exécution. Ajout du -a flag 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. Remplacer my-container avec le nom ou l’ID du conteneur. Vous pouvez obtenir ces informations auprès du ps commander. 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. Passe --restart always à docker run pour faire redémarrer un conteneur immédiatement après son arrêt.

Obtenir une coquille

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

Ajouter le -it flag 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.

Journaux de surveillance

Docker collecte automatiquement la sortie émise vers les flux d’entrée et de sortie standard d’un conteneur. le docker logs my-container La commande affichera les journaux d’un conteneur dans votre terminal. le --follow flag configure un flux continu afin que vous puissiez afficher les journaux en temps réel.

Nettoyer les ressources

Les anciens conteneurs et images peuvent rapidement s’accumuler sur votre système. Utiliser 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 vrac sont possibles en utilisant le docker prune commander. 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 pouvez 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.

Illustration de Portainer sur un ordinateur portable

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 n’importe quelle forme de système de stockage de fichiers dans un conteneur démarré avec un docker run commander.

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 fonctionne normalement comme 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ûre à 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 des images de conteneur individuelles pour détecter les problèmes qui pourraient être exploités de l’intérieur.

Travailler avec plusieurs conteneurs

le docker La commande ne fonctionne qu’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éficiez d’une gestion rationalisée avec mise en réseau automatique.

Voici un simple docker-compose.yml déposer:

version: "3"
services:
  app:
    image: app-server:latest
    ports:
      - 8000:80
  database:
    image: database-server:latest
    volumes:
        - database-data:/data
volumes:
    database-data:

Cela définit deux conteneurs (app et database). Un volume est créé pour la base de données. Celui-ci est monté sur /data dans le conteneur. Le port 80 du serveur d’applications est exposé en tant que 8000 sur l’hôte. Cours docker-compose up -d pour faire tourner 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 pourriez commettre un docker-compose.yml dans votre contrôle de version au lieu de laisser les développeurs mémoriser docker run commandes.

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 au sein de 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é.

Illustration montrant les logos Docker et Kubernetes

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 plusieurs machines, ce qui rend votre déploiement plus résilient aux changements et aux pannes. Le régulier docker CLI 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 un isolement et une portabilité accrus pour les services individuels.

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.

★★★★★