n
ans cette vidéo, je vais vous apprendre tous les principaux concepts de docker,
y compris l'acquisition de votre première expérience pratique.
onc, si vous devez utiliser docker au travail,
u si vous avez besoin d'apprendre Docker pour améliorer vos compétences en ingénierie et que vous devez
commencé rapidement et j'ai compris tous les concepts principaux et
écouvrez les bases de l'utilisation de Docker,
e cours intensif vous convient parfaitement. Nous allons d'abord commencer par
t que faire
'est pourquoi il a même été créé en gros,
uels problèmes cela résout en ingénierie et comment
ela aide au développement et au processus de déploiement de logiciels.
ous comprendrez donc exactement pourquoi
st un gros problème et c'est pourquoi il est devenu si populaire et largement utilisé dans les projets informatiques
t dans le cadre d'une solution de virtualisation, doer
tant une amélioration par rapport aux machines virtuelles ou la prochaine étape d'évolution,
e vais également expliquer la différence entre une machine virtuelle et une machine plus foncée,
t quels sont les avantages de
cteur dans cette comparaison.
près avoir compris pourquoi nous voulons utiliser do
n premier lieu, nous allons installer
aiseur et apprenez à réellement travailler avec. Nous allons apprendre les concepts de
mages de l'acteur, conteneurs, plus sombres
egistre, registres publics et privés,
t nous exécuterons des conteneurs localement en fonction de certaines des images disponibles sur Docker
egistre public appelé Docker Hub.
ous allons également apprendre le concept de création de vos propres images
t en savoir plus sur le plan d'image Docker appelé Docker File.
t bien sûr,
ous allons voir tout cela en action et apprendre toutes les commandes docker pour extraire des images,
xécuter des conteneurs, créer votre propre image Docker, etc.
ous allons également en apprendre davantage sur le versionnage d'images avec du texte d'image, et enfin,
près avoir appris à travailler avec Docker,
e vais également expliquer avec des animations graphiques comment
'inscrit dans la vue d'ensemble du processus de développement et de déploiement de logiciels.
onc, à la fin de cette vidéo,
ous aurez beaucoup plus confiance en vos connaissances et votre compréhension en
ures
t peut facilement s'appuyer sur ces connaissances de base
our devenir un utilisateur expérimenté de Docker si vous le souhaitez.
t sous la description de la vidéo,
e vais fournir quelques ressources pour en savoir encore plus sur Docker
t devenez plus avancé dans ce domaine. Mais avant de nous lancer,
l semble que vous êtes nombreux à regarder le
idéos de notre chaîne ne sont toujours pas abonnées,
onc si vous tirez parti de
utoriels gratuits que je publie régulièrement sur cette chaîne,
ssurez-vous de ne pas vous abonner à moi, à de futures vidéos ou tutoriels.
e serais également heureuse de communiquer avec vous sur mes autres comptes de réseaux sociaux,
ù je publie du contenu en coulisses, des mises à jour hebdomadaires, etc.
'espère donc pouvoir communiquer avec vous là-bas également.
h bien, je suis très heureuse de vous apprendre tout cela, alors allons-y.
ommençons par la question la plus importante. Qu'est-ce que faire ?
ourquoi a-t-il même été créé ? Et quel problème cela résout-il ?
n termes simples, Docker est un logiciel de virtualisation
ui facilite le développement et le déploiement d'applications,
eaucoup plus facile que ce qui était fait avant l'introduction de Docker.
t Docker le fait en empaquetant une application
ans ce que l'on appelle un conteneur qui a
out ce dont l'application a besoin pour fonctionner,
omme le code de l'application lui-même, ses bibliothèques et ses dépendances,
ais aussi le temps d'exécution et la configuration de l'environnement.
onc, l'application et son environnement d'exécution sont
ous deux regroupés dans un seul package docker,
ue vous pouvez facilement partager et distribuer.
aintenant, pourquoi est-ce un gros problème,
t comment les applications ont-elles été réellement développées
t déployé avant l'introduction de Docker.
oyons cela pour mieux comprendre les avantages de Docker.
lors, comment avons-nous développé des applications avant les conteneurs ?
abituellement, lorsque vous avez une équipe de développeurs qui travaille sur une application,
ls devraient installer tous les services.
ette application
épend de nos besoins, tels que les services de base de données,
t cetera directement sur leur système d'exploitation.
'est vrai.
ar exemple, si vous développez une application JavaScript et que vous avez besoin d'une publication
ase de données SQL,
eut-être avez-vous besoin
pour encaisser un moustique pour envoyer des messages. Comme si vous avez une application de micro-service.
ous avez maintenant besoin de tous ces services localement sur votre environnement de développement
fin que vous puissiez réellement développer et tester correctement l'application,
t chaque développeur de l'équipe devrait ensuite installer tous ces services,
es configurer et les exécuter dans leur environnement de développement local
t selon le système d'exploitation qu'ils utilisent,
e processus d'installation sera différent
arce que l'installation d'un post
ase de données QL sur
i
e système d'exploitation est différent de son installation sur une machine Windows, par exemple,
ne autre chose avec l'installation de services directement sur
n système d'exploitation suivant un guide d'installation
c'est qu'il y a généralement plusieurs étapes d'installation,
puis configuration du service.
onc, avec plusieurs commandes que vous devez exécuter pour installer,
onfigurer et configurer le service,
es chances que quelque chose ne tourne pas rond et qu'une erreur se produise sont en fait assez élevées.
t cette approche,
u ce processus de configuration d'un environnement de développement pour un développeur,
eut en fait être assez fastidieux, selon la complexité de votre application.
ar exemple, si votre application utilise 10 services,
lors vous devrez effectuer cette installation 10 fois pour chaque service.
t encore une fois,
ela différera au sein de l'équipe en fonction de
uel système d'exploitation utilise chaque développeur.
oyons maintenant comment les conteneurs résolvent certains de ces problèmes
vec des conteneurs.
ous n'avez en fait pas besoin d'en installer
es services directement sur votre système d'exploitation,
ar avec Docker, ce service est regroupé dans un environnement isolé.
ous avez donc
ffiche QL avec une version spécifique empaquetée avec toute sa configuration
l'intérieur d'un conteneur.
onc, en tant que développeur, vous n'avez pas à chercher des binaires
our télécharger et installer sur votre machine.
ais il suffit de lancer ce service
n tant que conteneur docker à l'aide d'une seule commande docker,
ui récupère le package de conteneurs depuis Internet
t le démarre sur votre ordinateur
t la commande docker sera la même
uel que soit le système d'exploitation que vous utilisez,
t ce sera également le même quel que soit le service que vous installez.
onc, si vous avez 10 services dont dépend votre application JavaScript,
ous n'auriez qu'à exécuter 10 commandes docker pour chaque conteneur, et ce sera tout.
onc, comme vous le voyez, les standards de Docker,
e processus d'exécution de n'importe quel service sur votre développement
nvironnement et facilite grandement l'ensemble du processus.
ous pouvez donc vous concentrer et travailler davantage sur le développement
'essayer d'installer et de configurer des services sur votre machine.
t cela facilite évidemment la mise en place de votre environnement de développement local
eaucoup plus rapide et plus facile que
'option sans conteneurs.
e plus, avec le Docker,
ous pouvez même avoir différentes versions de la même application
'exécutant sur votre environnement local sans aucun conflit,
e qui est très difficile à faire
i vous installez la même application avec
ifférentes versions directement sur votre système d'exploitation,
t nous verrons tout cela en action dans la partie démo de cette vidéo.
oyons maintenant comment les conteneurs peuvent améliorer le processus de déploiement des applications
vant les conteneurs. Un processus de déploiement traditionnel ressemblerait à ceci
'équipe de développement produirait un artefact d'application ou un package
vec un ensemble d'instructions sur la façon de
nstallez et configurez ce package d'application sur le serveur.
ous auriez donc quelque chose comme un fichier jar pour le travail
pplication ou quelque chose de similaire selon le langage de programmation utilisé.
t en plus, bien sûr,
ous auriez une sorte de service de base de données
u d'autres services dont votre application avait besoin,
galement avec un ensemble d'instructions sur la façon de configurer
t configurez-le sur le serveur afin que l'application puisse s'y connecter et l'utiliser.
'équipe de développement donnerait donc cette application
rtefact ou colis remis à l'équipe des opérations,
t l'équipe des opérations
érerait l'installation
t configuration de l'application
t tous ses services client comme la base de données, par exemple.
aintenant, le problème avec ce type d'approche est que tout d'abord,
ous devez tout configurer et tout installer
ncore une fois directement sur le système d'exploitation, que j'ai mentionné
ans un contexte de développement qui est en fait très sujet aux erreurs,
t vous pouvez rencontrer différents problèmes au cours du processus d'installation.
ous pouvez également avoir des conflits avec les versions de dépendance où
eux services dépendent de la même bibliothèque,
ar exemple, mais avec des versions différentes.
t quand cela se produit,
ela va rendre le processus de configuration bien plus difficile et complexe.
onc, en gros, beaucoup de choses peuvent mal tourner lors des opérations
'équipe installe et configure des applications et des services sur un serveur.
n autre problème qui pourrait découler de ce type de processus est
n cas de problème de communication entre
'équipe de développement et l'équipe des opérations.
arce que puisque tout est dans un guide textuel,
omme une liste d'instructions expliquant comment configurer et exécuter l'application,
u peut-être une sorte de liste de contrôle,
l peut y avoir des cas où les développeurs oublient
our mentionner une étape importante concernant la configuration.
t quand cette partie échoue,
'équipe des opérations doit retourner voir les développeurs et leur demander plus de détails et de commentaires.
t cela pourrait mener à des communications dans les deux sens
usqu'à ce que l'application soit correctement déployée sur le serveur.
onc, en gros, vous avez cette surcharge de communication supplémentaire où
es développeurs doivent communiquer sous forme de texte
raphique quel que soit le format,
omment l'application doit s'exécuter,
t comme je l'ai mentionné, cela pourrait entraîner des problèmes et des problèmes de communication
vec des conteneurs. Ce processus est en fait simplifié car
es développeurs créent maintenant un package d'application
ui n'inclut pas seulement le code lui-même,
ais aussi toutes les dépendances et la configuration de l'application.
onc, au lieu d'avoir à écrire cela dans un format texte et un document,
ls empaquetent simplement tout cela dans l'artefact de l'application.
t comme il est déjà encapsulé dans un seul environnement,
es opérations que les gens n'ont pas à configurer
e tout cela directement sur le serveur.
ela facilite donc l'ensemble du processus.
t il y a moins de place pour les problèmes que j'ai mentionnés précédemment.
onc, la seule chose que l'équipe des opérations doit faire maintenant dans ce cas
onsiste à exécuter une commande docker qui obtient le package de conteneur créé par les développeurs
t l'exécute sur le serveur.
e la même manière que l'équipe des opérations gérera un service
ont l'application a également besoin en tant que conteneurs Docker,
t cela facilite considérablement le processus de déploiement du côté opérationnel.
aintenant, bien sûr,
'équipe des opérations devra installer et configurer le docker run
ois sur le serveur avant qu'ils ne puissent exécuter des conteneurs.
ais ce n'est qu'un effort ponctuel pour un service ou une technologie.
t une fois que Docker Run Time est installé,
ous pouvez simplement exécuter des conteneurs Docker sur ce serveur
aintenant. Au début, j'ai mentionné que Docker est un outil de virtualisation
omme une machine virtuelle, et les machines virtuelles existent depuis longtemps.
lors pourquoi le dark a-t-il été si largement adopté ?
uels sont ses avantages par rapport aux machines virtuelles,
t quelle est la différence entre les deux ?
our cela, nous devons voir un peu comment procéder
onctionne sur le plan technique.
'ai aussi dit qu'avec Docker,
ous n'avez pas besoin d'installer les services directement sur le système d'exploitation.
ais
ans ce cas, comment Docker gère-t-il ses conteneurs sur un système d'exploitation ?
aintenant, pour comprendre tout cela,
oyons d'abord comment est composé un système d'exploitation.
es systèmes d'exploitation comportent deux couches principales.
ous avez le noyau du système d'exploitation
t les applications du système d'exploitation. Couche
t le noyau est la partie qui communique avec les composants matériels tels que le processeur,
tockage en mémoire, etc.
onc, lorsque vous avez une machine physique
vec toutes ces ressources et vous installez le système d'exploitation
ur cette machine physique,
e noyau du système d'exploitation sera en fait
oyez celui qui parle aux composants matériels
our allouer des ressources telles que le stockage de la mémoire du processeur, etc.
ux applications, puis en cours d'exécution sur ce système d'exploitation.
t ces applications font partie de la couche applications,
t ils s'exécutent au-dessus de la couche noyau.
e noyau est donc une sorte d'intermédiaire entre les applications que vous voyez
orsque vous interagissez avec votre ordinateur
t le matériel sous-jacent de votre ordinateur.
t maintenant, puisque Docker et Virtual Machine sont tous deux des outils de virtualisation,
a question est
uelle partie du système d'exploitation virtualisent-ils réellement ?
t c'est là que la principale différence
ntre Docker et les machines virtuelles, en fait, comme
fin que Docker virtualise la couche applications.
ela signifie que lorsque vous exécutez un conteneur Docker,
l contient en fait la couche applications
u système d'exploitation et de certaines autres applications
nstallé au-dessus de cette couche d'application.
ela peut être un temps d'exécution Java ou Python ou autre,
t il utilise le noyau de l'hôte car il n'a pas son propre noyau.
a machine virtuelle, en revanche,
ossède la couche applications et son propre noyau.
l virtualise donc l'ensemble du système d'exploitation,
ce qui signifie que lorsque vous téléchargez une image de machine virtuelle sur votre hôte.
l n'utilise pas le noyau de l'hôte. En fait, il démarre tout seul.
lors, que signifie réellement cette différence entre une machine plus foncée et une machine virtuelle ?
out d'abord, la taille des packages ou des images les plus sombres est beaucoup plus petite
ar ils n'ont qu'à implémenter une couche
u système d'exploitation
onc les images plus sombres font généralement quelques mégaoctets.
es grandes images de machines virtuelles, en revanche, peuvent atteindre quelques gigaoctets.
ela signifie que lorsque vous travaillez avec Docker, vous économisez beaucoup d'espace disque.
ous pouvez exécuter et démarrer des conteneurs Docker beaucoup plus rapidement que les machines virtuelles,
arce que la machine virtuelle doit créer un noyau à chaque démarrage,
lors que le conteneur Docker ne fait que réutiliser
e noyau hôte et il démarre simplement la couche d'application au-dessus de celui-ci.
insi, alors que la machine virtuelle a besoin de quelques minutes pour démarrer,
es conteneurs Docker démarrent généralement dans un
uelques millisecondes.
a troisième différence est la compatibilité,
fin que vous puissiez exécuter l'image virtuelle de n'importe quel système d'exploitation sur n'importe quel autre
ôte du système d'exploitation.
insi, sur une machine Windows, vous pouvez exécuter une machine virtuelle Linux, par exemple.
ais vous ne pouvez pas le faire avec Docker, du moins pas directement, alors quel est le problème ici ?
upposons que vous ayez un système d'exploitation Windows avec Windows Kernel
t sa couche d'application, et vous souhaitez exécuter un Linux
mage docker basée directement sur cet hôte Windows. Le problème ici est que Linux
asée sur 00:15:40.299 ne peut pas utiliser le noyau Windows. Il faudrait un noyau Linux pour fonctionner
ar vous pouvez exécuter une couche d'application Linux sur un Windows Kern.
'est donc un peu un problème avec Docker.
ependant,
orsque vous développez sous Windows ou Me
S,
ous souhaitez exécuter divers services car la plupart des conteneurs pour les services populaires
ont en fait basés sur Linux.
l est également intéressant de savoir que Docker a été initialement écrit et construit pour Linux
ais plus tard
en fait fait fait fait une mise à jour et développé ce qui est
ppelé Docker Desktop pour Windows et Mac,
e qui a rendu possible
our exécuter également des conteneurs basés sur Linux sur des ordinateurs Windows et Mac.
onc, la façon dont cela fonctionne est que Dark Desktop utilise une couche d'hyperviseur
vec un Linux léger
istribution en plus
our fournir le noyau Linux nécessaire
t de cette façon, faites fonctionner Linux
és sur 00:16:43.695 possibles sur les systèmes d'exploitation Windows et Mac.
t au fait,
i vous souhaitez en savoir plus sur la virtualisation et le fonctionnement des machines virtuelles.
t qu'est-ce qu'un hyperviseur, par exemple.
ous pouvez regarder mon autre vidéo, où j'explique tout cela en détail.
ela signifie donc pour le développement local.
n tant qu'ingénieur, vous installeriez Darker Desktop sur votre Windows ou Mac
rdinateur OS
our exécuter Linux
asées sur des images, qui, comme je l'ai mentionné, la plupart des bases de données de services populaires,
etc. sont principalement basés sur Linux.
ous en auriez donc besoin,
t cela nous amène au
nstallation de
fin de faire quelques démonstrations et d'apprendre Docker en pratique,
ous devez d'abord l'installer.
onc, pour installer Docker,
l suffit d'aller sur leur page officielle pour le guide d'installation
t suivez les étapes.
omme Docker est constamment mis à jour, l'installation change.
onc, au lieu de vous faire quelques commentaires
eut fonctionner maintenant mais sera mis à jour ultérieurement,
ous devez toujours vous référer à la dernière
ocumentation pour le guide d'installation pour n'importe quel outil.
onc, si nous recherchons Docker Desktop
nstallation
t cliquez sur l'un de ces liens, comme installer sur Windows, donc
e bureau Docker,
'outil dont j'ai parlé
résolu ce problème d'exécution d'images basées sur Linux sur un système d'exploitation différent,
ais il inclut en fait beaucoup d'autres choses lorsque vous l'installez.
lors, qu'installez-vous exactement avec Docker Desktop ?
t vous voyez exactement ce qui y est inclus.
onc, en gros, obtenez le service Docker lui-même. Cela s'appelle Docker
oteur Moteur.
'est la partie principale du docker qui rend cette virtualisation possible.
ais quand nous avons un service, nous devons communiquer avec lui, n'est-ce pas,
ous avons donc besoin d'un client
ui peut communiquer avec ce service.
ocker Desktop est donc livré avec un client d'interface de ligne de commande,
e qui signifie que nous pouvons exécuter des commandes plus sombres sur une ligne de commande
our démarrer des conteneurs, créer des conteneurs, démarrer, les arrêter, les supprimer, etc.
t faites toutes sortes de choses. Et il est également livré avec un client d'interface utilisateur graphique.
onc, si vous n'êtes pas à l'aise avec la ligne de commande,
ous pouvez réellement utiliser l'interface utilisateur graphique où vous pouvez faire toutes ces choses.
ais dans un U agréable et convivial,
ous obtenez donc toutes ces choses lorsque vous installez Docker Desktop,
n gros tout ce dont vous avez besoin pour démarrer avec Docker
t bien sûr, selon le système d'exploitation que vous utilisez,
ous allez choisir celui-ci : Mac Windows ou Linux.
liquons donc sur l'une d'entre elles, et il vous suffit de suivre les instructions.
ous avez certaines exigences système. Tu dois vérifier
es éléments comme la version de votre Mac OS,
e combien de ressources vous allez avoir besoin.
t vous avez également les options pour Mac avec Intel ou Mac
vec Apple Silicon pour que vous puissiez basculer entre celles-ci et, en gros,
hoisissez simplement le guide qui correspond aux spécifications de votre ordinateur.
t une fois que vous avez cela, vérifiez la configuration système requise,
llez-y et cliquez sur l'un d'entre eux.
ans mon cas, j'ai un Mac avec Intel
hip, donc je cliquerais sur celui-ci,
t c'est en fait le programme d'installation de Docker Desktop.
onc si je clique, ça va télécharger ce DMG
mage. Et une fois qu'il est téléchargé, il vous suffit de suivre
es étapes décrites ici,
'est-ce pas ? Vous double-cliquez dessus, ouvrez l'application
t ainsi de suite.
t pareil pour Windows. Dans votre fenêtre, vous cliquez essentiellement sur celui-ci
t téléchargez Docker Desktop pour Windows
t assurez-vous de vérifier la configuration système requise
t préparez en quelque sorte tout
ont vous avez besoin pour démarrer Docker.
énéralement pour les dernières versions de Windows, Mac ou de tout autre système d'exploitation.
'installation de Docker devrait être assez simple et directe.
lors allez-y et faites-le.
ne fois l'installation terminée,
ous pouvez simplement démarrer le service en recherchant Docker.
t si je clique dessus,
ous verrez ici
ue c'est en fait
émarrage. Service Docker pour le moteur Docker.
t voilà,
'est en cours d'exécution,
t cette vue que vous voyez dans cette fenêtre est
n fait l'interface utilisateur graphique de Docker que j'ai mentionnée.
'est donc le client que vous pouvez utiliser pour interagir avec le moteur Docker.
ous avez donc une liste de conteneurs en cours d'exécution, donc il n'y a pas de liste,
dem avec les images. Si je passe aux images, j'ai nettoyé mon environnement.
e pars donc de zéro avec un état vide, comme vous.
ous sommes donc prêts à commencer à utiliser Darker.
ais d'abord vous vous demandez peut-être ce que sont les images,
t c'est ce que je vais expliquer ensuite,
arce que c'est un concept très important dans le noir
ignifie maintenant que Docker permet d'empaqueter l'application avec son environnement
onfiguration dans ce package que vous pouvez partager et distribuer facilement.
onc, tout comme un fichier artefact d'application,
omme lorsque nous créons un fichier zip ou tar ou un fichier jar,
ue vous pouvez télécharger sur un stockage d'artefacts, puis
éléchargez sur le serveur ou localement chaque fois que vous en avez besoin.
t ce package ou artefact que nous produisons avec Docker s'appelle une image docker.
'est donc essentiellement un artefact d'application
ais différent du fichier Jar
u à partir d'autres artefacts de l'application.
l contient non seulement le code d'application compilé,
ais contient également des informations sur
a configuration de l'environnement.
l contient la couche d'application du système d'exploitation, comme je l'ai mentionné,
insi que des outils tels que node N, PM ou Java Run Time
nstallé dessus,
elon le langage de programmation dans lequel votre application a été écrite.
ar exemple, si vous avez une application JavaScript,
ous auriez besoin de node Js et de N PM pour exécuter correctement votre application,
onc, dans l'image plus sombre, vous auriez déjà installé node et N PM.
ous pouvez également ajouter des variables d'environnement dont votre application a besoin. Par exemple,
ous pouvez créer des répertoires.
ous pouvez créer des fichiers ou tout autre environnement
onfigurez tout ce dont vous avez besoin autour de votre application.
outes ces informations sont donc regroupées dans l'image docker,
vec le code de l'application,
t c'est le grand avantage de Docker dont nous avons parlé.
t comme je l'ai dit, le package s'appelle une image.
onc, s'il s'agit d'une image, qu'est-ce qu'un conteneur, alors ?
h bien, nous devons démarrer ce package d'application quelque part, n'est-ce pas ?
onc, lorsque nous prenons ce package ou cette image et que nous téléchargeons
ur un serveur ou votre ordinateur portable local,
ous voulons l'exécuter sur l'ordinateur.
'application doit réellement s'exécuter.
t lorsque nous exécutons cette image sur un système d'exploitation
t l'application qu'elle contient démarre dans le pré
nvironnement configuré qui nous donne un conteneur.
insi, une instance en cours d'exécution d'une image est un conteneur.
onc, un conteneur est essentiellement une instance en cours d'exécution d'une image et
partir de la même image à partir d'une seule image, vous pouvez exécuter plusieurs conteneurs,
ui est un cas d'utilisation légitime si vous devez exécuter
lusieurs instances de la même application pour des performances accrues,
ar exemple, et c'est exactement ce que nous étions en train de voir ici.
ous avons donc les images. Ce sont les packages d'application, en gros,
uis à partir de ces images, nous pouvons commencer
onteneurs que nous verrons listés ici,
ui exécutent des instances de ces images.
t j'ai aussi dit que
n plus de l'interface utilisateur graphique,
ous obtenons une interface de ligne de commande client do client qui peut parler à do
6.204.
t
epuis que nous avons installé Docker Desktop,
ous devrions avoir cette CLI docker également disponible localement,
e qui signifie que si vous ouvrez votre terminal, vous devriez pouvoir exécuter des commandes docker
t documents. Nous pouvons tout faire.
ar exemple, nous pouvons vérifier les images dont nous disposons localement.
onc, si je crée des images docker, cela me donnera une liste des images que j'ai localement,
Dans ce cas, je n'en ai aucune, comme nous l'avons vu dans l'interface utilisateur graphique.
t je peux également vérifier les conteneurs à l'aide d'un docker de commande,
PS
t encore,
e n'ai pas encore de conteneurs en cours d'exécution.
aintenant, avant de passer à autre chose, je voudrais adresser un appel à Net
Hopper. Plus récents
lateforme cloud, appelée
ans les gouverneurs
pérations d'application, offre aux équipes DevOps un moyen simple de fournir, de gérer,
ettez à niveau, connectez, sécurisez et surveillez les applications dans un ou plusieurs kits
rappes.
vec cette plate-forme, ils créent essentiellement cette couche réseau virtuelle
ui connecte plusieurs environnements.
ar exemple, si vous avez plusieurs plates-formes cloud et plusieurs
lusters, même votre propre centre de données sur site,
ù votre application est déployée,
ous pouvez connecter tous ces éléments sur un seul réseau virtuel afin de pouvoir les déployer et les exploiter
es charges de travail de votre communauté comme si elle était
n cluster ou un environnement d'infrastructure et le résultat
'approche centrée sur le haut qu'ils utilisent offre la visibilité nécessaire pour savoir qui
fait quoi et quand pour votre infrastructure et votre application.
insi, avec Net Hopper, les entreprises peuvent automatiser leurs opérations.
t au lieu de créer sa propre plateforme,
es équipes DevOps peuvent se concentrer sur ce qui compte le plus,
ui publie plus de fonctionnalités d'application plus rapidement.
lors jetez-y un coup d'œil. Vous pouvez en fait créer un compte gratuit et l'essayer
our voir si Net Hopper est la bonne solution pour vous.
aintenant, il est clair que nous obtenons des conteneurs en exécutant des images,
ais comment obtenir des images à partir desquelles exécuter des conteneurs ?
isons que nous voulons courir
n conteneur de base de données ou
u un conteneur de service Lock Collector. Comment obtenir leurs images plus sombres ?
h bien, c'est là que les registres Docker entrent en jeu.
l existe donc des images Docker prêtes à l'emploi disponibles en ligne dans un stockage d'images ou un registre.
onc, en gros, il s'agit d'un stockage spécifique pour les artefacts de type image plus foncée,
t généralement les entreprises qui développent ces services
omme prête
t cetera, ainsi que Docker.
a communauté elle-même créera ce que l'on appelle des images officielles. Donc tu connais ce mongo ?
'image a en fait été créée par
ui-même ou la communauté Docker.
onc, vous savez, c'est une image officielle vérifiée de Docker lui-même.
t Docker lui-même propose le plus grand registre Docker
ppelé Docker Hub,
ù vous pouvez trouver l'une de ces images officielles et bien d'autres
mages de différentes entreprises ou individus
es développeurs y ont créé et téléchargé.
onc, si nous recherchons Dark Hub
ci, vous voyez la bibliothèque d'images Doctor Hub Container.
t
oilà à quoi ça ressemble.
t vous n'avez pas vraiment besoin de vous inscrire ou de signer
endez-vous sur Dock Hub pour trouver ces images officielles.
insi, tout le monde peut accéder à ce site Web et parcourir les images des conteneurs.
t ici, dans la barre de recherche,
ous pouvez taper le service que vous recherchez. Par exemple, prêt
ue j'ai mentionné.
t si j'appuie sur Entrée,
ous verrez essentiellement un
iste de diverses images connexes prêtes à l'emploi ainsi que le service prêt lui-même
ous forme d'image plus sombre.
t voici ce lot ou cette étiquette qui indique une image officielle plus foncée, par exemple,
our l'image la plus rouge que nous allons choisir ici,
ous voyez qu'il est en fait maintenu par la communauté Docker.
a façon dont cela fonctionne est que Docker dispose d'une équipe dédiée responsable
our avoir revu et publié tout le contenu dans les images officielles plus sombres.
t cette équipe travaille en collaboration avec les créateurs de technologies,
u des mainteneurs, ainsi que des experts en sécurité
our créer et gérer ces images sombres officielles.
insi, on s'assure que non seulement
es créateurs de technologie participent à la création officielle de l'image,
ais aussi tous les aspects les plus sombres de la sécurité, des meilleures pratiques et de la production.
es meilleures pratiques sont également prises en compte dans la création d'images,
t c'est essentiellement la page de description avec tous les
nformations sur la façon d'utiliser cette image plus sombre,
e que cela inclut, et cetera
t encore une fois, comme je l'ai dit, Docker Hub est le plus grand registre d'images Docker,
fin que vous puissiez trouver des images pour n'importe quel service que vous
ue vous souhaitez utiliser sur Docker Hub.
aintenant, bien sûr,
a technologie évolue et les applications de ces technologies sont mises à jour.
ous avez donc une nouvelle version du rouge
u mangue en B,
t dans ce cas un nouveau
ne image du doer sera créée,
onc les images sont également des versions,
t celles-ci sont appelées balises d'image.
t sur la page de chaque image, vous
voir la liste des versions ou des balises de cette image
épertorié ici.
'est donc pour
t si je cherche um Post,
ar exemple,
ous verrez différentes balises d'image pour
'image res est également répertoriée ici.
insi, lorsque vous utilisez une technologie et que vous avez besoin d'une version spécifique, vous pouvez choisir
ne image plus sombre contenant cette version de la technologie.
t il existe une balise spéciale que toutes les images ont
été appelé au dernier. Donc, ici, vous voyez ce dernier tag
u ici également dans le texte récent.
a dernière balise est donc essentiellement la dernière, la dernière image créée.
onc, si vous ne spécifiez ou ne choisissez pas de version explicitement,
ous obtenez essentiellement la dernière image depuis le hub Docker.
aintenant, nous avons vu ce que sont les images
t où vous pouvez les obtenir.
lors maintenant, la question est,
omment obtenir l'image depuis Docker Hub et la télécharger
ocalement sur notre ordinateur afin que nous puissions démarrer un conteneur à partir de cette image.
ous localisons donc d'abord l'image que nous voulons exécuter en tant que conteneur localement pour notre démo.
e vais utiliser un moteur
mage. Alors allez-y et recherchez Engine,
ui est essentiellement un simple serveur Web doté d'une interface utilisateur.
ous pourrons donc accéder à notre conteneur depuis
e navigateur à valider Le conteneur a démarré avec succès.
'est pourquoi je choisis le moteur,
t vous avez ici un tas de balises d'images
armi lesquels vous pouvez choisir.
a deuxième étape après avoir localisé l'image consiste donc à choisir une technologie d'image spécifique
t notez que la sélection
ne version spécifique de l'image est la meilleure pratique dans la plupart des cas.
t disons que nous choisissons la version 1.23.
ous allons donc choisir cette balise ici et télécharger une image.
ous retournons à notre terminal et nous exécutons docker
xtraire la commande, et nous spécifions le nom de l'image,
ui est
oteur X.
ous avez donc toute cette commande ici aussi,
'est donc essentiellement le nom de l'image que vous avez écrite ici.
'est donc NGX.
t puis
ous spécifions la balise d'image en la séparant par deux points
uis la version
,23. C'est ce que nous avons choisi.
'est la commande complète. Le client Docker contactera donc
ub et je dirai, je veux récupérer
e moteur
mage avec cette balise spécifique et téléchargez-la localement. Alors exécutons.
t ici, nous voyons qu'il extrait l'image de
e hub Docker du registre d'images.
t la raison pour laquelle nous n'avons pas à demander à Docker de
écouvrez que l'image sur Docker Hub est due au fait que Docker Hub est en fait la valeur par défaut
mplacement où Docker recherchera toutes les images que nous spécifierons ici.
l est donc automatiquement configuré comme emplacement pour
e téléchargement des images depuis et le téléchargement a eu lieu.
t maintenant, si nous exécutons à nouveau la commande docker images, comme nous l'avons fait ici,
ous devrions maintenant voir une image localement, qui est le moteur
vec une balise d'image
.23
t d'autres informations comme la taille de l'image,
ui est généralement en mégaoctets,
omme je l'ai mentionné.
ous avons donc une image maintenant localement,
t si nous extrayons une image sans balise spécifique,
ous faisons donc cela en gros, docker extrait un nom de l'image.
t si je l'exécute, vous voyez qu'il extrait automatiquement la dernière image.
t maintenant, si je le fais
mages encore une fois,
ous allons voir deux images du moteur
vec deux textes différents,
'est-ce pas ? Il s'agit donc en fait de deux images distinctes avec des versions différentes.
ool.
aintenant, nous avons des images localement,
ais évidemment, ils ne sont utiles que lorsque nous les exécutons dans un environnement de conteneurs.
omment pouvons-nous faire cela ? Super facile également.
ous sélectionnons l'image que nous avons déjà disponible localement
vec le tag. Alors disons que nous voulons courir
ette image en tant que conteneur
t nous exécutons la commande Darker Run
t
vec le nom de l'image
t le tag
uper facile
t exécutons.
t cette commande démarre en fait le conteneur en fonction de l'image.
t nous savons que le conteneur a démarré car nous voyons
ournaux du démarrage de l'entretien du moteur à l'intérieur du conteneur.
l s'agit donc en fait de journaux de conteneurs que nous voyons dans la console.
l lance donc quelques scripts,
t ici, nous avons les processus de démarrage et le conteneur est en cours d'exécution.
lors maintenant
i j'ouvre une nouvelle session de terminal
ime ça
faire
S,
e devrais en fait voir un conteneur,
elui-ci ici
ans la liste des conteneurs en cours,
t nous avons quelques informations sur le conteneur. Nous avons l'identifiant.
ous avons l'image sur laquelle le conteneur est basé,
compris la technologie lors de sa création
t également le nom du conteneur. Nous avons donc l'identifiant et le nom du conteneur.
'est le nom dont docker est en fait automatiquement
énère et attribue à un conteneur lors de sa création.
'est donc un nom généré aléatoirement.
aintenant, si je reviens ici, vous verrez que ces journaux, les journaux des conteneurs,
loquent en fait le terminal.
onc, si je veux récupérer le terminal et faire de la sortie Control C,
e conteneur se ferme et le processus meurt.
lors maintenant, si je le fais
S, vous verrez qu'aucun conteneur n'est en cours d'exécution.
ais nous pouvons démarrer un conteneur
n arrière-plan sans que cela ne bloque le terminal en ajoutant
n drapeau appelé moins D,
ui signifie détaché.
ela détache donc le processus docker du terminal.
t si j'exécute ceci,
ous voyez que cela ne bloque plus le terminal.
t au lieu d'afficher les journaux du démarrage du moteur X à l'intérieur du conteneur,
l se verrouille simplement
'identifiant complet du conteneur. Alors maintenant, si je le fais
S
ci dans le même terminal, je devrais voir ce conteneur
n cours d'exécution.
t c'est essentiellement l'identifiant ou la partie de cette chaîne d'identification complète
ontré ici.
ais lorsque nous démarrons un conteneur en arrière-plan en mode détaché,
ous voudrez peut-être toujours voir les journaux de l'application dans le conteneur,
ous voudrez peut-être voir comment le moteur a démarré ensuite ?
quoi ça ressemblait, en fait, alors
our cela, vous pouvez utiliser une autre commande docker appelée Docker logs
vec l'ID du conteneur
omme ça,
t il imprimera les journaux de l'application à partir du conteneur.
aintenant, pour créer le conteneur
onteneur, nous extrayons d'abord l'image, puis nous avons créé un conteneur à partir de cette image.
ais
ous pouvons en fait nous enregistrer la commande pull
t exécutez
xécutez la commande directement, même si l'image n'est pas disponible localement.
onc, pour l'instant, nous avons ces deux images disponibles localement,
ais dans la commande Docker run,
ous pouvez réellement fournir n'importe quelle image existant sur Docker Hub.
l ne doit pas nécessairement exister localement sur votre ordinateur,
ous n'avez donc pas à le tirer d'abord.
onc, si je reviens en arrière, nous pouvons en fait choisir une version d'image différente.
hoisissons 1,22 tiret Alpine,
onc
ette étiquette d'image,
ue nous n'avons pas localement
u Bien sûr, ce service peut être complètement différent. Ça n'a pas d'importance.
onc, en gros, toute image que nous n'avons pas localement
ous pouvez exécuter directement à l'aide de la commande docker run.
onc, il fait d'abord. Il va essayer de
ocalisez cette image
ocalement,
t s'il ne le trouve pas,
l ira au hub Docker par défaut
t extrayez automatiquement l'image à partir de là, ce qui est très pratique.
onc, il fait les deux en une seule commande, en gros. Il a donc téléchargé l'image avec cette balise
t a démarré le conteneur.
t maintenant, si nous faisons Docker PS,
ous devrions avoir deux conteneurs fonctionnant avec des
ersions.
t souvenez-vous, j'ai dit,
ocker résout le problème de l'exécution de différentes versions de la même application
la fois. Voilà à quel point il est simple de le faire avec Docker
fin que nous puissions réellement cliquer sur ce conteneur.
t
ncore une fois, nous avons
e conteneur moteur avec cette version.
aintenant, la question importante est de savoir comment accéder à ce conteneur ?
h bien, nous ne pouvons pas pour le moment
ar le conteneur s'exécute dans
e réseau Docker fermé, nous ne pouvons donc pas y accéder depuis le navigateur de notre ordinateur local,
ar exemple,
ous devons d'abord exposer le conteneur à notre
éseau local qui peut sembler un peu difficile,
ais c'est super facile.
onc, en gros, nous allons faire ce qu'on appelle une liaison de port.
e conteneur fonctionne sur un port, c'est vrai,
t chaque application possède un port standard sur lequel elle s'exécute,
omme moteur
pplication
'exécute toujours sur le port 80 Red
onctionne sur le port
379.
e sont donc des ports standard pour ces applications.
'est donc le port sur lequel le conteneur s'exécute.
t pour
ous voyons les ports sous la liste des ports ici, l'application s'exécute sur le port A
l'intérieur du conteneur. Alors maintenant, si j'essaie d'accéder
oteur
onteneur
ur ce port sur le port 80 depuis le navigateur
t essayons de le faire
Port 80
ppuyez sur Entrée.
ous voyez que rien n'est disponible sur ce port
ur un hôte local. Alors maintenant, nous pouvons le dire à Docker
é, tu sais quoi ? Liez ce port de conteneur 80
notre hôte local le
out port que je vous indique sur un port spécifique comme 80, 80 ou 9000,
eu importe que je puisse accéder au conteneur ou à tout ce qui est en cours d'exécution
ans le conteneur comme s'il s'exécutait sur mon port hôte local 9000.
t nous le faisons avec un indicateur supplémentaire lors de la création
n conteneur plus sombre.
onc
e que nous allons faire, c'est d'abord arrêter ce conteneur
t créez-en un nouveau. Donc, nous allons le faire, Docteur,
ont
rrête essentiellement ce conteneur en cours d'exécution,
t nous allons créer un nouveau conteneur.
ous allons donc faire
ourir
oteur X
a même version
t nous allons le trouver en arrière-plan en mode détachement.
aintenant, nous allons effectuer la liaison de port avec un effleurement supplémentaire moins P,
t c'est super facile.
ous le disons à Docker
uis
oteur
ort de l'application
l'intérieur d'un conteneur, qui est un
'il vous plaît, prenez ça et liez ça
ur un hôte ou un hôte local
ur n'importe quel port. 9000, par exemple. C'est vrai.
'est le port que je choisis.
onc ce drapeau ici
xposera en fait le conteneur à notre réseau local ou à notre hôte local.
onc ce moteur
e processus en cours d'exécution dans le conteneur nous sera accessible sur le port 9000.
onc maintenant, si j'exécute ceci,
oyons que le conteneur fonctionne,
t
ans la section port, nous voyons une valeur différente. Donc, au lieu d'en avoir seulement 80
ous avons ces informations de liaison de port.
onc, si vous avez oublié le port que vous avez choisi. Ou si vous avez 10 conteneurs différents avec
PS,
ous pouvez réellement voir sur quel port chaque conteneur est accessible sur votre hôte local.
e sera donc le port.
lors maintenant, si je reviens au navigateur
t au lieu de l'hôte local 80, nous allons taper l'hôte local 9000
t cliquez. Entrez.
oilà. Nous avons le moteur de bienvenue
age, cela signifie donc que nous accédons réellement à notre application.
t nous pouvons également le voir dans les journaux. Parlez beaucoup
D du conteneur.
t voilà. Voici le journal. Euh, ce moteur
'application a reçu une demande de Mac ou de moi
achine OS
avigateur Chrome.
ous voyons donc que notre demande a effectivement atteint le
oteur
pplication s'exécutant dans le conteneur.
l est donc facile d'exécuter un service dans un conteneur, puis d'y accéder localement.
aintenant, comme je l'ai dit, vous pouvez choisir le port que vous voulez,
ais c'est aussi à peu près une norme d'utiliser la même
ort sur votre machine hôte tel qu'utilisé par le conteneur.
onc, si j'exécutais un conteneur MySQL qui commençait à
ort 3306 Je le lierais à l'hôte local 3306.
'est donc une sorte de norme.
aintenant, il y a une chose que je tiens à souligner ici, à savoir que Docker exécute
rée en fait un nouveau conteneur à chaque fois.
l ne réutilise pas le conteneur que nous avons créé précédemment.
e qui signifie que puisque nous avons déjà exécuté la commande Docker run plusieurs fois,
ous devrions en fait avoir plusieurs conteneurs sur notre
rdinateur portable. Cependant, si je fais Docker P, SI ne voit que le conteneur en cours d'exécution
e ne vois pas ceux que j'ai créés mais que j'ai arrêtés.
ais ces conteneurs existent toujours.
onc, si je fais Docker PS
vec une tache
t exécutez
ela vous donne en fait une liste de tous
onteneurs, qu'ils soient en cours d'exécution ou arrêtés.
'est donc le conteneur actif
ui fonctionne toujours
t ce sont ceux qui ont été arrêtés.
l est même indiqué que j'ai quitté il y a 10 minutes, il y a six minutes. Peu importe.
ous avons donc quatre conteneurs avec une configuration différente
t précédemment je vous ai montré Docker stop
ommande qui arrête essentiellement un conteneur en cours d'exécution
fin que nous puissions arrêter celui-ci.
t maintenant, cela va l'afficher comme
n conteneur arrêté est également sorti il y a une seconde,
ais de la même manière.
ous pouvez également redémarrer un conteneur que vous avez créé auparavant
ans avoir à en créer un nouveau avec docker Run,
ommit.
onc, pour cela, nous avons un point de départ plus sombre
t
ui prend l'ID du conteneur
t redémarrez le conteneur encore et encore. Vous pouvez démarrer plusieurs
onteneurs à la fois si vous le souhaitez,
omme ça.
t
ous avez maintenant deux conteneurs en cours d'exécution.
aintenant, vous avez vu que nous utilisons l'ID du conteneur dans diverses commandes de stockage.
onc, pour arrêter le conteneur, le redémarrer, vérifier les journaux, etc.
ais l'identification est difficile à mémoriser et vous devrez la rechercher tout le temps.
onc
omme alternative,
ous pouvez également utiliser le nom du conteneur pour toutes ces commandes
u lieu de l'identifiant qui est généré automatiquement par Docker.
ais nous pouvons en fait réécrire cela et nous pouvons donner nos conteneurs
es noms plus significatifs lorsque nous les créons
fin que nous puissions arrêter ces deux conteneurs
n utilisant l'ID
u le nom
omme ça.
e sont donc deux conteneurs différents, l'un avec un identifiant,
n avec un nom et nous allons les arrêter tous les deux.
oilà.
aintenant, lorsque nous créons un nouveau conteneur, nous pouvons lui donner un nom spécifique
t il existe un autre drapeau pour cela
ui est le nom de Dash Dash. Et puis nous fournissons
e nom que nous voulons donner à notre conteneur. Et disons que c'est, euh, un
pplication Web. C'est ainsi que nous allons appeler notre conteneur
t exécutons.
i je le fais
PS
ous voyez que le nom n'est pas une chose aléatoire générée automatiquement,
ais à la place, notre conteneur s'appelle Web.
aintenant, nous pouvons faire
errous et
om de notre conteneur
omme ça.
ous avons maintenant découvert Do
ub, qui est en fait
e qu'on appelle un registre public d'images,
e qui signifie
es images que nous avons utilisées sont visibles et accessibles au public.
ais lorsqu'une entreprise crée ses propres images de ses propres applications,
ien sûr, ils ne veulent pas qu'il soit accessible au public.
onc, pour cela, il existe ce que l'on appelle des registres docker privés,
t ils sont nombreux.
resque tous les fournisseurs de cloud proposent un service de registre docker privé,
ar exemple, AWS EECR ou Elastic Container Registry Service, Google Azure.
ls ont tous leurs propres registres Docker.
exus, qui est un service de stockage d'artefacts populaire, possède un registre DO.
ême Docker Hub possède un registre de dock privé
onc, sur la page d'accueil de Dock Hub, vous avez vu ce formulaire de démarrage.
onc, en gros, si vous souhaitez stocker vos images docker privées sur Doer
Hub,
ous pouvez réellement créer un registre privé sur Docker Hub ou
réez même un registre public et téléchargez-y vos images.
'est pourquoi j'ai un compte,
arce que j'ai téléchargé quelques images sur Do
ub que mes étudiants peuvent télécharger pour différents cours.
t il y a un autre concept que je voudrais mentionner concernant le registre,
ui est ce qu'on appelle un référentiel,
ue vous entendez aussi souvent.
n dépôt do
egistre ? Alors, quelle est la différence entre eux ? Très simplement, a expliqué AWS.
CR est un registre, donc en gros, c'est un service qui fournit du stockage pour les images.
t dans ce registre,
ous pouvez avoir plusieurs référentiels pour toutes vos différentes images d'application.
insi, chaque application dispose de son propre référentiel,
t dans ce référentiel, vous pouvez stocker différentes versions d'images
u les balises de cette même application de la même manière.
u
ub est un registre. Il s'agit d'un service permettant de stocker des images et d'effectuer des tâches
50,
ous pouvez avoir vos référentiels publics pour stocker des images qui seront
ccessible au public ou vous pouvez avoir
éférentiels privés pour différentes applications.
t encore une fois, vous pouvez avoir un référentiel dédié à chaque application.
'est donc une note secondaire.
i vous entendez ces termes et concepts et que vous savez quelle est la différence entre eux
aintenant ?
'ai mentionné que les entreprises voudraient créer
eurs propres images personnalisées pour leurs applications.
lors, comment cela fonctionne-t-il réellement ?
omment puis-je créer ma propre image docker pour mon application ?
t le cas d'utilisation est que lorsque je suis
erminé avec le développement, l'application est prête.
l possède certaines fonctionnalités et nous voulons le mettre à la disposition des utilisateurs finaux.
ous voulons donc l'exécuter sur un déploiement
erveur et pour faciliter le processus de déploiement.
ous souhaitez déployer notre application en tant que conteneur Docker avec la base de données
t d'autres services qui s'exécuteront également en tant que conteneurs Docker ?
lors, comment pouvons-nous utiliser notre application déployée créée
oder et l'empaqueter dans une image docker ?
our cela, nous devons créer une définition de la façon de créer une image
epuis notre application,
t cette définition est écrite dans un fichier appelé fichier docker.
'est ainsi que cela devrait être appelé. La création d'un simple fichier docker est très simple.
t dans cette partie, nous allons prendre une application super simple sans JAS que j'ai préparée.
t nous allons écrire un fichier docker pour cela
pplication pour en créer une image plus sombre.
t comme je l'ai dit, c'est très facile à faire.
oici donc l'application.
'est extrêmement simple. J'en ai juste un
ichier point Js du serveur, qui démarre simplement l'application
ur Port 3000. Et puis
a dit juste, Bienvenue
orsque vous y accédez depuis le navigateur
t nous avons un fichier adjacent au package qui contient cette dépendance
our la bibliothèque express que nous utilisons ici pour démarrer l'application
uper léger et simple.
t c'est l'application à partir de laquelle nous allons créer un
mage docker et démarrez-la en tant que conteneur Docker.
lors allons-y.
onc, à la racine de l'application, nous allons créer un nouveau fichier appelé Docker File.
'est donc le nom. Et tu vois ça,
uh, la plupart des éditeurs de code détectent réellement
ichier docker et nous obtenons cette icône docker ici.
onc, dans ce fichier docker,
ous allons écrire une définition de la façon dont
'image doit être créée à partir de cette application.
lors, de quoi a besoin notre application ?
l nécessite l'installation d'un nœud car le nœud doit exécuter notre application.
'est-ce pas ?
onc, si je voulais démarrer cette application localement
epuis mon terminal, j'exécuterais le nœud SRC. Donc, le dossier source
t serveur point Js
ommande pour démarrer l'application.
ous avons donc besoin de cette commande de nœud disponible dans l'image.
t c'est là qu'intervient le concept d'image de base.
insi, chaque image docker est en fait basée sur cette image de base,
ui est principalement une image légère du système d'exploitation Linux qui a
e nœud, N, PM ou tout autre outil dont vous avez besoin pour votre application installée dessus.
onc, pour l'application JavaScript, vous auriez
mage de base du nœud.
i vous avez une application Java, nous utiliserons une image sur laquelle Java Runtime est installé
ncore une fois le système d'exploitation Linux avec Java installé dessus.
t c'est l'image de base. Et nous définissons l'image de base.
tilisation d'une directive dans un fichier docker appelé depuis.
ous disons de créer cette image à partir de l'image de base et si
e retourne au Docker Hub et je recherche un nœud,
ous verrez que nous avons une image dans laquelle node et N PM sont installés à l'intérieur
t les images de base sont comme les autres images.
onc, en gros, vous pouvez empiler et créer sur les images dans Docker.
lles sont donc comme toutes les autres images que nous avons vues.
t ils ont également des versions texte ou image.
ous allons donc choisir l'image du nœud et une version spécifique
t optons pour un pin à 19 tirets en L.
'est donc notre image de base et notre première directive dans le fichier docker.
ncore une fois, cela permettra de s'assurer que
orsque notre application node Js démarre dans un conteneur,
l y aura un nœud et N commandes PM disponibles à l'intérieur pour exécuter notre application.
aintenant, si nous démarrons notre application avec cette commande,
ous verrons que nous obtenons une erreur car
ous devons d'abord installer les dépendances d'une application.
ous avons juste une dépendance, qui est la bibliothèque de presse,
e qui signifie que nous devrions exécuter N PM install,
ui vérifiera le fichier json du package, lira toutes les dépendances,
éfinissez-les et installez-les
ocalement dans le dossier des modules du nœud.
onc, en gros, nous mappons les mêmes choses que nous ferions pour exécuter l'application.
ocalement, nous cartographions cela dans le conteneur,
ous devrions donc exécuter la commande N PM install également dans le conteneur.
onc,
omme je l'ai déjà mentionné,
a plupart des images sombres sont basées sur Linux.
lpine est une distribution Linux, une distribution de système d'exploitation Linux à ondes lumineuses.
onc
ans le fichier docker,
ous pouvez écrire toutes les commandes Linux que vous souhaitez exécuter dans le conteneur.
t chaque fois que nous voulons exécuter une commande dans le conteneur,
u'il s'agisse d'une commande Linux ou d'une commande de nœud, ou d'une commande PM quelconque,
ous l'exécutons à l'aide d'une directive run.
'est donc une autre directive, et vous voyez que les directives sont écrites en majuscules
t puis vient la commande.
onc, aucune installation de PM,
ui téléchargera les dépendances à l'intérieur du conteneur et
réer un dossier de modules de nœuds dans le conteneur
vant le démarrage de l'application.
ncore une fois, considérez un conteneur comme son propre environnement isolé. Il a un Linux simple
ystème d'exploitation
vec nœud et N PM installés,
t nous exécutons l'installation de N PM.
ependant, nous avons également besoin d'un code d'application dans le conteneur, n'est-ce pas ?
ous avons donc besoin du serveur Js
l'intérieur,
t nous avons besoin du package pour Jason parce que c'est ce que
ucune commande PM devra réellement lire les dépendances.
t c'est une autre directive d'où nous prenons les fichiers de
otre ordinateur local et nous les collons. Copiez-les dans le conteneur.
t c'est une directive appelée Copy
t vous pouvez copier des fichiers individuels comme le package point
son à partir d'ici
ans le conteneur, et nous pouvons dire où dans le conteneur à quel endroit
ans le système de fichiers dans lequel il doit être copié.
t disons
l doit être copié dans un dossier appelé slash
pplication
l'intérieur du conteneur. C'est donc sur notre machine,
'est-ce pas ? Nous avons empaqueté ci-contre. C'est à l'intérieur du conteneur.
'est complètement
ystème isolé de notre environnement local,
fin que nous puissions copier des fichiers individuels et également copier les répertoires complets.
ous avons donc également besoin de notre code d'application à l'intérieur, évidemment,
our exécuter l'application afin que nous puissions copier ceci
épertoire source complet, nous avons donc plusieurs fichiers à l'intérieur.
ous pouvons à nouveau copier le répertoire complet dans le conteneur
ans slash
pplication
ocalisation
t la barre oblique à la fin est également très importante.
e docker sait donc qu'il doit créer ce dossier s'il n'existe pas encore dans le conteneur,
onc
la racine du système de fichiers Linux, ajoutez un dossier à l'intérieur, puis une barre oblique.
aintenant, tous les fichiers d'application pertinents tels que package adjacent et
'ensemble du répertoire source est copié dans le conteneur à cet emplacement.
a prochaine chose que nous voulons faire avant de pouvoir exécuter
ne commande d'installation PM consiste à entrer dans ce répertoire.
'est-ce pas ?
onc, sous Linux,
ous avons le droit de transformer ce CD en répertoire
fin d'exécuter les commandes suivantes dans le répertoire
ans le fichier docker. Nous avons une directive pour ce qu'on appelle le travail
her.
onc, Répertoire de travail,
ce qui équivaut à passer à un répertoire
our exécuter toutes les commandes suivantes dans ce répertoire
fin que nous puissions
aites de l'application Slash ici.
l définit donc ce chemin comme emplacement par défaut
our tout ce qui va suivre. OK,
ous copions donc tout dans le conteneur.
nsuite, nous définissons le répertoire de travail
u le répertoire par défaut dans le conteneur.
t puis nous exécutons à nouveau N PM install dans le conteneur pour
éléchargez toutes les dépendances dont l'application a besoin et qui sont définies ici.
t enfin, nous devons exécuter l'application, non ?
insi, après l'installation de NP, la commande node devrait
tre exécutés et nous apprenons à exécuter des commandes.
ous utilisons la directive run.
ependant, s'il s'agit de la dernière commande du fichier docker,
onc quelque chose qui lance réellement le processus. C'est ainsi que l'application à l'intérieur,
ous avons une directive différente pour celle appelée C MD.
'est donc essentiellement la dernière commande du
ichier docker et cela démarre l'application.
t la syntaxe pour cela est
ommande
ui est le nœud
t le paramètre
erveur G point Js.
ous avons donc tout copié dans l'application Slash.
ous avons donc le serveur Js dans le répertoire APP
t nous le démarrons ou l'exécutons en utilisant node commit.
'est ça.
'est le fichier docker complet qui créera
ne image docker pour notre application node Js,
ue nous pouvons ensuite démarrer en tant que conteneur.
ous avons donc maintenant la définition dans le fichier docker. Il est temps de créer réellement l'image.
partir de cette définition.
e vais clarifier cela et sans passer au terminal,
ous pouvons réellement réutiliser celui-ci.
ous pouvons exécuter une commande docker pour créer une image plus sombre, ce qui est très simple.
ous faisons simplement Docker Build.
nsuite, nous avons quelques options que nous pouvons fournir.
e premier est le nom de l'image.
onc, tout comme toutes ces images ont des noms, comme node ready, etc.
t les tags
ous pouvons également
ommez notre image et attribuez-lui une balise spécifique.
t nous le faisons en utilisant cette option Dash T
t nous pouvons appeler notre nœud d'application
application
eut-être qu'avec Dash, peu importe
t
ous pouvons lui donner un tag spécifique
omme 1.0 par exemple.
t
e dernier paramètre est l'emplacement du fichier docker.
ous demandons donc à Docker de créer une image
vec ce nom et cette balise
e
a définition dans ce fichier docker spécifique, n'est-ce pas ?
l s'agit donc d'un emplacement du fichier docker dans ce cas,
ous sommes dans le répertoire où se trouve le fichier Docker,
onc ce sera le répertoire actuel.
onc, ce point fait essentiellement référence au dossier actuel
ù se trouve le fichier Docker.
onc maintenant, si nous exécutons ceci
omme vous le voyez, faiseur
st en train de construire
'image de notre fichier talker
t il semble qu'il ait réussi là où il a commencé à créer l'image.
ous voyez ces étapes, ces directives que nous avons définies ici.
ous avons donc exécuté la première directive from. Ensuite, nous avons la copie
omme deuxième étape. Ensuite, nous avons copié le dossier source, les paramètres, le répertoire de travail.
t en exécutant N PM install, puis le dernier vient de démarrer l'application.
lors maintenant
i je fais des images Docker
n plus de ceux-ci
mages que nous avons téléchargées
récédemment depuis Docker Hub,
ous devrions réellement voir l'image que nous venons de créer.
l s'agit de l'image de l'application node avec une balise
,0
t quelques autres informations.
'est donc notre image.
t maintenant nous pouvons démarrer cette image et travailler avec elle,
omme nous travaillons avec n'importe quelle autre image téléchargée depuis Docker Hub.
ous allons donc lancer un conteneur à partir de ce nœud
mage de l'application et assurez-vous que l'application qu'elle contient fonctionne réellement.
onc
ous allons faire Docker Run
310
pplication
mage avec 1.0 10
t nous allons passer un paramètre pour démarrer en mode détaché
850 et nous voulons également exposer le droit de port.
ous voulons
ouvoir accéder à l'application, à l'application nœud depuis l'hôte local
t
ous savons que l'application à l'intérieur du conteneur va démarrer
ur Port 3000 car c'est ce que nous avons défini ici.
'application elle-même s'exécutera donc sur le port 3000.
'est donc dans le conteneur, et nous pouvons le lier au port que nous voulons sur l'hôte local
t nous pouvons en faire 3000, comme dans le conteneur.
'est donc le port hôte et c'est le port du conteneur.
t maintenant, si j'exécute
st une commande
t faites Docker PS,
ous devrions voir notre application node s'exécuter sur le port 3000
t maintenant le moment de vérité
evenir au navigateur
t ouverture de l'hôte local 3000
oici notre bienvenue sur ma super application
essage de notre application.
t nous pouvons même vérifier les journaux
n saisissant l'identifiant de notre numéro
pplication
t en faisant des blocs Docker avec l'ID.
t
'est le résultat de notre application
l'intérieur du conteneur.
onc
'est aussi simple que vous pouvez accepter votre candidature,
e packagez-le dans une image docker à l'aide d'un fichier docker, puis exécutez-le en tant que conteneur
t revenons enfin à cette interface utilisateur graphique
lient que Docker Desktop nous fournit réellement.
aintenant, nous pouvons également voir tous nos conteneurs et images ici.
t c'est à ça que ressemble ce U I, il vous donne une assez bonne
ue d'ensemble
es conteneurs que vous avez.
esquels fonctionnent actuellement, lesquels sont arrêtés avec leur nom, etc.
t vous avez même quelques commandes ici pour démarrer un
arrêté le conteneur comme celui-ci ou même l'a arrêté à nouveau ?
edémarrez le conteneur, supprimez quoi que ce soit.
t de la même manière que vous avez une liste d'images,
compris notre propre image,
t vous pouvez également créer des conteneurs directement à partir d'ici à l'aide de certaines commandes.
onc
ersonnellement, je préfère l'interface de ligne de commande pour interagir avec Docker.
ais certains se sentent plus à l'aise avec
e visuel U. I
onc, selon votre préférence, vous pouvez choisir de travailler avec l'un ou l'autre.
ous avons maintenant appris de nombreux éléments de base de Docker.
ependant,
l est également intéressant de voir comment docker s'intègre réellement dans l'ensemble
rocessus de développement et de déploiement de logiciels avec
eaucoup d'autres technologies également.
es étapes de tout ce processus sont donc plus pertinentes.
onc, dans cette dernière partie du cours intensif,
ous allons voir une vue d'ensemble plus sombre du cycle de vie du développement logiciel.
onsidérons donc un scénario simplifié dans lequel vous développez un JAVASCRIPT
pplication sur votre ordinateur portable directement sur votre environnement de développement local.
otre application JavaScript utilise un Mongo
ase de données de base de données, et au lieu de l'installer sur votre ordinateur portable,
ous téléchargez un conteneur Docker depuis le hub Docker.
ous connectez donc votre application JavaScript au mongo
B et vous commencez à développer.
lors maintenant, disons que vous développez le
pplication première version de l'application localement,
t maintenant vous voulez le tester ou le déployer sur, euh,
nvironnement de développement où
n testeur de votre équipe va le tester.
ous validez donc votre application JavaScript dans git
u dans un autre système de contrôle de version.
uh, cela déclenchera une intégration continue.
ne version de Jenkins, ou tout ce que vous avez configuré
t Jenkins build produira des artefacts à partir de votre application.
onc d'abord, vous allez créer votre application JavaScript
t puis
réez une image docker à partir de cet artefact JavaScript. Hein ?
lors, qu'arrive-t-il à cette image docker ? Une fois qu'il est créé par Jenkins build
l est poussé
ers un dépôt Docker privé.
onc, généralement, dans une entreprise, vous avez un référentiel privé car
ous ne voulez pas que d'autres personnes aient accès à vos images.
onc, vous le poussez là.
t maintenant,
ar l'étape suivante pourrait être configurée sur Jenkins ou d'autres scripts ou outils, qui
mage Docker
oit être déployé sur un serveur de développement.
ous avez donc un serveur de développement qui extrait l'image du référentiel privé,
otre image d'application JavaScript, puis extrait le
a base de données dont dépend votre application javascript provient d'un Docker Hub.
t maintenant vous avez deux conteneurs,
n conteneur personnalisé et un Mogo accessible au public
e conteneur de base de données s'exécute sur le serveur de développement et ils communiquent entre eux.
ous devez le configurer.
ien sûr, ils parlent et communiquent entre eux et fonctionnent comme une application.
aintenant, si un testeur, par exemple, ou un autre développeur se connecte
ur un serveur de développement, ils pourront tester l'application.
l s'agit donc d'un flux de travail simplifié
onctionnera dans un processus de développement réel.
onc, en peu de temps, nous apprenons tous les éléments de base,
es parties les plus importantes de docker.
ous comprenez donc ce que sont les images, comment démarrer des conteneurs,
omment ils fonctionnent et comment y accéder,
t comment créer votre propre image docker et l'exécuter en tant que conteneur.
ais si vous voulez en savoir plus sur Docker et mettre encore plus en pratique vos compétences
omme comment connecter votre application à un conteneur Docker,
écouvrez des choses plus sombres, composez des volumes plus sombres, etc.
ous pouvez vraiment regarder mon acteur complet
utoriel. Et si tu veux apprendre, fais
ans le contexte des développeurs
t maîtrisez-le vraiment avec des choses comme les registres privés à l'aide de Doer
our exécuter Jenkins,
ntégrer docker dans les pipelines CS CD et
tilisez-le avec diverses autres technologies comme terraform
ctiver, etc.
ous pouvez consulter notre camp d'entraînement complet sur le devops
ù vous apprendrez tout cela et bien plus encore.