Transcription
1. Introduction: Bon retour, les gars. Dans cette section, nous
allons commencer à examiner conteneurs dans le cloud
ou Azure Containers. Dans cette section, nous
allons donc en apprendre davantage sur la conteneurisation
et nous allons
examiner plus en détail ce que c'est, comment nous pouvons la configurer
et l'utiliser localement. Ensuite, nous allons
voir comment nous pouvons conteneuriser un projet
Dotnet Core. Et puis,
comme nous l'avons hébergé à
l'aide du service Container Instances fourni par Microsoft dans son ensemble, nous pouvons héberger notre image de conteneur à l'
aide d' Azure Container Registry. Et nous allons passer en revue Kubernetes. Sachez que si c'est
la première fois que vous procédez à la conteneurisation,
ne vous inquiétez pas ,
il s'
agit d'un aperçu, mais nous allons suffisamment aborder la question pour que vous vous
sentiez en confiance pour en
discuter. Bien entendu, il ne s'agit pas
d'un cours approfondi sur la conteneurisation. Vous pouvez consulter mon cours
complet à ce sujet. Mais pour cette section,
nous allons
avoir une vue d'ensemble de l'ensemble du week-end déplacer nos conteneurs de notre environnement local vers
nos environnements cloud. Alors restez à l'affût. Je sais que tu vas t'amuser.
2. Quels sont les conteneurs ?: Avant de passer à
nos conteneurs zéro, voici un autocollant :
regardez les conteneurs ce qu'ils sont
et pourquoi nous les utilisons. Selon un conteneur,
il s'agit d'une unité
logicielle standard qui regroupe le code
et toutes ses dépendances. L'application s'exécute rapidement, manière fiable et dans n'importe quel environnement. Et c'est ce que je
paraphrase, ce qui est écrit, mais c'est l'explication
et cela vient de docker.com. Non. Pourquoi avons-nous besoin de conteneurs ? Et c'est un mot à la mode. Vous en entendrez parler en
parlant de conteneurs et conteneurisation et des raisons pour lesquelles
nous devrions y passer. Examinons quels sont
les problèmes existants et
comment les conteneurs peuvent nous aider. Aucun problème existant lors du
développement de logiciels. La
virtualisation a un coût. Nous venions donc tout juste d'
une section consacrée aux machines
virtuelles dans le cloud
et à l' infrastructure en tant que service. En réalité, et je suis sûr
que chaque développeur peut
attester du fait que lorsque vous avez un
environnement et que vous
essayez de développer en fonction de
cet environnement, vous aurez besoin de machines
virtuelles, n'est-ce pas ? se peut donc que l'organisation n'achète
pas machine par logiciel
que vous possédez. Au lieu de cela, ils
vont procéder à la
mise en service d'une machine virtuelle. Chaque machine virtuelle doit
disposer d'un système d'exploitation, ce qui signifie qu'un plus grand nombre de
licences sont requises pour chaque
machine virtuelle, puis pour tout logiciel de
support
dont vous avez besoin pour votre application spécifique sur votre machine virtuelle ou un
ensemble de machines virtuelles. Il s'agit d'autres coûts de licence. Vous devez donc
tenir compte du fait que virtualisation n'est pas une entreprise
peu coûteuse, en particulier lorsqu'elle est
réalisée en interne. Nous sommes également confrontés au défi des différences entre les environnements,
car lorsque nous provisionnons une machine virtuelle et installons une
version particulière du logiciel, version du système
d'exploitation sur cette machine
ou cette machine virtuelle en particulier. Au contraire, cet environnement est
configuré d'une manière particulière, il est
donc très
difficile, pas très, mais très
difficile de reproduire cet environnement exactement pour Q0. Et puis, en
ce qui concerne la production d'Accenture, nous sommes confrontés en
tant que développeurs une situation où
cela fonctionne dans Dove et où il y a
une légère différence de version entre le développement et l'assurance qualité. Il tombe en panne en q0 et même
lorsque nous corrigeons la file
d'attente, cela ne fonctionne pas immédiatement dans Prod. Il y aura donc toujours de légères différences entre
les différents environnements. Et cela peut provoquer,
je voulais dire, maux de tête
inutiles pour nous en tant que développeurs et
même pour les infrastructures. Je suis un pratiquant, je le sais. Une autre chose est de savoir à quel point
est-il facile pour vous de
changer de système d'exploitation ? Parce que lorsque vous configurez une
application pour Dotnet Core, vous aurez besoin d'IIS, vous aurez besoin de
certains logiciels de
support d'hébergement basés
sur notre serveur Windows. Mais si vous devez
passer à un serveur Linux, vous
devez vous demander : d'accord, vous devez utiliser Genetics,
Apache ou un autre logiciel d'
hébergement, une autre version de celui-ci, une autre version de celui-ci. Et c'est le cas. Il est
difficile de reproduire l'
environnement d'exécution de Windows vers un autre système
d'exploitation. Ce sont donc certains
des problèmes auxquels nous sommes confrontés lors du développement de logiciels, particulier de logiciels que nous
souhaitons exécuter sur n'importe quelle plate-forme. Aucun avantage lié à l'utilisation de conteneurs. Premièrement, nous avons la portabilité. Docker a donc créé
une norme industrielle pour les conteneurs afin qu'ils
puissent être portables n'importe où. Et je vais parler davantage ce que signifie réellement la capacité des ports. Les conteneurs étant également légers, ils partagent le noyau du système
d'exploitation des machines sous-jacentes. Vous n'avez pas besoin de
mettre un nouveau système d'exploitation par application, la virtualisation
en ligne, où chaque machine virtuelle possède ses propres machines entièrement approvisionnées, pour ainsi dire. Les conteneurs se situent au-dessus d'
un système d'exploitation, mais fournissent ensuite un environnement
virtuel dans lequel seuls les logiciels nécessaires à l'environnement
peuvent être installés. Et puis, par extension, raison de la capacité des ports, une fois que nous avons
ce modèle, que nous appelons image de conteneur, nous pouvons le provisionner
au-dessus d'un système d'exploitation Windows,
Linux ou macOS et obtenir les
mêmes résultats à chaque fois. Il y a aussi la
question de la sécurité. Désormais, une fois qu'une application
est dans un contenant, elle est sûre car vous
pouvez toujours l'emporter. Vous pouvez le soulever à nouveau décalé. Et nous pouvons toujours stocker
nos secrets afin que personne à qui
nous puissions restreindre
l'accès au contenu ne soit un peu plus facile que
sur une machine virtuelle. Nous examinerons également l'immuabilité. Ainsi, une image qui
est le modèle d' un conteneur sera toujours
la même lors de sa création. Encore une fois, cela contribue
à la portabilité, car s'il existe une image de conteneur
pour mon application et qu'elle a besoin de trois
bibliothèques pour la prendre en charge, elle
me fournira toujours cet environnement. Peu importe où il
est approvisionné. Je peux donc être assuré qu'
une fois conteneurisé,
ce sera toujours pareil. S'il existe une nouvelle
version, je
devrais créer une toute nouvelle
image avec cette nouvelle version. À ce stade, vous
avez une image pour la version 1 et une
image pour la version 2. La première version ne mettra jamais
à jour la version deux. Vous ne voulez donc pas
courir le risque de provisionner la mauvaise version car la version
que vous
allez provisionner est claire . Maintenant, voici un aperçu
de l'ensemble de l'apparence de Docker, extrait de la documentation
Microsoft. Donc, sur le côté gauche, vous pouvez voir que nous avons
les systèmes d'exploitation. Cela peut être Linux,
Windows, Engine X égal
B, Mac OS ou quoi que ce soit d'autre, quel que soit le noyau
sous-jacent. D'où la gauche. Le moteur
Docker s'ajoute cela
et
nous fournit un serveur, un client et une API RESTful. Et tous ces éléments fonctionnent
ensemble pour gérer les images créées. Donc, encore une fois, l'
image est le modèle. Et en utilisant ce modèle
et le serveur Docker, nous pouvons approvisionner des conteneurs, que vous verrez
à l'extrême droite. Le conteneur est donc l'instanciation
réelle du modèle. Et puis ce modèle peut
être rejoué plusieurs fois. Nous pouvons donc avoir
plusieurs conteneurs dans la même application
pour différentes raisons. Donc, encore une fois, l'image n'
est que les modèles. Le conteneur est l'
instanciation de ce modèle. Maintenant, j'ai mentionné le
plus sombre à plusieurs reprises. Docker est donc une plateforme
de
conteneurisation utilisée pour développer, expédier et gérer des conteneurs. Docker n'
utilise pas d'hyperviseur. Contrairement aux machines virtuelles, vous n'avez pas besoin d'hyperviseur Vous pouvez
donc l'
installer sur votre ordinateur de bureau ou portable si vous développez
et testez des applications. Et surtout, il prend en charge tous les principaux systèmes
d'exploitation. Ainsi, quel que soit le
système d'exploitation que vous
utilisez, Docker le prend en charge. , il prend en charge les charges de travail de
production pour de
nombreuses variantes de versions Linux et
Windows Server. Mieux encore, il est pris en charge par de nombreux fournisseurs de cloud,
dont Microsoft Azure. Maintenant, vous verrez également lorsque vous
recherchez Docker, Docker Hub. Docker Hub est donc une offre de logiciel en
tant que service qui
est un registre de conteneurs. Essentiellement, un
registre de conteneurs stocke et distribue les images de conteneurs que
nous créons à l'aide de Docker Hub. Docker Hub, désolé,
vous pouvez réellement héberger l'image de votre application
et la distribuer. Et il prend en charge
la distribution publique sur les deux. Il soutient également la distribution
privée. Ainsi, même au sein de
votre organisation, donnez-moi des images
d'applications internes que vous gérez. Vous pouvez compter sur Docker
Hub pour la confidentialité, mais aussi pour l'hébergement. Maintenant, lorsque nous examinons nos offres
de
services et de conteneurs
zéro ,
nous avons Azure
Container Instances. Azure Container
Instances nous permet le Seigneur, d'exécuter
des images Docker à la demande. Cela nous permet de récupérer
une image à partir d'un registre tel que Docker Hub ou
Azure Container Registry. Cela nous amène à
Azure Container Registry. Il s'agit d'un service de registre
Docker géré basé sur le registre Docker, le
registre Docker Open Source vers lequel pointer. Et bien sûr, cela est
géré par Microsoft , vous n'avez donc pas à
vous soucier des versions. Il s'agit simplement de la norme
actuelle. Et cela nous offre une offre de
registre privé hébergée dans Azure. Il vous permet également de créer, stocker et de gérer vos images non gérées,
malheureusement, pour tous les
conteneurs et pour les déploiements. Ainsi, entre Azure
Container Instances votre registre de conteneurs, vous disposez d'une bonne base pour commencer à conteneuriser vos applications et stocker les différentes
versions des images. Et encore une fois, tout cela
peut se faire en privé. Vous pouvez ainsi accélérer
vos efforts de développement, réduire vos coûts
d'infrastructure et optimiser la mise à disposition de votre application grâce à
la conteneurisation. À notre retour,
nous commencerons par regarder
le trou le plus sombre. Nous pouvons le configurer et comment créer nos premiers conteneurs. Alors restez dans les parages.
3. Configurer le dispositif de quai: Commençons maintenant par
configurer Darker sur notre machine et notre voyage
commence sur docker.com. Vous pouvez donc, dans votre
navigateur, accéder à docker.com, et à partir de là, vous pouvez télécharger le
client Docker approprié pour votre machine. J'utilise donc une machine Windows, mais vous
pouvez ensuite obtenir une puce supérieure, une puce Linux et une puce Intel pour
d'autres types de machines qui ne sont peut-être pas basées sur
ces systèmes d'exploitation. Vous pouvez donc l'installer fonction de la manière dont vous
devez l'installer pour votre machine particulière. Si vous utilisez la version
Windows, il s'agit d'une installation
simple à l'aide de l'assistant. Et une fois installé, vous serez amené à installer le sous-système Windows Linux ou le sous-système Windows pour Linux, sous-système
WSL que nous avions
mentionné précédemment. C'est donc dans la
documentation Microsoft. Si vous utilisez uniquement Google Windows, WSL, vous verrez cette documentation apparaître et vous pourrez
suivre les instructions. Vous pouvez donc simplement exécuter cette opération
en utilisant votre commande
partielle ou votre invite de commande en tant qu'administrateur. Et il va continuer à le
télécharger et à
l'installer pour vous. Maintenant, une fois Docker et le sous-système Windows
pour Linux installés, vous pouvez lancer
votre bureau Docker. Cela peut donc prendre un certain temps. Je l'ai déjà installé. Vous pouvez voir que je suis en
attente ou que je ne l'ai pas fait, mais vous pouvez appuyer sur Pause vous
assurer que tout est
configuré avant de continuer. Et lorsque vous le
faites, vous pouvez lancer
votre bureau Docker. D'ici. Vous pouvez
regarder les contenants. Si c'est la première fois que
vous exécutez Docker, vous n'aurez aucun conteneur dans cette liste. Vous pouvez également regarder des images. Ainsi, à partir de là, vous pouvez réellement
comparer les images locales aux images
disponibles sur le hub. Nous avons donc mentionné Docker
Hub dans la leçon précédente. Donc, ce que vous voulez faire,
c'est dans votre navigateur, allez sur hub.docker.com et créez une icône. Je dis que je
vais dire non, juste pour vous montrer à
quoi vous pouvez vous attendre. Et puis vous pouvez
commencer gratuitement dès aujourd'hui. Et une fois que vous avez vos cônes, vous pouvez accéder aux
différentes images
Docker mises
à la disposition du public. Non. Je dis que je le
renvoie ici, je consulte mon
propre registre où j'
ai une
image de base de données de patients que j'ai créée. Il est accessible au public. Ce n'est pas très utile. En fait, j'ai créé celui-ci pour mon livre sur le
développement de microservices, où j'ai démontré comment vous pouvez conteneuriser différentes parties de votre application de microservices
afin de pouvoir obtenir une copie de ce livre si vous
le souhaitez du point de vue des microservices. Mais le fait est que
depuis Docker Hub, je peux consulter
différents registres. Ce sont donc mes référentiels, mais si je clique sur Explorer, je peux regarder différentes images et
vous verrez que
plusieurs milliers d'
images peuvent être utilisées. Je peux donc utiliser n'importe lequel d'entre eux. Peut-être avez-vous besoin d'une instance Redis, vous avez besoin d'une instance
SQL Postgres. Et des
applications populaires et très populaires ont été conteneurisées et sont mises à votre
disposition sous forme images de
conteneur pour que vous
puissiez instancier des images. Les coûts sont des conteneurs
sur votre propre machine. Maintenant,
pour le ramener sur Docker Desktop, si vous vous
connectez au hub, sachez que vous avez
créé un Arkon. Ensuite, à partir de là
, vous aurez accès à votre propre
référentiel selon vos besoins. Voici donc où j'
aurais empaqueté mon conteneur et je l'aurais publié sur
le hub, le tout en utilisant Docker Desktop
comme outil. Très bien, encore une fois, je peux regarder toutes
les images locales que j'aurais extraites. Et une fois que j'ai créé un conteneur, j'y ai accès par la suite. Vous pouvez donc voir ici que j'ai
un conteneur RabbitMQ, un conteneur Mongo DB de deux conteneurs pour
Microsoft SQL Server et un pour les esquisses 3D. Donc, à notre
retour, nous
examinerons l' ensemble du week-end dans le monde entier. Il s'agit d'apporter une image et
de créer notre propre contenant.
4. Créer un conteneur: À l'heure actuelle, Microsoft
SQL Server n'est presque exclusivement utilisable que
sur des machines Windows. Maintenant, si vous utilisez
Mac ou Linux, ne vous inquiétez pas, il existe
toujours une solution pour vous. La solution numéro un
serait d'utiliser
une machine virtuelle
afin d' utiliser VMware ou autre outil prenant
en charge la virtualisation. Et vous pouvez lancer
une machine virtuelle dotée d'un système d'exploitation Windows,
puis l'utiliser. Sachez que cela peut nécessiter beaucoup de
ressources. Et je ne vais pas vous faire
subir tout cela juste
pour utiliser le logiciel. L'alternative à un environnement
virtualisé pour Windows serait d'utiliser doc. Je vous encourage à
lancer votre terminal. Donc, encore une fois, j'utilise
une machine Windows, mais votre terminal sous Linux ou Mac OSX ressemblerait
beaucoup à celui-ci. Et vous pouvez simplement exécuter la commande docker pour vous
assurer qu'elle est installée. Et si vous voyez quelque chose
qui ressemble à ceci, ils ne savaient pas que
vous aviez accès
aux commandes Docker CLI. Très bien, ce que nous voulons faire
à ce stade, c'est exécuter une commande appelée
Docker Pull qui consiste à
zoomer un peu pour
faciliter la lecture. Nous allons donc faire
docker, pull, docker, pull. Ensuite, nous allons extraire
ce que nous appellerons une image. Docker possède donc des fichiers
prédéfinis qui définissent l'environnement requis pour une application
particulière. Et c'est ce qu'on appelle des images. L'image que nous voulons est l'image Microsoft MS
SQL Server. Nous allons donc créer un docker,
appuyer sur cette image pour que vous
puissiez appuyer sur pause, en
vous assurant de la saisir
exactement comme je l'ai fait. Et lorsque vous appuyez sur Entrée, il va se lancer
et dire : « OK, je reçois des litres, puis vous allez le voir se
télécharger. J'ai donc déjà extrait cette image, donc je l'
ai déjà sur ma machine. Mais tu vas
voir que ça tire. Et puis il va commencer
à afficher vos statistiques sur le chargement terminé. Et en fait, ils
ressembleraient davantage à ça. Voici donc une capture d'écran que j'ai prise plus tôt lorsque
je l'ai téléchargée. Et vous allez
voir que cela va donner
naissance à un tas d'objectifs
qui ressemblent à celui-ci. Et vous allez avoir
ces balises de téléchargement. Une fois cette opération terminée, l'étape suivante consiste
à l'exécuter. Pour l'exécuter, vous avez
besoin de cette commande. Nous allons donc dire Docker
run, puis tiret e, puis nous accepterons
le contrat de licence d'utilisation. Donc, ce qui se passe, c'est que SQL
Server contient généralement l'un de ces documents
dont vous avez besoin pour accepter les
termes et conditions. Nous le mettons donc simplement
dans un paramètre indiquant que oui, nous acceptons les termes
et conditions. Et puis un autre
qui dit mot de passe SA. Donc, si vous examinez le processus d'installation
lorsque nous utilisons Windows,
nous pouvons utiliser l' authentification Windows connecter
à la
base de données, n'est-ce pas ? Il suffit donc d'un nom de machine et nous pouvons utiliser un utilisateur Windows,
l'utilisateur Windows actuel, l' authentification
Windows
et la déconnexion. Maintenant, comme c'est plus sombre
et que c'est un conteneur, il n'y a ni fenêtres, ni portes ni
Mark, ni authentification
Linux. Ce n'est donc pas vraiment que
vous pouvez simplement vous connecter en utilisant l'utilisateur par défaut
sur votre ordinateur. Cette étape est donc
applicable que
vous utilisiez Windows,
Mac, Linux, etc. Nous devons
donc
spécifier un mot de passe SA. ESI est donc l'utilisateur par défaut, ce qui signifie administrateur système, administrateur
adjoint. Chaque fois que vous installez
un moteur de base de données pour Microsoft SQL Server, vous obtenez cet utilisateur de dissertation. Nous allons donc
configurer ce SA, ce passe et vous pouvez saisir le mot
de passe de votre choix. Je suis juste en train de saisir un mot de passe
fort. Et c'est tout à fait possible
que vous puissiez le voir dans d'autres démos que vous pourriez regarder n'importe où sur Internet. Ce mot de passe n'est donc pas nécessairement propre à
moi ou à cet exercice. Vous pouvez saisir n'importe quelle valeur
de mot de passe avec laquelle vous vous sentez à l'aise
et dont vous vous souvenez. Je divise donc simplement le mot mot passe
fort, bien sûr, avec des
caractères spéciaux, des chiffres et quelques lettres majuscules. Ensuite, nous spécifions le port. Le port situé
au front est important et
nous voulons le traverser. Le port. À l'autre bout des deux-points se trouve le port vers lequel il sera mappé. Cela signifie donc que SQL Server diffuse
par défaut
à partir du port 1433, qui est le port par défaut. Donc, sans rien faire, spécifier des ports
ou quoi que ce soit d'autre passera toujours par
1433 connexions. Cependant, Docker fonctionne dans ses propres
environnements spécialisés, nous devons
donc le nettoyer. Il s'agit du port par défaut, puis du
port de War Machine qui voudra emprunter un
tunnel pour accéder à ce sport. Vous pouvez donc simplement
laisser cela comme 14334233. Si vous ne souhaitez pas que
SQL Server soit
déjà installé et que vous
utilisez Mac et Linux, 143 l'est, 33 convient. Vous n'avez rien de plus à
faire. Vous pouvez simplement vous connecter. Cependant, comme j'
utilise une machine Windows, j'ai dû changer de port car
1433 est déjà occupé par mon installation SQL
Server native. Je suis donc en train de
vous montrer que
vous pouvez utiliser 14331433 par défaut. Ou vous pouvez installer votre propre port spécifique
si vous le souhaitez. Puis le suivant. Enfin, nous voyons le trait d'union D, puis nous spécifions l'image
que nous voulons exécuter. Donc, en gros, nous disons que
docker exécute cette image s'assurant que tous ces paramètres
intermédiaires sont configurés. C'est essentiellement
ce que nous venons de faire. Ainsi, lorsque vous appuyez sur Entrée et
que
vous téléchargez celle-ci pour l'exécuter, elle lancera cette image dans
l'interface utilisateur plus sombre. Et dans l'interface utilisateur, vous allez
voir qu'il y a,
vous savez, un récipient sous le récipient. Et tu aurais pu donner un nom
au conteneur. Nous n'avons pas spécifié de
nom dans la commande, mais vous auriez pu mettre tiret n et lui donner
un nom spécifique. Ainsi, lorsque vous ne
fournissez pas de nom, vous obtiendrez un nom aléatoire, comme ce que vous voyez ici
avec ces noms, moins Docker you, je vais indiquer le type
d'image que nous utilisons. Et vous verrez ici les spécifications
du port en
fonction de ce que nous avions configuré. Donc, comme je l'ai dit, vous pouvez autres ports, ce qui
serait bien si vous disposiez plusieurs conteneurs de
la même technologie qui bloqueraient le fonctionnement
d'un port en particulier. Mais si vous n'
avez pas
installé la technologie comme avec mon MongoDB, MongoDB n'est pas en cours d'
exécution sur ma machine, donc je ne vais pas utiliser de port
alternatif. Je vais juste vous dire d'
utiliser le port par défaut, le
mapper au port par défaut et agir comme le logiciel lui-même. Pour SQL Server. J'ai plusieurs
instances en cours d'exécution, et je veux cette instance
d'un port spécifique afin de pouvoir y
accéder directement lorsque j'ai besoin de me connecter. Maintenant, examinons la connexion. Donc, pour me connecter, je peux utiliser n'importe lequel de mes outils de gestion SQL Server. Nous avons déjà examiné
certains de ces outils. Juste pour me rencontrer cette
semaine, je vais utiliser le Data Studio et me connecter. Je vais continuer et
créer une nouvelle connexion. Et pour le serveur, je vais
écrire le nœud hôte local. Le plus sombre sera
diffusé chez les hôtes locaux. C'est pourquoi ce
numéro de port est important. Parce que
la commande localhost 1433 est généralement le moyen de se connecter à l'instance
SQL Server installée localement. Si, surtout si vous
utilisez un niveau professionnel,
entreprise ou développeur, n'est-ce pas ? Ainsi, l'hôte local avec le
port me connecterait à l'
instance installée par défaut sur ma machine. Cependant, comme je veux
l'instance la plus sombre, je dois accéder à l'hôte local et au port spécifique que je lui
ai indiqué lors de
la configuration du conteneur. Pour l'authentification, je ne peux pas utiliser l' authentification
Windows
que nous avons établie. Je dois utiliser l'
authentification SQL. Et je vais dire essai, puis mot de passe. J'ai oublié. Voici donc un
moyen rapide de les récupérer à partir de l'interface utilisateur Dr., si
vous oubliez ces valeurs
d'environnement . Vous pouvez simplement cliquer sur
le conteneur en cours d'exécution et utiliser des repères visuels
pour savoir quand il est en cours d'exécution. Ici, il est en cours d'exécution et vous verrez les journaux s'afficher en
arrière-plan. Vous pouvez accéder à Inspect, vous pouvez accéder au terminal, etc. Si je vais dans Inspect, je vais voir toutes les variables d'
environnement qui ont été configurées. Nous avons donc accepté l'eula. Pourquoi ? Il s'agit d'une variable d'
environnement. Voici le mot de passe SA. Et regardez ça. J'ai le mot de passe à ma
disposition ici. Chaque fois que vous
effectuez ces configurations et que vous définissez des variables d'
environnement
et que votre esprit oublie où tout est humain, vous pouvez toujours passer
au conteneur en cours d'exécution, inspecter et voir les variables d'
environnement. Je vais donc revenir
ici et saisir le mot de passe. Ensuite, je vais
cliquer sur Connecter. Maintenant, je reçois cette erreur indiquant
que cela a réussi, mais qu'il a besoin d'une connexion
fiable. OK, donc j'étais juste sur le certificat
du serveur Shows et je suis là. Je suis maintenant connecté à l'instance SQL Server
exécutée dans mon conteneur. Et il s'agit d'un conteneur qui est en
fait utilisé dans un autre cours, le développement multiplateforme
asp.net Core lequel
j'enseigne en attente. Vous pouvez utiliser asp.net
Core pour développer une solution dans n'importe quel environnement. Nous faisons donc un peu plus sombre, Isaiah Sean dans ce cours. Et je ne fais que te montrer ça. Je partage simplement cela avec
vous pour vous faire savoir que c'est la raison pour laquelle cette base de données existe. Vous
n'auriez donc évidemment aucune base de données si vous
créiez simplement ce conteneur. Ce conteneur fonctionne comme n'importe quelle
autre instance SQL Server. Et tant que le
conteneur fonctionne, vous pouvez tout de même interagir
avec lui. Vous pouvez vous y connecter, créer des applications pour l'utiliser. Et devinez quoi si je l'arrête ? Je peux donc arrêter ce conteneur
à ce stade, n'est-ce pas ? Si j'essaie de faire autre
chose ici, exemple d'accéder
à la base de données, remarque que mon Data
Studio va
se bloquer parce qu'il a perdu la connectivité avec la
base de données, avec le serveur. Donc, tant que ce
conteneur fonctionne. C'est pourquoi nous avons dit que
lorsque vous installez un logiciel, vous ne
souhaitez pas nécessairement qu'il soit omniprésent et qu'il fonctionne en
permanence. Vous voulez l'arrêter, l'arrêter
et le démarrer à la demande. C'est là que la conteneurisation
peut jouer un rôle important en vous
aidant à utiliser les ressources de
votre système de manière
aussi efficace que possible pendant
le développement. Maintenant, sachez que nous avons une certaine
expérience de l'extraction d'une image et configuration de notre conteneur. Et ça, ces étapes
sont bien documentées, donc je n'invente rien. Vous pouvez trouver tout cela. Une fois que vous avez trouvé l'image intéresse sur Docker Hub, vous pouvez cliquer dessus et voir toutes les méthodes recommandées la
configurer sur toutes les variables d'
environnement pour la
configurer sur toutes les variables d'
environnement
nécessaires à la
configuration. Mais maintenant que nous avons
vu comment utiliser une image tierce,
faites-le-nous savoir, configurez notre propre application Dotnet
Core, regardez un week-end entier, connectez-vous à cette
image et comment nous pouvons conteneuriser
une application.
5. Configurer . Projet de base NET: Créons maintenant notre propre projet
asp.net Core. Et à l'avenir, nous
allons le conteneuriser. Nous utilisons donc bien sûr
notre solution habituelle. Je vais ajouter un nouveau projet. Et cette fois, je vais me lancer
dans un projet d'API. Et je choisis une API uniquement en accord avec le thème selon lequel les conteneurs et la
conteneurisation s'intègrent
bien à la conception
architecturale des microservices. Je vais donc passer ici créer notre nouveau projet d'API. Je vais juste
appeler ça un microservice. Une API adopte
des conteneurs qui font des démonstrations. Vous pouvez donc réutiliser le nom. Bien sûr, tu n'es pas obligée. Et puis je vais appuyer sur Suivant. Maintenant, dans cette étape, nous pouvons choisir notre type de
framework
d'authentification et nous pouvons
choisir d'activer Darker. Je ne vais donc pas activer l'
obscurité ici, nous allons l'
ajouter manuellement ou utiliser une méthode
différente pour l'ajouter. Mais pour le second microservice, vous verrez la
différence lorsque nous le ferons car nous
voulons
que les choses restent simples. Je vais juste créer une
API minimale et nous pouvons appuyer sur Créer. Maintenant, bien sûr, si vous utilisez Visual Studio Code
et la CLI dotnet, vous ouvrez votre terminal
et vous allez taper la commande dotnet new web hyphen 0 pour la sortie et donner son nom au projet. Ensuite, une fois que c'est fait, vous pouvez créer un CD dans ce dossier nouvellement
créé et exécuter code en entier pour lancer Visual Studio Code
dans ce dossier. Nous avons donc maintenant notre projet d'API Web
standard et nous sommes tous des développeurs, nous savons
donc quoi faire. savons que ce code sur une tumeur rare est
magnifique et nous nous connectons à notre base de données
et à tous ces actifs. Cependant, encore une fois, lorsque nous devons passer
de notre machine
à l'environnement de développement
et que nous déployons, il peut y avoir des différences
entre les environnements qui font fonctionner sur votre machine et cela ne fonctionne pas sur def. Et puis nous nous retrouvons
avec des excuses, comme si cela marché hier ou que nous disions, eh bien, cela a fonctionné sur
ma machine ou qu'il
va utiliser votre
machine en production. Nous le savons tous. C'est pourquoi
la conteneurisation rend notre application
beaucoup plus portable et beaucoup plus stable, quel que soit
l'endroit où elle est déployée. Maintenant, je vais ajouter des supports de
conteneurs à
ces applications. J'ai créé l'application
et, sérieusement, nous avons supprimé le magnifique
code et tout le reste. Mais nous savons que nous en avons
besoin dans un conteneur Je suis
donc prêt à
cliquer avec le bouton droit sur le projet. Ensuite, je vais
passer à Ajouter. Et puis vous verrez
ici les supports Docker. Donc, lorsque je clique sur Docker, le
support me demande : d'
accord, quelle est la cible ou si je voulais la
laisser sous Linux ? Bien entendu, vous pouvez
passer de l'un
à l'autre et vous devez vous assurer choisir l'
environnement approprié en fonction de
la quasi-dépendance des choix de bibliothèques, car tout ne
fonctionne pas sous Linux. Mais pour l'instant,
cette application simple et dotnet Core est multiplateforme. Je vais utiliser Linux. Je clique sur OK, puis nous obtenons ce nouveau fichier
appelé fichier Docker. Ce fichier Docker
n'était donc pas là au départ. Mais laissez-nous simplement évaluer
ce que fait ce fichier Docker. Et cela semble confus, mais quand vous le lisez jusqu'au bout, vous verrez que, d'accord, c'est quelque chose qui
peut être compris. La première chose qu'il fait
est d'extraire une image de base. Donc, à partir de là, on
prononce le nom de l'image. Rappelez-vous donc que lorsque nous avons effectué notre extraction
docker pour SQL Server, nous avons dû spécifier
un chemin similaire à
celui-ci , où nous avons plutôt dit
SQL Server, nous n'avons pas spécifié notre balise. Donc, si vous voulez une
version spécifique d'une image, cela
signifie qu'il s'agit de l'
image, puis de deux points. Ensuite, la valeur après
les deux points signifie la balise ou la version spécifique
qui vous intéresse. Nous créons donc une application
asp.net. Donc, évidemment, nous
voudrions que l'image soit une image dotnet seven asp.net. Et puis nous voyons comme base. Ensuite, il va spécifier, d'
accord, une fois que vous aurez
créé ce conteneur, créera notre
répertoire de travail nommé Exposed Ports 84 pour trois. Et puis à partir de cette image du SDK
où nous voulons créer. Donc, une fois de plus, spécifiez le répertoire
de travail doit être SRC, puis copiez les fichiers depuis le répertoire
CSP, n'est-ce pas ? Donc, vous voyez ici, ce ne
sont que des chemins. Copiez donc à
peu près ce
fichier de broche CS à partir de ce chemin , puis exécutez une commande de restauration
dotnet. Donc, vous commencez à
voir qu'il utilise
simplement les mêmes commandes Dotnet CLI que nous utilisons, c'est juste le faire en notre
nom, n'est-ce pas ? Il effectue donc une restauration à partir ce fichier CSV et tout ce qu'il contient sera copié. Ensuite, il s'agit de configurer
ce répertoire de travail pour qu'il y soit à nouveau. Donc, si je
le lis ligne par ligne, bien sûr, c'est logique, non ? Essentiellement, nous
allons réexécuter dotnet build en tant que version. Et le résultat va être. Construction en Slash. Il s'agit de répertoires
que nous n'avons pas à créer et qui ne sont pas
créés sur notre machine. Au lieu de cela, ils seront
créés dans le conteneur qui effectue
cette compilation du compilateur. Et puis il va dire qu'à
partir de cette étape, d'accord, fois cette étape terminée, prenez le
nom qu'on lui donne publié. Et ils allaient
exécuter la commande de publication, qui produira le
même type de publication. Prenez ce qui se trouve dans ce dossier
publié. Et ça va lui donner une petite fleur pour dire que «
utiliser un cheval est égal à faux ». Très bien, encore une fois, cela
est généré pour nous. Nous ne sommes pas nécessairement
tenus de proposer ce fichier. Nous le pouvons. C'est bien de le comprendre, de le modifier, mais en
général, ce n'est pas nécessaire. Et après tout cela, depuis la base,
le répertoire de travail sera ouvert et
tout sera copié depuis la publication de
ce répertoire. Et puis le point
d'entrée sera cette DLL. Les applications dotnet Core
s'exécutent donc généralement sur la base de cette DLL. Et c'est ce qui démarre l'application exécutée
dans le conteneur. Maintenant, comment
savoir si cela va
fonctionner dans un conteneur ? Passons maintenant au projet de démarrage
du microservice que
nous venons de créer. Et vous verrez que le bouton en forme d'
étoile est curieux et plus foncé que tous les autres. Comme si je passais au
blazer en HTTPS. Et nous avons déjà
examiné les
paramètres de la pelouse et nous savons que le profil de lancement
contient les protocoles HTTP, HTTPS. Mais si vous regardez ceci, vous verrez qu'il y a maintenant
une entrée plus sombre ici. Et l'entrée la plus foncée
aura cette URL de lancement
avec le swagger. Ainsi, tout est
configuré pour vous une fois que vous avez ajouté
le fichier Docker. Mais en gros, il
va se lancer dans une version plus sombre, n'est-ce pas ? Ainsi, lorsque je passe à ce nouveau projet de démarrage
et que je vois run with darker, mon application se lance
comme je m'y attendais, d' accord, elle se
lance donc dans un navigateur. Et je vais pouvoir m'
en servir comme je le souhaite. Quelles preuves ai-je pour
savoir qu'il s'exécute dans un conteneur et qu'il n'est pas simplement
exécuté par Visual Studio Eh bien, si vous regardez la fenêtre de
Visual Studio, le nouveau panneau
serait apparu. Vous n'avez donc probablement
jamais vu cela auparavant. Conteneurs. Et dans ce panneau, vous voyez que ce conteneur ou l'
application
hébergée sont en cours d'exécution en tant que conteneur en cours d'exécution,
n'est-ce pas ? Non, vous pourrez également consulter toutes
les variables d'
environnement. Vous verrez donc le développement de la
version, toutes ces
variables d'environnement que nous n'avons pas
laissées , mais qui sont toutes présentes. Nous avons également des ports. Donc, si vous regardez le port ici, vous verrez qu'il
crée des ports. N'oubliez pas que nous avons dû
créer un port pour créer un tunnel. Donc 21433 lorsque nous faisions
notre image SQL Server. Vous verrez donc ici que nous
avons un port mappé
vers le port 80 et un port
mappé vers le port 443. Dans l'un ou l'autre, je peux
cliquer et soutenir. Ainsi, lorsque nous examinons l'
adresse dans l'interface utilisateur Swagger, nous verrons que
nous sommes sur le 769, qui correspond au port 443. Vous remarquerez également
que si vous avez interface utilisateur
plus sombre ouverte et en cours d'exécution, une interface utilisateur
plus sombre ouverte et en cours d'exécution, vous avez un nouveau conteneur avec le nom de l'
application également en cours d'exécution. Et il vous montre le port. Et vous pouvez cliquer
pour afficher tous les ports. Ce sont donc tous
des indices visuels et des preuves que nous n'avons pas d'application
conteneurisée. Et il s'agit d'un microservice. Encore une fois, cela ne
se limite pas aux microservices, mais il est recommandé microservices,
car cela permet à
chaque microservice de vivre dans son propre environnement, indépendamment de tous les autres services ayant ses propres dépendances et tout ce dont il a besoin
pour fonctionner efficacement. Et encore une fois, il est portable. Si vous utilisez Visual
Studio Code et
que vous souhaitez conteneuriser l'
application que vous avez ici, vous devrez vous procurer les extensions
pour Darker. Donc, si vous allez simplement dans Extensions et que vous pouvez simplement rechercher
Docker, installez-le. J'essayais de le faire
défiler et de le trouver, mais vous pouvez simplement
rechercher plus sombre
et installer l'extension
Docker. Assurez-vous d'
obtenir celui de Microsoft. Ensuite, une fois que vous l'aurez obtenu, vous aurez cet onglet qui vous
permet
de voir tous les conteneurs
. Il vous donne un résultat similaire, je ne
veux pas dire similaire, mais il vous donne
suffisamment d'informations par rapport à ce que vous
auriez dans Visual Studio à propos
des conteneurs en cours d'exécution, ainsi que les différentes
images que vous avez à votre
disposition si vous avez
extrait sur plusieurs images, laissez-nous conteneuriser
cette application particulière. C'est ce que nous avons provisionné
dans notre code Visual Studio. Dans Visual Studio Code, maintenez les touches Control Shift et P
enfoncées, et vous verrez Traitor
afficher toutes les commandes. Donc, Control Shift
N P et cela
lancera notre palette de commandes. Et puis vous verrez ici que E a la possibilité d'
ajouter un fichier Docker. Si vous ne voyez pas cette option,
vous pouvez simplement commencer à taper Docker et elle
apparaîtra quand même. Souvenez-vous donc de cet ajout. Le support Docker
consiste en fait à ajouter un fichier Docker. Donc, si nous sélectionnons
cela, je peux spécifier le type d'application
que je souhaite prendre en charge. Il s'agit donc d'une application asp.net
Core. Ensuite, nous pouvons à
nouveau
spécifier le système d'exploitation et spécifier les ports. Je vais quitter ce port. Ça me convient. Je peux choisir si je veux
un fichier Docker Compose, nous examinerons
docker-compose plus tard, quelqu'un qui dira non pour le moment. Ensuite, il va
générer ce fichier Docker pour moi en utilisant une syntaxe très similaire à que nous venons de voir
dans Visual Studio. Maintenant, pour exécuter cette API en version plus foncée à
partir de Visual Studio Code, nous pouvons accéder à l'onglet Debug, puis choisir
dans la liste déroulante, le jeu Dotnet plus sombre. Ensuite,
lancez-le à nouveau, voyez une activité
se dérouler ici dans le terminal. Et si vous regardez de plus près, vous verrez que les poumons
sont très similaires à ceux que vous auriez pu voir dans Visual Studio lorsqu'
il était en cours d'exécution, mais qu'il exécute certaines
commandes Docker en arrière-plan. Et puis, après un
certain temps, nous n'allons pas commencer à faire fonctionner
notre obscurité. Et nous voyons Hello World. Il s'agissait d'un simple point de terminaison d'API qui
renvoyait simplement HelloWorld. Si nous regardons dans notre interface utilisateur plus sombre, vous verrez le nouveau conteneur s'exécuter également avec le nom. Très bien,
nous avons donc le port 32771 qui fonctionne
à nouveau, Sports 5099. Nous aurions donc pu
préciser que nous voulions 84 pour trois pour cette édition. J'aurais pu dire 80 virgules 443 quand il
m'a posé des questions sur les ports. Je ne l'ai pas fait, mais je vous fais simplement
savoir que c'était une option qui aurait donné une cartographie similaire à celle
que nous avons ici. Vous savez maintenant comment
conteneuriser votre
application Dotnet Core en utilisant à la fois Visual Studio et
Visual Studio Code. Bien sûr, nous sommes toujours en
phase de débogage. Je vais donc
arrêter le débogage. Cela nous permet de
déboguer des applications lorsqu'elles se trouvent
dans un conteneur. Maintenant, si nous reprenons
les étapes pour ajouter un nouveau projet, laissez-moi ajouter un nouveau projet. Je suis désolée. Lorsque nous avons ajouté le projet, nous avions la possibilité d'
ajouter un support plus sombre. Je vais donc juste cliquer
sur un élément aléatoire ici. Et nous avions la possibilité
d'activer Docker. Tout cela nous aurait donc permis de choisir le système d'exploitation ici, puis il
aurait généré ou
projeté le
fichier Docker déjà provisionné. Vous pouvez le faire dès
le départ si vous
savez que vous allez l'
utiliser plus sombre ou vous pouvez facilement l'ajouter par la suite lorsque vos ambitions
auront atteint ce point. Non, c'est fait. Il est sept heures. Il existe des commandes dotnet
que nous pouvons utiliser pour publier notre application dans un conteneur sans avoir
besoin d'un fichier Docker. Un fichier Docker peut être
utilisé pour n'importe quelle version de dotnet et il est universel. Vous n'avez pas à vous inquiéter si
vous utilisez un fichier Docker. Mais à notre retour, nous
verrons comment
utiliser les commandes Dotnet natives
pour conteneuriser ou augmenter.
6. Contenez. Application NET: Dans cette leçon, nous
allons voir comment
conteneuriser un dotnet
up à l'aide de dotnet publish ou des commandes
natives de la CLI dotnet. C'est la seule version, moins au moment de
l'enregistrement, à dominer les sept,
et je suis sûr qu'elle sera disponible
dans des versions ultérieures. Jusqu'à présent, dotnet 6 et versions antérieures, vous avez toujours besoin du fichier Docker. Cependant, si nous allons de l'avant avec ses sept,
nous pouvons le faire. Je vais juste me lancer
et créer un nouveau projet. Et je vais juste utiliser
Visual Studio pour cette démo, mais vous pouvez me
suivre en utilisant Visual Studio Code. La plupart
seront pilotés par la ligne de commande. Mais je vais créer d'
autres API de microservices. Je vais appeler
ce microservice conteneurs API Dot qui font la démonstration. Et allons-y
et créons cela. Je n'ajoute pas le support Docker. Je ne change
rien à la configuration précédente. Et maintenant, nous avons notre nouveau projet. Donc, pour ce nouveau projet, nous devons ajouter un
nouveau package, n'est-ce pas ? Nous allons donc utiliser
la commande Dotnet CLI. J'utilise dotnet CLI
parce que tout le monde peut l'utiliser, que vous soyez
dans Visual Studio ou Visual Studio code. Je vais donc simplement lancer le
terminal ici dans Visual Studio. Et je vais exécuter
la commande dotnet add package et nous
ajouterons des conteneurs microsoft.net dot
build dot. Alors allez-y et
installez ce package. Maintenant que ce package est installé, nous pouvons le vérifier en cliquant
simplement sur le fichier de projet CS et
vous le verrez ici. Maintenant, lorsque nous voulons donner un nom à
notre conteneur, il se peut que nous
ayons noms
non valides en tant que projets. Donc, si vous vouliez
changer le nom, vous pouvez
ajouter un nœud ici, dans la
section Property Group du CSB Raj. Et ce serait
un conteneur et
j' aurais la bonne orthographe de l'image Nim. Et puis avec ce nœud, vous pouvez
lui donner un autre nom. Je vais donc l'appeler
un microservice macroéconomique. Dash pour écrire juste quelque chose. C'est un microservice point à point api point Clinton
est cette démo. Je voudrais l'arrêter pour
qu'elle s'appelle simplement microservice Dash to Write, juste pour vous montrer
que nous pouvons renommer l'image elle-même avant
qu'elle ne soit publiée. Maintenant, quand je suis prêt à publier en utilisant les réseaux de points, encore une fois les réseaux
jaunes, je peux dire dotnet publish et je vais spécifier
le système d'exploitation. Donc Dash, Dash OS, et je vais m'en tenir
à Linux et Dash, Dash Arc. Et nous spécifions 64 pour
montrer que nous voulons un 64 bits. Ensuite, nous disons barre oblique pour publier un conteneur, puis nous disons
barre oblique pour publier une version C. Donc, avec tout cela,
ce que nous faisons ici, nous constatons que nous voulons
la configuration de la version, c'
est-à-dire le tiret C. Une fois de plus, le tableau de bord indique
une architecture 64 bits. Et nous précisons que nous
voulons un système d'exploitation, un système d'exploitation basé sur Linux. Sachez que lorsque cette commande est exécutée, vous verrez que j'ai
imprimé quelques journaux,
mais allez-y, exécutez-la . Appuyez sur Pause. Quand ce sera fait, nous
pourrons vous aider ensemble. Mais surtout, vous
allez le voir pour créer l'image avec le nom de conteneur
spécifié. Si nous n'avions pas spécifié ce nœud de nom de
conteneur, vous auriez obtenu
une image similaire au nom
du projet que
nous avons vu auparavant. Ce ne sont donc que de petites pépites que vous pouvez garder à l'esprit. Le fait est que chaque fois que nous devons configurer cette
image de manière similaire à l'ensemble, le fichier Docker
configure toutes sortes d'environnements, c'est-à-dire
faux, etc. Pour le conteneur, nous pouvons en fait spécifier un nœud
différent ici. Donc, si je voulais, disons que nous utilisions
dotnet 6.7, je voulais juste un
dotnet six Runtime. Cette image, je pourrais en fait
venir ici et spécifier l'image du
conteneur, puis
saisir le nom de l'image. Voyons donc si je voulais
le runtime pour Dotnet Six. J'ai pu voir MCR, microsoft.com.net slash runtime, puis la balise pour 6.0. D'accord, si je voulais autre
chose, par exemple si je voulais taguer cette image moi-même,
je pourrais le spécifier. Et je vais juste
supprimer celui-ci. C'était un exemple, mais je pouvais spécifier la balise d'image du conteneur. Cela
me permettrait ensuite de définir ma propre version de cette chasse
ou de cette image que je défends. Disons qu'après correction d'un bogue, l'image d'origine était 1.2, 0.0. Mais j'ai peut-être corrigé un bogue. Je sais que je veux que ce
soit 1.2, 0.1. Et puis, si je réexécute la
commande, nous verrons que nous obtiendrons une toute nouvelle
image avec cette version de balise. Nous y voilà. Je viens donc de réexécuter la commande. Je sais que j'ai la nouvelle image
avec la balise 1.0, 0.1. Maintenant, n'oubliez pas de sauvegarder le fichier CS Bridge et c'
est pourquoi j'ai tant de courses. Cela m'est arrivé la
première fois que je ne l'ai pas vu. Chaque fois que vous apportez une modification
ici, vous devez le constater, car ne s'
agit pas d'une opération de génération, il ne s'
agit pas d'une opération de génération, mais d'une opération non publiée. Donc, si vous n'enregistrez pas, il ne verra pas que le changement est de
pouvoir continuer et pousser. Il existe plusieurs
autres éléments que vous pouvez réellement ajouter lorsque vous configurez l'
image de votre application à partir de ce moment. Ainsi, si vous souhaitez
avoir plusieurs balises, vous pouvez réellement voir les balises d'une image de
conteneur. Remarquez que le S est
différent de la bascule. Vous pouvez également spécifier
différents noms de version l'aide de techniques de contrôle de
version alphanumériques et sémantiques. Et vous voudrez simplement
utiliser un point-virgule pour séparer chaque balise de version. Vous pouvez également ajouter un groupe d'éléments dans lequel vous pouvez ajouter des métadonnées supplémentaires. Vous pouvez donc configurer les ports de
conteneur que vous souhaitez attribuer à ce conteneur
une fois l'image créée. Vous pouvez également créer une variable d'
environnement de conteneur. Et cela, nous l'avons déjà
vu, en particulier lors de la configuration notre conteneur SQL Server où nous avons dû accepter
le contrat de licence. Nous allons donc simplement
créer cette variable. Ainsi, chaque fois que le
conteneur tourne, cette valeur variable
est disponible. Ici, où il se trouve dans l'
enregistreur, la verbosité me permet de tracer. Cela signifie que ce conteneur
est censé autant d'informations générées par notre dotnet
Core up, d'accord, et nous savons que les core
ups peuvent être un peu bavards, donc il devrait
cracher tout
cela sur la console du conteneur. Un autre exemple de variable d'
environnement que vous souhaiterez
peut-être définir serait une variable
pour l' environnement ASP NET Core. Donc, ici, lorsque nous l'
exécuterons localement, le
développement se fera en tant que variable d'
environnement. Cependant, lorsque nous publions
et publions la
configuration, cette variable est
considérée comme production. Nous pourrions en fait remplacer ce paramètre
par défaut et voir quand
vous vous trouvez dans ce conteneur Je veux que cette
variable d'environnement soit le développement ou le QE, le
staging ou la production,
etc. C'est ainsi que vous pouvez
envisager l'utilisation de variables d'
environnement. Vous pouvez également ajouter des étiquettes
et des étiquettes pour faciliter
les métadonnées et la liste
lorsqu'elles se trouvent dans le registre. Nous pouvons également spécifier
le registre ici, mais nous n'y sommes pas encore tout
à fait prêts. fois tout cela fait, je peux faire un autre effort et créer cette image
ou la mettre à jour. Il s'agit donc encore une fois d'
images et non de conteneurs. Maintenant, je veux
réellement exécuter mon image pour m'assurer qu'
elle existe. Je peux passer
à l'interface utilisateur la plus sombre, descendre aux images. Et puis vous verrez
ici que vous avez toutes les versions
des images que vous auriez publiées
devraient se trouver ici. Vous voyez donc ici que c'est
1,0 point, 0,1, 0,0, 0,1. Et si je sélectionne l'une ou l'autre, vous verrez cette
section intitulée couches, où se trouvent toutes des lignes, les différentes étapes à
suivre pour
finalement créer le conteneur de cette application. Si je passe aux images, vous verrez qu'il utilise
l' image DBN parce que
j'ai dit que je voulais Linux et qu'il utilise l'
image que j'ai créée. Donc, pour exécuter cela, nous pouvons en fait cliquer sur
l'image, puis cliquer sur Exécuter. En fait, je n'aime pas
faire ça, non ? En fait, je préfère
utiliser la ligne de commande. Maintenant, à côté d'elle, vous
verrez tirer et pousser le moyeu. C'est donc notre image locale, il n'y a
donc rien à redire. Mais si nous faisons un sondage, cela signifie que vous obtiendrez la
version mise à jour de cette image, surtout si elle est
censée être la plus récente. Comme vous l'avez vu, nous avons pu mettre à jour
l'image avec le même tag. Donc, s'il y a des mises à jour
sur cette version, nous pouvons toujours la récupérer et
elle fera une mise à jour. Nous pouvons également transférer le hub, ce
qui signifie que c'est ici que
nous allons effectuer le transfert de notre référentiel local
vers Docker Hub. Je
vous aurais déjà montré, ouah, qu'au moins lorsque l'IVR continue
à pousser le hub, vous pouvez voir votre propre
conteneur dans le hub et le remettre vers le bas sur n'importe quelle autre machine selon vos
besoins et commencer à travailler. Il est donc facile de
commémorer votre conteneur une
fois que vous l'avez créé. Allons-y et gérons
ce nouveau conteneur. Donc, ce que je vais faire, c'est lancer une fenêtre de terminal et
agrandir celle-ci. Je m'excuse donc si l'utilisation de celui dans Visual Studio vous
fait mal aux yeux. Ce que j'espère savoir. J'utilise donc une fenêtre de terminal. J'ai déjà consulté le répertoire
où se trouve la démo de l'API de
notre
outil de microservices. Et ce que je vais faire ici, c'est exécuter une commande qui
dit docker run. Nous avons donc déjà vu cette commande docker
run, n'est-ce pas ? Je vais spécifier Dash, IT, spécifier un port. Je vais donc dire
que je veux qu'il fonctionne. Sur le port 80. 80 et cela devrait aboutir au port
84, trafic jaune. Je ne veux
rien compliquer et utiliser 443. Ensuite, je vais spécifier
le nom de l'image. Donc, outil de tiret de microservice, et je peux spécifier la
cible si je le souhaite ou non. Alors laissez-moi
poursuivre et appuyer sur Entrée. Voyons ce qui va se passer. Vous pouvez donc voir comment trouver
une image avec les dernières. Il est donc très important
que vous définissiez la dernière balise sur tout ce
qui
doit être extrait par défaut. Permettez-moi donc
de spécifier cette balise, qui est 1.0, 0.1, puis réessayez. Et cette fois, il va
en fait générer
des journaux qui ressemblent à des journaux qui ressemblent journaux d'applications
asp.net Core. Que se passera-t-il si j'essaie
d'accéder à l'application ? Nous avons donc dit que l'
application devait être active au port 80, 80. Donc, quand j'ouvre
un navigateur et que j'accède au port hôte
local 80, 80. Ensuite, j'ai ajouté des prévisions
météorologiques, qui sont le point
final de cette API. Nous constatons que nous sommes
en train de récupérer notre API. Et nous verrons
également que nous avons un petit message à venir à propos la redirection HTTPS,
c'est bien pour le moment. Si nous regardons dans l'interface utilisateur plus sombre, nous
verrons qu'un nouveau
conteneur est également en cours d'exécution. Et celui-ci est, je ne
sais pas quel
est ce nom, mais encore une fois, nous aurions pu le
spécifier dans l'exécution de Docker si nous le voulions. Si je clique dessus, vous verrez qu'il
crache également des journaux par ici. Vous pouvez donc regarder les
journaux depuis la console, vous pouvez regarder les
journaux à partir d'ici. Et en fait, la
raison pour laquelle il est diffusé sur la console
qui l'a lancé. Permettez-moi d'arrêter cela et de
recommencer la commande d'exécution. La raison pour laquelle il a pris
le contrôle de la console est que nous
n'avons pas spécifié Dash D, ce qui signifie que nous voulons qu'
il s'
exécute en tant que démon en
arrière-plan ici. Ça l'est, ça libère la console. Très bien, voici une autre
petite information que vous pouvez utiliser pour libérer la console lorsque vous souhaitez exécuter
votre conteneur Docker, mais que vous ne voulez pas qu'il
prenne le dessus sur la console. Le conteneur Docker fonctionne
donc à nouveau. Je n'ai eu qu'à
descendre et à rentrer. Et vous verrez qu'il
fonctionne à nouveau. Et nous pouvons voir la console à partir d' ici sans prendre le
contrôle de notre console locale. Vous voyez maintenant comment
conteneuriser votre
application Dotnet Core à l'aide vos commandes Dotnet CLI
et de certaines configurations. Lisez la documentation à laquelle
vous pouvez jouer et
vous pouvez configurer différentes configurations
qui vous conviennent. Mais je vous laisse le soin de le faire. Maintenant, à notre retour,
nous verrons comment utiliser docker-compose pour gérer l'orchestration de plusieurs applications
conteneurisées.
7. Orchestration avec dresser: Nous avons donc déjà une idée de ce qu'est l'orchestration de conteneurs. L'orchestration de conteneurs signifie
essentiellement que nous disposons plusieurs conteneurs et que
nous devons être en mesure orchestrer le début des fêtes de fin d'année. Pourquoi commencent-ils ? Si, si l'un dépend de l'autre, lequel commence en premier, etc. Il y a
donc plusieurs choses
que nous devons configurer
pour nos conteneurs avant que
le mot ne commence réellement. Donc, si j'ai, exemple, une
application de microservices, et que tous ces microservices existent dans leurs propres conteneurs. Mais pour que l'application fonctionne, toutes ces applications doivent être opérationnelles simultanément. Ensuite, nous voudrions nous
assurer de disposer d'une méthode très reproductible les faire
fonctionner tous en même temps. C'est là qu'intervient Docker
Compose. Je vais donc simplement ajouter des supports plus sombres à
notre deuxième API. Et simplement
en cliquant avec le bouton droit de la souris et en suivant l'assistant, bien sûr ,
vous savez, pour le faire également dans
Visual Studio Code. Mais maintenant, nous avons un fichier
Docker existant dans ces deux applications. Maintenant, lorsque je clique à nouveau avec le bouton droit de la souris, je peux ajouter des supports d'
orchestration de conteneurs. Donc, quand je clique
dessus, il me demande :
OK, quel orchestrateur
dois-je utiliser ? Et par défaut, j'y aurai
Docker Compose. Je vais donc simplement
continuer et cliquer sur OK. Confirmez que je souhaite
utiliser le système d'exploitation Linux. Et cela va générer un nouveau projet avec
de nouveaux fichiers. Le premier fichier ici
est un ignore plus sombre. À l'instar de notre fichier
gitignore, il y a certaines
choses que nous n'avons pas nécessairement besoin d'
apporter avec le
conteneur et tout le reste. Il s'agit donc simplement de dire d'
ignorer tout cela
et de compiler
tout le reste. Nous avons également les
paramètres de pelouse que JSON, ce qui nous donne un Docker Compose lancé assis AUC, ici. Maintenant, elle prend le dessus.
Nous pouvons simplement dire docker-compose et l'exécuter une fois ici dans Visual Studio. Donc, avec cela, nous pouvons simplement faire tourner tout ce que dit le fichier
de composition Docker. Non ou Docker. Le fichier de
composition Docker comporte deux parties. Nous avons le trait d'union plus foncé pour composer et nous
avons la substitution. Ou le remplacement nous permet de spécifier certains paramètres que nous
voulons pour chaque conteneur. Alors, laissez-moi d'abord
partir du fichier principal. Ici, je vois que je le
ferai, la version a été définie. Je ne veux pas changer ça. Et puis nous avons une
section pour les services. Et puis, sous la rubrique services, nous avons notre premier service
qui est le microservice, un service que nous avions spécifié. Nous souhaitons ajouter l'orchestration
et la prise en charge de. Il va donc dire, eh bien, quand je créerai ce conteneur, j'appellerai
l'image quel
que soit le nom généré, en mettant ce nom
par un trait d'union. Ensuite, je vais bien construire
en utilisant le contexte, où que se trouve le projet et où que se trouve le fichier Docker ou les
instructions de configuration sur la
façon dont ce conteneur doit être généré existent dans le fichier
Docker de notre projet. Ainsi, pour autant d'applications que
vous avez besoin de lancer en
même temps
lors du développement. Vous pouvez ajouter une orchestration
et un support. Je peux donc également ajouter l'
orchestration et le
support au deuxième
microservice et au troisième
n au n. Donc, si je recommence et que je
spécifie les mêmes paramètres, vous
verrez que j'ai maintenant un deuxième
microservice dans ce fichier. Agréable et facile. Donc, si je passe
au
fichier de composition Docker et qu'il s'agrandit parce que maintenant nous
avons que maintenant nous
avons deux services différents et
autant de services que vous en avez, vous avez peut-être des remplacements R-naught. Mais ici, nous précisons
que l'environnement doit
être le développement. Nous pouvons toujours modifier
cela en fonction de nos besoins. Donc, pendant que nous sommes dans Visual
Studio, bien sûr, cette
variable d'environnement devra
certainement être en cours de développement. Nous pouvons spécifier que nous
voulons des ports HTTPS et HTTP. Nous y voilà. Ensuite, nous pouvons spécifier les volumes. Ainsi, un volume en orange plus foncé, la conteneurisation est
essentiellement une ère de stockage et de persistance. Ainsi, lorsque le conteneur
est en cours d'exécution, nous ne voulons pas
perdre les données. Lorsque nous avons démarré
le conteneur, il devrait se souvenir du
dernier endroit où il se trouvait. C'est donc particulièrement
important pour les conteneurs
de base de données et les conteneurs d'
esquisse prêts à l'emploi, etc. Ainsi, lorsque
nous parlons de volumes , nous disons simplement
que nous voulons stocker les secrets de l'utilisateur. Nous voulons également stocker certaines autres
configurations, d'accord ? Quelles que soient ces
configurations, veuillez les conserver même lorsqu'
un conteneur n'est pas en cours d'exécution. Maintenant que nous avons
un aperçu rapide de ce à quoi ressemble réellement
notre conteneurisation ou Docker
Compose, ou Docker Compose
and override fichiers. Allons-y et
voyons ce qui se passe lorsque nous exécutons Docker Compose. Donc je vais juste appuyer sur Run. Et dans notre navigateur, nous avons notre premier microservice en cours d'exécution. Aujourd'hui, le premier microservice a été créé avec le support de Swagger. Nous voyons comment nous pouvons
atteindre ce point final. Mais si je reviens
à Visual Studio, vous remarquerez que dans la section consacrée
aux conteneurs, vous verrez que j'ai le
microservice One Container, donc j'en ai un
existant pour celui-ci. Il s'agit donc de créer un
tout nouveau conteneur basé sur le docker compose. Et il crée un conteneur pour le second microservice. Et juste en
cliquant dessus une fois, il a pu lancer
ces deux services qui
peuvent ou non dépendre l'un de l'autre. Si je regarde dans l'interface utilisateur plus sombre, vous verrez qu' une nouvelle
section Docker Compose apparaît. Et cette section Docker
Compose contient les deux conteneurs pour
les microservices. Il dispose également de différents
ports pour chacun d'entre eux. Je peux donc facilement accéder à
l'un ou l'autre. Et je peux les arrêter tous
d'un seul coup. J'aurais également pu, j'aurais
probablement dû l'
arrêter depuis Visual
Studio. Maintenant que nous comprenons comment fonctionnent Docker Compose et
son orchestration. Et il y a un autre
niveau où nous introduirons
Kubernetes 0s, qui fait bien plus que
simplement faire tourner des conteneurs. Mais nous y reviendrons
brièvement plus tard. Dans la leçon suivante, nous
allons passer à Microsoft Azure
et créer notre service Container
Registry. Ensuite, regardez comment nous pouvons transférer nos conteneurs vers ce registre.
8. Registre des conteneurs Azure: Très bien, revenons à
notre portail et nous
allons nous
lancer notre portail et nous
allons nous dans la
recherche du registre des conteneurs. Il s'agit donc d'un conteneur de recherche. Et nous voulons des registres. Et nous allons créer
notre propre registre de conteneurs. Donc, comme d'habitude, nous
allons remplir ce formulaire. Je le place donc dans le groupe de ressources
habituel. Je lui ai donné un nom. Et notez qu'il a des règles de dénomination très
strictes. Donc, les tirets, je ne suis pas une charge ou les
caractères spéciaux ne sont pas autorisés. Donc j'appelle le mien,
ce n'est pas un cours ACR. Et en choisissant l'
emplacement qui me convient le mieux, et j'utilise le biais de base. Cela coûtera donc un
peu d'argent. Soyez donc conscient de cela. Alors allons-y,
révisons et créons. Une fois cela fait, nous pouvons
passer à notre ressource. Nous avons maintenant le tableau de bord
habituel qui nous indique la
quantité d'espace de stockage
dont nous disposons et nous indique la
quantité d'espace de stockage
dont nous disposons la quantité utilisée. Nous avons même une
adresse URL publique vers notre registre. N'oubliez donc pas que même s'il s'agit d'une URL publique et que les
registres sont privés, que vous pouvez utiliser Microsoft comme vôtre, gérer les utilisateurs et tout ce que vous utilisez dans
votre organisation, vous pouvez ajouter votre propre sécurité à votre registre privé
pour vous assurer que les développeurs peuvent extraire, et
corriger les
images des conteneurs en conséquence. Nous disposons également de référentiels
auxquels nous pouvons connecter nos outils pour pouvoir
les gérer, les extraire et les envoyer. Donc, si je passe aux clés d'accès, je pourrai me connecter
en tant qu'utilisateur administrateur. Voici donc un nom de registre qui correspond
au serveur de connexion et qui utilise
les informations d'identification de l'utilisateur administrateur. Maintenant que j'ai accès au nom d'utilisateur et
au mot de passe au niveau administrateur, je peux lancer mon terminal. Et je vais
lancer une connexion Docker, suivie du nom de l'adresse de
notre serveur de connexion, qui est, dans mon
cas, est-ce un cheval, point
ECR comme votre CR ? Je vais donc continuer
et appuyer sur Entrée. Ensuite, il va
me demander le nom d'utilisateur. Je vais donc simplement copier
et coller cette partie. Et puis le mot de passe, que je vais bien sûr simplement
copier depuis le portail en utilisant le terminal
et en appuyant sur Entrée. Et puis je vais voir,
Logan a réussi. Maintenant, j'ai juste effacé l'
écran pour que nous puissions avoir une nouvelle page. Mais une alternative à
l'utilisation du login docker
serait d'utiliser la
commande bash is a login. Une fois que vous l'aurez fait, cela vous
permettra de passer à zéro. Authentification auprès de Microsoft sous forme zéros et de uns, vous êtes
authentifié. Vous pouvez ensuite voir s'il s'
agit d'une connexion ACR, puis spécifier le nom du registre auquel
vous vous connectez, ce qui serait « grossier » ? Et vous n'avez pas besoin d'ouvrir
le serveur de connexion complet, il vous suffit de dire
le nom du registre et
cela vous connectera tout de même au
registre. Ce sont donc deux façons
dont vous pouvez réellement procéder et vous authentifier. Maintenant, voyons comment déplacer
l'image. Je vais donc utiliser
l'image docker pour notre outil de microservice uniquement parce que son nom est plus court Il est donc plus facile d'
utiliser ce nom. Très bien, donc le
microservice Dash Two, c'est ce
que nous allons pour
faire revivre l'histoire. Nous allons donc
commencer par cette balise docker de commande. Ensuite, je suis allé
préciser le nom et la
version correspondante parce que nous n'avons pas parlé d'élitiste. Je ne fais donc que spécifier
la version ici. Et je l'étiquette avec un alias relatif à l'adresse de registre à
laquelle je veux qu'il soit trouvé. Très bien, alors qu'est-ce que cela signifie ? Cela signifie que je prends cette image locale
et que je vais l'
envoyer à cette adresse
dans ce référentiel, et elle devrait s'appeler ainsi. Désormais, en omettant
de spécifier un tag, celui-ci sera automatiquement
marqué comme étant le plus récent. Donc, bien sûr, si je
voulais conserver la même version, je peux simplement
spécifier la version en conséquence. Eh bien, je suis parti laisser
la version de cet entonnoir. Donc, lorsque je fais ce
tag, j'appuie sur Entrée. La deuxième étape
serait de faire un effort. Je voulais donc dire Docker push. Ensuite, je vais envoyer l' image
du
conteneur avec alias nul. Ça va ? Et puis cela va à nouveau se connecter
à notre registre. Il va utiliser la balise
par défaut la plus récente et l'envoyer à cette adresse. Donc, cette barre oblique de registre, c'est ce que nous appellerons un
référentiel et ce nom. Donc, une fois que cela sera terminé, si je retourne
sur le portail et que je regarde dans les référentiels, je ne verrai
pas que c'est notre référentiel. Et quand je clique dessus, je vois que j'
ai le dernier
tag associé à cette image. Très bien, et à partir de là, je peux faire un
sondage si je le
souhaite et le retirer
du registre à volonté. C'est un bon moyen de
conserver
vos applications
conteneurisées et de les conserver dans un registre afin que les
développeurs puissent les récupérer
lorsqu'elles sont prêtes. Et lorsque vous avez
une équipe qui alterne et que vous avez des
configurations environnementales complexes, c'est très,
très important et facile à utiliser, car l'équipe peut alors
simplement extraire
ces images et faire fonctionner
l'application sur son environnement
avec une configuration minimale. Donc, si je copie ceci et que je fais une extraction dans le docker juste après, je vais simplement relancer
le terminal et coller That's a dark pool
. Il est
extrait directement du référentiel avec le
tag latest et j'appuie sur Entrée. Ensuite, vous pouvez accéder
à la liste des images dans l'
interface utilisateur plus sombre de Docker Desktop, et vous verrez cette image
ici disponible pour utilisation. Très bien, je peux donc simplement cliquer dessus
et lancer
l' application ou utiliser ma commande docker run
que je préfère utiliser, pour commencer à l'utiliser. Maintenant, une autre façon de voir toutes les images que
vous avez est d' utiliser la commande docker images. Et cela
listera toutes les images actuellement disponibles, ainsi que leurs identifiants. Donc, si je voulais
supprimer une image, disons que je voulais supprimer la version 1.0 de mon ordinateur. Je peux prendre cette valeur d'identification. Ensuite, je peux voir un RMA plus sombre, qui est l'abréviation de supprimer
l'image
et coller dans cet identifiant, puis il va la supprimer pour moi. De même, si j'
utilise Docker Desktop, je peux toujours accéder à l'
image et appuyer sur le bouton. Vous voyez donc que vous pouvez
trouver un équilibre entre
les éléments de l'interface utilisateur et les commandes. Mais au moins maintenant, nous
savons comment transférer notre image dans notre registre
sur Microsoft Azure. Ensuite, nous pouvons faire
autant de pools que nécessaire sur ce registre. Encore une fois, c'est
excellent pour l'organisation. Les quatre conteneurs pour
différentes applications. Notre équipe de développement aura peut-être besoin d'y accéder au
fur et à mesure.
9. Instances de conteneur Azure: Revenons maintenant à notre portail et passons à notre service
de registre des conteneurs. Nous avons maintenant l'idée de provisionner
réellement l'
image en tant que conteneur. Nous l'avons fait localement, faisons-le dans le Cloud. Il existe maintenant plusieurs moyens. La méthode la plus simple que je vais vous montrer
dans cette leçon est d' utiliser les instances comme
conteneur. Cela nous permet donc de
provisionner des conteneurs la volée sur la base d'une image et de
les héberger dans le cloud. Donc, si je passe
aux référentiels et regarde notre
image publiée ici, que je
regarde notre
image publiée ici,
vous voyez que vous avez la
possibilité d'accéder à la balise, la version spécifique
que vous souhaitez. Ensuite, vous pouvez voir instances d'
exécution sont
déployées sur l'application Web. Nous allons donc faire les deux. Commençons par l'instance
de Ron. Ici. Cela va lancer la lame de création de
l'instance Container. Je vais donc simplement appeler
ce microservice Dash Two parce que c'est le
seul que nous ayons mis au clair. Microservice Dash Two, nous allons tout
laisser par défaut, utiliser le même groupe de ressources,
l'emplacement approprié. Nous pouvons spécifier les
ressources que nous voulons pour ce conteneur et nous pouvons spécifier que nous voulons une adresse IP
publique. Je vais dire oui. Et je vais maintenant le laisser
diffuser sur un port 84. Et
allons-y et appuyons sur Créer. Et une fois ce
processus de création terminé, nous pouvons passer
à la ressource. À partir de là notre application de microservice provisionnée dans
Container Instances. Nous pouvons donc redémarrer, arrêter, supprimer ce conteneur. Et nous verrons ici que
nous avons un conteneur en
cours d'exécution dans le service Container
Instances et que nous avons une adresse IP publique. Vous pouvez maintenant obtenir un nom
complet, mais vous devez généralement définir cette valeur lorsque
vous suivez les configuration de
l'
assistant Porto étapes normales de configuration de
l'
assistant Porto, où vous
devez tout remplir, les bases et la
mise en réseau, etc., etc. Ou si vous utilisez la commande. Pour l'instant, nous avons
choisi la voie la plus facile et nous pouvons revenir en arrière et regarder à
quoi ressemble le sorcier. Mais pour l'instant, je
vais simplement accéder à l'API diploïde via cette
adresse IP publique. Donc, si j'ouvre un
nouvel onglet et que je tape adresse IP publique
et
que je tape simplement
ce point de terminaison des prévisions météorologiques. Puisque c'est la seule
chose qui existe. Permettez-moi de corriger mon orthographe et de réessayer. Nous y voilà. Nous arrivons donc ici à l'API diploïde à l'intérieur
de ce conteneur. Et ce conteneur s'exécute sur notre
service Container Instance dans le cloud. Bien entendu, si nous ajoutons un nom de domaine complet
, nous serons en mesure de le
chauffer via cette adresse. Maintenant, il ne vous reste plus qu'à investir
un peu d'argent et passez à l'assistant pour créer
une instance de conteneur. Si vous le regardez,
remplissez les informations de base, nous savons déjà tout cela. Nous avons plusieurs options biaisées, mais la disponibilité
dépend de notre région. Vous pouvez donc en savoir plus à
ce sujet pour votre propre raison. Si vous ne voyez pas
ce que vous voulez. Nous pouvons choisir la source de notre image. Nous pouvons avoir les
images de démarrage rapide où nous pouvons simplement choisir l'un
de ces exemples. Ou nous pouvons
choisir dans notre registre, ce que nous avons essentiellement fait. Nous pourrions donc simplement rechercher le registre approprié,
puis l'image appropriée, puis la
version appropriée que nous souhaitons. Nous pouvons modifier la taille
du contenant. Ensuite, nous pouvons
examiner d'autres registres, qu'
il s'agisse de registres publics
ou privés et fournir les
informations d'identification en conséquence. Maintenant, bien sûr, il est probablement préférable de tout avoir dans Azure et de ne pas avoir certaines choses sur Docker Hub
et d'autres sur zéro. Bien entendu, en fonction de vos genoux, votre architecture
et de votre organisation, vous voulez prendre les
meilleures décisions possibles. Mais comme il s'agit d'un
cours réservé aux développeurs, nous allons
tout orienter vers maintien de tout ce que
Microsoft fait en Europe. Maintenant, pour la partie réseau, nous pouvons choisir une adresse IP publique, privée ou sans adresse IP. Nous pouvons également choisir cette étiquette de
domaine, ce niveau DNS. Ça va ? L'étiquette DNS de
l'adresse IP publique
fera donc partie d'un nom de domaine
complet ou
d' un FQDN pouvant être utilisé pour
accéder au conteneur. C'était donc la pièce
manquante avec l'autre méthode que nous avons utilisée pour créer cet ACI ou ce
conteneur pour notre image. Si nous passons au niveau avancé, nous constatons que nous avons ici une certaine quantité d'oxygène d'orchestration. Nous pouvons donc définir notre politique de
redémarrage disant qu'en cas de
panne ou si quelque chose se produit, dois-je redémarrer
le conteneur ? Je peux dire que si quelque chose arrive, redémarrages signifient toujours qu'il y
aura un redémarrage périodique. Cela ne veut jamais dire qu'il
fonctionnera tant que je ne l'arrêterai pas. Et puis, bien sûr, après avoir
mis tout cela, nous pouvons continuer
et créer des notes. Vous pouvez également spécifier vos variables d'environnement pour ce conteneur particulier
que vous faites tourner. C'est donc l'ensemble des instances de
conteneur qui fonctionnent dans nos instances de
conteneur Azure. Maintenant, bien sûr, il
y avait une option qui nous aurait permis de
le déployer dans une application Web. Donc, à notre retour,
nous envisagerons un service d'applications Web
sans conteneurs.
10. Publier des exemples de conteneur Azure: Dans cette leçon, nous
allons explorer les nuances de
la création d' un service conteneurisé en tant
que Web App Service. Nous n'
allons pas vraiment le créer. Nous allons simplement
examiner certains
des différents paramètres dont
nous devons être conscients. Ainsi, lorsque je clique sur Créer, nous passons aux bases. Bien entendu, nous savons que nous complétons les informations de base
avec notre groupe de ressources. Je vais donner
ce nom précis. Je vais juste dire
microservice Dash Two Dash. Quelque chose d'unique que personne d'autre sur
Internet ne possède, j'en suis sûr. Et ensuite, comment
allons-nous publier ? Donc, jusqu'à présent, nous avons
examiné le code. Et si j'accède au conteneur
Docker ? Donc, si je clique sur le conteneur Docker et que je remarque qu'il me demandera quel système
d'exploitation
nous avons utilisé jusqu'à présent dans les notes, donc pas besoin de le modifier. Je vais utiliser la meilleure
région en fonction de mes besoins. Ensuite, je vais spécifier
une nouvelle usine de service. Notez donc que je ne peux pas utiliser le plan Code Service car le modèle d'hébergement est
différent lorsqu'il fait froid Nous pouvons
alors réutiliser le
plan de service existant que nous avions précédemment dans ce cours. Cependant, comme je choisis un conteneur
Docker, je dois en créer un nouveau et je ne suis pas du genre à opter pour
le prix supérieur. Je peux toujours obtenir
le prix gratuit, donc je vais simplement choisir celui-ci. Et puis, si nous passons
à la baignoire la plus foncée, nous avons plusieurs
options. Je peux choisir un seul conteneur
plutôt qu'un Docker Compose. Et remarquez que c'est
toujours en avant-première. Donc, si je choisis un seul
conteneur qui me
permet de spécifier la source de l'image, dois-je l'utiliser à
partir de Docker Hub, un autre registre privé Donc, bande entière plus sombre, ECR ou zéro
Container Registry. Ce ne sont pas les deux
seuls registres. Et parfois, vous pouvez
finir par provisionner votre propre registre dans votre
propre environnement, n'est-ce pas ? Ce sont donc toutes des options. Mais si je choisis mon registre de
conteneurs Azure, je peux ensuite
sélectionner le registre, sélectionner l'image et sa balise. Je peux définir une
commande de démarrage si je le souhaite. Passez à la mise en réseau. Je pense que presque tout le
reste reste pareil. Tout ce à
quoi vous êtes
déjà habitué familier en
matière d'applications Web Azure. L'utilisation de la charge de travail
la plus sombre pour Azure Web App Service serait
très similaire dans la mesure où non, nous utilisons des conteneurs Docker. Et bien entendu, lorsqu'
il s'agit de mettre à jour les balises développer et de déployer en
continu, toutes ces options sont à notre disposition une fois que nous les
avons mises en place. Toutefois, pour des raisons
de temps et d'argent,
je ne vais pas poursuivre. Bien sûr, vous pouvez continuer
et passer à un niveau gratuit. Mais n'oubliez pas que le registre de conteneurs et les instances de
conteneurs sont payants. Vous pouvez donc expérimenter
et obtenir toutes les informations dont
vous avez besoin en conséquence. Je vais toutefois m'arrêter là. Donc, à notre retour, nous allons jeter
un bref coup d'œil à Kubernetes 0, juste une théorie. Encore une fois, il ne s'agit pas d'un cours approfondi sur
Docker et l'orchestration. Il y a beaucoup à apprendre. Je voulais juste
vous donner une idée de la façon dont les conteneurs fonctionnent. Nous pouvons placer nos
images sur Azure et créer des instances d'applications
en fonction de ces images. Ainsi, à notre retour,
nous examinerons certaines théories concernant
Kubernetes 0 et comprendrons comment cela
fonctionne dans le contexte actuel.
11. Vue d'ensemble du service Azure Kubernetes: Très bien, les gars,
donc dans cette leçon nous allons simplement
passer en revue certaines des bases de
Kubernetes, ce n'est qu'une théorie. Nous n'allons pas
entrer dans Kubernetes, c' est un tout autre jeu de balle. Nous n'allons donc pas entrer dans les détails
ni le discours, mais je veux que vous compreniez
pourquoi vous entendez généralement parler de Kubernetes
chaque fois que vous entendez parler de dark et de conteneurisation. Kubernetes propose un mécanisme de planification et d'
orchestration
fiable mécanisme de planification et d'
orchestration pour les charges de travail des
applications tolérantes aux pannes. C'est un tas de mots
importants pour dire que cela nous
permet de gérer le provisionnement de
conteneurs entiers,
le provisionnement redémarrant en
fonction de différents indicateurs. Nous pouvons donc réellement
utiliser Kubernetes pour définir différentes règles pour gérer ou orchestrer
nos conteneurs. Encore une fois, pour les applications
cloud natives ou
basées sur des microservices, cela est très important
car
plusieurs éléments
mobiles doivent être sains probablement
évolutifs individuellement. En utilisant Kubernetes, nous
pouvons donc orchestrer tout cela. Nous pouvons dire à l'un des
services que nous avons besoin de trois
conteneurs par jour. Un autre en a besoin,
un autre n'a jamais besoin d'évoluer. Tout cela
est possible avec Kubernetes. Pour ce faire, nous utilisons une approche
déclarative, qui nous permet d'utiliser cette approche déclarative
pour gérer les déploiements. Et il est soutenu par un ensemble robuste d'API pour répondre à nos besoins
de gestion. Il permet de gérer
les conteneurs pour les organiser, les
ajouter, les supprimer ou les mettre à jour jusqu'à plusieurs
conteneurs à la fois. Désormais, lorsque nous utilisons
Kubernetes, nous pouvons tâches utiles
telles que l'autoréparation, la mise à
l'échelle, la
gestion du réseau, le stockage, mises à jour des
conteneurs et la gestion des
secrets. La raison pour laquelle cette liste est
importante est que nous avons constaté que certains de ces défis étaient surmontés
lorsque
nous examinions la conteneurisation. Très bien. Nous avons constaté qu'il fallait faire
très attention à l' adresse
IP ou plutôt numéro de
port attribué
à chaque conteneur. Nous avons dû examiner dans quelle mesure nous n'avions pas réussi à le faire dans le cadre de
ces
exercices basés sur
l'architecture des microservices. Parfois,
les services ont besoin de communiquer entre eux Nous
devons
donc absolument savoir comment ils vont se mettre
en réseau. Comment allons-nous gérer le
stockage ou allons-nous
mettre à jour le conteneur lorsque cette
image de conteneur sera mise à jour ? Comment redémarrer le conteneur pour gérer cette nouvelle
version de l'image ? Donc, si quelque chose
se passe, si quelque chose se produit, si
nous devions redémarrer, nous avons constaté que nous pouvions
y parvenir en
utilisant les
instances de conteneur en ligne. Et bien sûr, si nous nous
asseyons et que nous payons nous-mêmes, nous y arriverons probablement. Mais pourquoi nous
disons-nous que lorsque nous pouvons utiliser Kubernetes, c'est automatisé ? Maintenant, il s'agit à
nouveau d'un commentaire tiré de la documentation
Microsoft. Il s'agit d'un bref aperçu de la façon dont notre Kubernetes est
ce que nous appellerons un cluster. Vous pouvez également voir les experts sur les principaux clusters informatiques à quoi ressemble. À partir de là, nous avons
le plan de contrôle. C'est là que se situerait toute notre logique
d'orchestration. Et puis nous avons des cubelets
ou des instances clés. Et chacun d'entre eux
possède un contenant. Il est considéré comme un nœud. Et il dispose d'un délai d'exécution pour
que
le conteneur et le proxy communiquent
avec le plan de contrôle. Ensuite, autant de conteneurs
que possible, Kubernetes les orchestrera
et les gérera à
nouveau. Maintenant, bien sûr, si nous avons Kubernetes, nous aurons un
service Azure Kubernetes ou AKS en abrégé. Cela nous offre donc un moyen
rapide de développer et déployer des
applications conteneurisées en un rien de temps. Nous avons donc vu à quel point
c'était rapide et facile avec l'ACR et l'ACI. Eh bien, c'est encore plus facile et plus robuste si nous ajoutons AKS au mélange. Et cela nous donne toute
la puissance de l' orchestration
Kubernetes, soutenue par
Microsoft en tant qu'
infrastructure. Il s'agit d'un service payant à l'utilisation. Encore une fois, l'évolutivité
et tous ces éléments sont intégrés à Twine. Ce
service est entièrement géré Nous n'avons
donc pas à nous
soucier des logiciels et
du matériel sous-jacents. , il offre davantage de fonctionnalités d'
orchestration et de gestion que ne le font les ECI
ou Container Instances. Imaginons cela comme
un service de gestion ou extension
de service de gestion
pour notre service ACI. Une fois
de plus, tous ces services peuvent être combinés pour nous
aider à fournir une
application conteneurisée soutenue par une orchestration
et une évolutivité appropriées. Maintenant que nous avons
une idée de
Kubernetes , c'est au moins d'
un point de vue théorique. Revenons à
zéro, nettoyons nos ressources
et voyons comment nous pouvons libérer l'espace et économiser de l'argent.
12. Nettoyage des ressources: Alors que nous approchons de la
fin de cette section, nous voulons nous
assurer de nettoyer nos ressources et de ne pas dépenser plus d'argent que nécessaire pour notre abonnement Azure. Même si vous n'avez pas été en mesure de
suivre certains plants de pois, vous comprenez
au moins les concepts et nous verrons simplement
comment éliminer les ressources. Le moyen le plus simple de
supprimer nos ressources est donc d'accéder à la ressource, bien
sûr, et de cliquer sur Supprimer. Désormais, si vous avez d'autres ressources dans le
même groupe de ressources, vous pouvez toujours simplement
supprimer le groupe
de ressources , ce qui détruirait toutes
les ressources en conséquence. Maintenant, j'ai des
éléments importants dans ce groupe de ressources, donc je ne suis pas disposé
à emprunter cette voie. Au lieu de cela, je vais supprimer
les ressources individuellement. Donc, pour supprimer notre registre de
conteneurs, je vais simplement appuyer sur Supprimer. Êtes-vous sûr de vouloir supprimer ? D'accord, puis cela déclenchera
cette opération de suppression. De même, je
vais passer à l'instance de conteneur pour
l'outil de tiret de microservice. Et je vais également
le supprimer. Je vais également revenir sur une opération précédente au cours de laquelle
nous avons supprimé les images. Les images prennent de la place. Vous pouvez voir si vous tapez dans
la commande docker images, toutes les images que vous avez sur votre ordinateur et leurs tailles
respectives par image. Donc, si vous n'avez pas besoin de l'image, vous pouvez simplement la supprimer. Ça va ? Vous voyez donc ici que l'image SQL
Server est de 1,33 Go. Et puis quelques images
des applications sur lesquelles
nous travaillions. Tous ont
une probabilité totale combinée supérieure à un gigaoctet. Ainsi, pour supprimer une image, vous pouvez simplement double-cliquer
sur cet identifiant d'image et le copier. Ensuite, dans la commande, vous tapez RMI plus foncé, abréviation de Supprimer
l'image, saisissez cet identifiant ,
appuyez sur Entrée, puis
vous allez le supprimer. Vous pourriez donc avoir une terre une fois. Voyons quelle est cette réponse. Une réponse de D11 entre en conflit avec
la possibilité de la supprimer, elle doit être forcée au fur
et à mesure de son utilisation. Donc, si vous devez le forcer, retapons cette commande. Docker est un F fou, puis cela
forcera la suppression. Très bien, c'est donc une autre façon nettoyer certaines
des ressources que vous
auriez probablement évitées au cours de cette section. Concluons donc cette
section du cours.
13. Conclusion: Dans cette section, nous avons donc
découvert la conteneurisation
et le dark. Et nous avons réalisé que Docker
est une technologie qui a, une entreprise qui fournit des technologies et qui a
établi une norme matière de conteneurisation dans
l'ensemble du secteur informatique. Tout en explorant
la conteneurisation et le dark, nous avons examiné comment
conteneuriser un projet .net Core. Nous avons étudié l'utilisation
du fichier Docker. Nous avons envisagé de fournir des ressources de support
supplémentaires et même un certain nombre d' histoires
orales sur
l'utilisation de Docker Compose. Nous avons également examiné
comment déployer nos applications sur Azure
Container Instances et comment télécharger notre image nos images
de conteneur dans un registre. Dans ce cas, nous nous sommes concentrés sur
Azure Container Registry. Mais si vous utilisez
Docker Desktop, il est très facile de pousser le Docker Hub si vous souhaitez
l'utiliser comme registre. Nous avons également fait un bref examen de Kubernetes et de
Container Orchestration et de ce que tout cela signifie. Merci donc d'avoir
parcouru cette section avec moi. Je vous verrai dans le prochain module.