Introduction à Docker. Développer une image Docker simple pour votre propre serveur.
La version russe de la tâche se trouve dans le référentiel.

Planète Terre, quelque part au milieu de la mer, aujourd'hui.
Vous n'avez jamais aimé bouger. Beaucoup d'agitation, peu d'action. Mais vous avez réussi à trouver un excellent emploi dans une autre ville pour vous immerger dans le monde DevOps. Et vous n'êtes pas du genre à laisser un peu de mal à ruiner vos plans.
De votre fenêtre de cabine, vous entendez le son des vagues, le navire qui les balance paisiblement, et vous vous souvenez de votre roman préféré sur la mer - "Moby Dick". Bien que l'intrigue soit loin d'être simple, avec de nombreuses digressions lyriques et des réflexions philosophiques, vous, comme tout le monde, associez ce livre principalement à Moby Dick lui-même - la baleine blanche.
"Hmm ... White Whale ..." C'est là que vous vous souvenez que pendant le long voyage, vous vouliez travailler sur le quai.
Nginx (prononcé "Engine-X") est un serveur proxy inversé open source pour HTTP, HTTPS, etc. Nginx est également utilisé comme équilibreur de charge, serveur Web et pour la mise en cache HTTP. Le projet Nginx se concentre sur un parallélisme élevé, des performances élevées et une faible utilisation de la mémoire.
Nginx a un processus principal et plusieurs processus de travail. La tâche principale du processus principal est de lire et de vérifier la configuration et de gérer les processus de travail. Les processus de travail effectuent le traitement réel des demandes.
Le fonctionnement de Nginx et de ses modules est défini dans le fichier de configuration. Par défaut, le fichier de configuration s'appelle nginx.conf
Un conteneur est un nouveau "fichier exécutable" qui inclut toutes les dépendances dont le produit a besoin.
Le principal avantage de la conteneurisation est l'isolement des dépendances et un seul point de démarrage logiciel simple.
Termes de base:
Docker est une plate-forme conçue pour développer, déployer et exécuter des applications dans des conteneurs. Docker est l'outil de contenerisation standard «de facto» dans l'industrie, mais ce n'est pas le premier ou le dernier parmi les technologies de contenerisation.
Les précurseurs des conteneurs Docker étaient des machines virtuelles. Une machine virtuelle, comme un conteneur, isole l'application et ses dépendances de l'environnement extérieur. Cependant, les conteneurs Docker ont des avantages par rapport aux machines virtuelles. Par exemple, ils sont très faciles à porter, consommer moins de ressources, démarrer et s'exécuter plus rapidement.
Une image Docker se compose de couches. Chaque couche décrit certains changements à effectuer sur les données du conteneur en cours d'exécution. La structure des liens entre les couches est hiérarchique. Il y a une couche de base sur laquelle les autres couches sont "superposées". Le dockerfile est utilisé pour créer une image. Chaque instruction en elle crée un nouveau calque.
Dockle est un outil de vérification de la sécurité d'image de conteneur qui peut être utilisé pour trouver des vulnérabilités.
Caractéristiques clés et avantages de Dockle :
Docker Compose est un outil de gestion des tâches liées au déploiement des projets. Docker Compose peut être utile si plusieurs services sont utilisés pour maintenir le projet en cours d'exécution.
Docker Compose est utilisé pour gérer simultanément plusieurs conteneurs qui font partie d'une application. Cet outil offre les mêmes fonctionnalités que Docker, mais permet de travailler avec des applications distribuées plus complexes, par exemple les microservices.
À la suite du travail, vous devez fournir un rapport sur les deux premières tâches. Chaque partie de la tâche décrit ce qui devrait être ajouté au rapport une fois qu'il a été terminé. Cela peut être des réponses aux questions, captures d'écran, etc.
À la suite de la troisième tâche, vous devez fournir des fichiers source pour l'exécution du serveur Web.
À la suite des quatrième et cinquième tâches, vous devriez fournir des dockerfiles.
À la suite de la sixième tâche, vous devez fournir un fichier docker-compose.yml et les dockerfiles devaient l'exécuter (s'il n'est pas fourni plus tôt).
Comme objectif final de votre petite pratique, vous avez immédiatement choisi d'écrire une image Docker pour votre propre serveur Web, vous devez donc d'abord faire face à une image Docker prête pour le serveur. Vous avez choisi un nginx assez simple.
== Task ==
docker pull . docker images . docker run -d [image_id|repository] . docker ps . docker inspect [container_id|container_name] . docker stop [container_id|container_name] . docker ps . docker restart [container_id|container_name] . Remarque: Ne téléchargez pas de fichiers lourds (> 10 Mo) sur GIT.
L'image et le conteneur Docker sont prêts. Nous pouvons maintenant examiner la configuration Nginx et l'état de la page d'affichage.
== Task ==
docker cp . docker rmi [image_id|repository] sans supprimer d'abord le conteneur. Il est temps de prendre une petite pause avec le Docker pour se préparer à la dernière étape. Il est temps d'écrire votre propre serveur.
== Task ==
Hello World! . Maintenant, tout est prêt. Vous pouvez commencer à écrire l'image Docker pour le serveur créé.
== Task ==
Lors de l'écriture d'une image Docker, évitez plusieurs appels d'instructions d'exécution
Nginx peut être installé à l'intérieur du Docker lui-même, ou vous pouvez utiliser une image prête à l'emploi avec Nginx comme base.
docker build , spécifiant le nom et la balise. docker images que tout est construit correctement. * Si tout est fait correctement, après avoir enregistré le fichier et redémarré le conteneur, le fichier de configuration à l'intérieur de l'image Docker doit se mettre à jour sans aucune étape supplémentaire
Une fois que vous avez écrit l'image, ce n'est jamais une mauvaise idée de le vérifier pour la sécurité.
== Task ==
dockle [image_id|repository] . Là, vous avez terminé votre échauffement. Attendez une minute cependant ... Pourquoi ne pas essayer d'expérimenter le déploiement d'un projet composé de plusieurs images Docker à la fois?
== Task ==
docker-compose build et docker-compose up . Appuyez ici pour laisser vos commentaires sur le projet . L'équipe de produits essaie vraiment d'améliorer votre expérience éducative.