‫Nous avons donc d’abord eu Charles qui a posté son fichier
‫Docker
‫et laissez-moi me laisser remonter l’écran vert afin que nous puissions
‫examiner le fichier Docker.
‫Et bien sûr, la réalité est qu’une fois dans les fichiers du monde réel, tout devient plus compliqué.
‫Droite.
‫Nous apprenons tous dans des cours comme ceux que j’ai suivis et nous apprenons à partir d’articles de blog et de documentation, puis une fois dans
‫le monde réel, cela semble toujours être plus difficile que cela.
‫J'essaie donc toujours d'ajouter plus de complexité aux cours, mais il faut beaucoup de travail pour l'inclure dans les
‫cours, car il faut tenir compte du contexte.
‫Cela concerne beaucoup votre environnement, votre configuration et votre application particulière.
‫Alors j'ai pensé hier soir Hé, pourquoi ne parlons-nous pas de ça dans l'émission demain?
‫Donc, si vous aimez vraiment cela, donnez ceci un coup de pouce.
‫Dites-moi dans le chat ou dans les commentaires que vous souhaitez plus de ces derniers et nous en
‫ferons une chose régulière nous réviserons en fait plus de fichiers Docker et en composons des fichiers et en extrairons quelques-uns des bons trésors.
‫D'accord.
‫Donc, en premier lieu, Charles et on dirait qu'il vient de son propre compte, il a une image P HP Apache.
‫Sur la base de ce nom, je vais simplement supposer que c'est ce que c'est.
‫Et il y a une date et il sait qu'il a une version et une date dans le nom.
‫C’est donc assez courant que vous commenciez à créer vos propres images à partir d’images, vous commencerez à faire des choses
‫comme leur version, à les dater ou à utiliser des idées de validation en elles.
‫Et c’est un moyen de garantir que vous utilisez exactement la même image.
‫Encore une fois, ici, vous n’utilisez pas les dernières technologies au sein d’une configuration de production réelle, vous pouvez toujours les utiliser
‫pour jouer et tester.
‫Mais quand vous allez dans des choses réelles, vous allez toujours vouloir utiliser ces versions réelles.
‫Eh bien c'est Azure HP image Charles dit.
‫OK cool.
‫Et puis il a là une configuration intéressante que je n’ai jamais vue auparavant et je pense savoir
‫pourquoi vous le faites.
‫Donc, dans cette ligne d'exécution, vous créez une application pour obtenir une mise à jour, puis vous dites que si vous ne le faites pas,
‫vous donnez un OU en bash, ce qui signifie que si cela ne réussit pas, faites-le.
‫Et si vous le répétez.
‫Donc, je suppose que vous pouvez être sur un réseau ou à un endroit où vous avez potentiellement un problème courant de devoir avoir
‫des problèmes de mise à jour, ou peut-être que vous avez déjà eu quelques bizarreries où cela a échoué aléatoirement
‫et si vous vient de le faire une deuxième fois, cela fonctionnerait.
‫C'est ce que je suppose que vous faites là.
‫Et c'est une solution efficace à ce problème si c'est ce que c'est, c'est ce que c'est.
‫Sinon, normalement, je ne vois pas ce genre de configuration, ce n’est normalement pas ce que j’y verrais.
‫D'accord.
‫Ensuite, vous exportez et ce n’est qu’un tout petit changement de métadonnées.
‫Donc, ça ne prendra pas grand chose Oh regardez ce que Charles dit
‫à ouais, il dit que c'est une image HP aussi heureuse.
‫Et il a discuté avec le support technique de Azure, qui corrige un bogue.
‫Très cool,
‫je
‫vais changer cela. Voir, changeons
‫les polices de caractères ici pour que ce soit un peu plus facile, oui.
‫Un meilleur look.
‫Ouais.
‫D'accord.
‫Alors, voici une chose intéressante.
‫Donc, vous téléchargez, vous effectuez certains téléchargements et vous installez un paquet qui est normal.
‫Et vous faites également un tas d'applications obtenir obtenir install ici.
‫Par conséquent, à moins que ce soit quelque chose que vous testez et que vous essayiez simplement de comprendre comment
‫fonctionne ce flux de travail, il existe de nombreuses possibilités d'optimisation, en particulier en termes de taille.
‫Et vous avez également une situation ici, nous pouvons vous mettre un peu dans le pétrin.
‫Alors remarquez ici que nous avons une ligne de déroulement séparée qui exécute l’application pour obtenir une mise à jour.
‫Donc, vous n'avez pas cette ligne ici où vous faites toute l'installation.
‫Donc, vous avez cassé toutes ces étapes.
‫Maintenant, si vous commencez à regarder des images officielles, vous remarquerez qu’ils ne le font jamais.
‫Ils ont toujours mis le tout dans une ligne de tir énorme et il y a deux raisons à cela.
‫La principale raison ici est la casse de la caisse.
‫Donc, lorsque vous pensez à l'image que vous créez, il y a de l'argent derrière.
‫Maintenant, si vous utilisez quelque chose comme Jenkins ou un coureur CCD et que vous avez désactivé
‫la mise en cache où elle sera toujours construite à partir de zéro sans mise en cache, alors ce n'est peut-être pas ce problème de ce
‫type mais ce sera certainement un problème si vous construisez localement ou sur
‫un système plusieurs fois.
‫Et c'est ce qui va se passer sur la ligne de tir.
‫Disons que c'est là.
‫D'ACCORD.
‫Et ça ne change jamais.
‫Droite.
‫Donc, la première fois que vous construisez cette image, tout va bien.
‫Disons que vous construisez trois jours plus tard.
‫Cette ligne ne sera pas mise en cache car cette ligne n'a pas changé, rappelez-vous. Sur le docker standard,
‫le contournement du cache de commande de génération standard se produit lorsque vous avez modifié une ligne.
‫Et lorsque vous modifiez cette ligne, tout ce qui se trouve dans cette ligne est réexécuté et chaque ligne suivante.
‫Et ce qui se passe ici, c’est que si vous avez cette file d’alignement ici et que cela ne change jamais,
‫vous ajoutez ensuite un autre paquet dans la ligne d’exécution ou vous modifiez peut-être les versions et vous codez en dur
‫vos versions, ce que vous devriez également faire. devrait coder en dur les versions de tous ces
‫outils et peut-être pas compresser, décompresser et boucler.
‫Mais si votre équipe de sécurité est stricte, elle s’attendra à ce que vous disposiez de versions fiables. C’est une autre chose
‫que vous voudriez faire ici.
‫Mais revenons à ce point.
‫Donc, si vous allez faire ces installations et que vous changez un outil et l'ajoutez ici.
‫Pensez à cela et obtenez une mise à jour qui devait obtenir pour les téléchargements de mise à jour un cache de
‫toutes les métadonnées de tous ces paquets, puis vous installerez ces derniers plus tard et si
‫la deuxième ligne est interrompue en la changeant, elle sera réexécutée.
‫Mais il sera exécuté sur la base de l'ancien cache de votre application pour être mis à jour.
‫Ainsi, avec le temps, vous commencerez à rencontrer des problèmes, car vos paquets installeront toujours ces anciennes
‫versions. Pour ce faire, le meilleur moyen consiste à utiliser toute votre application pour que tout fonctionne correctement.
‫Et ce n'est pas nécessairement lié au téléchargement de ce paquet ici.
‫Ceci est un package personnalisé.
‫Nous en parlerons une minute.
‫Mais quand il s'agit de lignes ici, cette ligne n'aura aucun effet sur
‫la taille car cette ligne doit suivre la même ligne que celle-ci, sinon elle ne fonctionnera pas.
‫Maintenant, tout cela n’est peut-être pas vrai.
‫Si vous avez un autre accord, vous ne réalisez pas plusieurs étapes.
‫Une façon d’éviter le problème de la taille est de procéder à plusieurs états, mais vous ne faites pas l’état et
‫c’est bien.
‫Vous n'êtes pas obligé
‫de faire plusieurs étapes, alors voyons
‫ce qui va se passer ici, c'est que vous recommanderiez de les prendre ici, en prenant tout cela
‫à la perfection, pour que tout soit à la hauteur.
‫Je prendrais cette ligne d’exportation et la placerais au-dessus, c’est-à-dire que je la mettrais simplement ici afin qu’elle soit
‫réglée.
‫Et cela n'a jamais besoin de changer.
‫Et vous n'avez pas à vous en préoccuper au milieu de tout ce que vous voulez faire pour bien faire les choses.
‫Et en général, il est bon que vous ayez tout votre contenu près du sommet, car vous souhaitez que ces dépendances, qui prennent généralement beaucoup
‫de temps à installer, soient au plus haut niveau possible pour ne pas avoir à
‫les réexécuter très souvent. souvent.
‫Mais je recommanderais que vous preniez tout
‫ce matériel ici et que vous le placiez maintenant, vous pouvez le faire ensuite car il s'agit d'un téléchargement et d'une installation manuelle du paquet.
‫Donc, lorsque vous faites
‫cela, vous pouvez faire plusieurs choses.
‫On est ceci.
‫Cette ligne ici va être une couche et cette couche inclura toujours le fichier db même si vous n'en avez
‫pas besoin.
‫Ainsi, lorsque vous nettoyez plus tard, les couches précédentes ne sont pas nettoyées.
‫L’un des problèmes ici est qu’il s’agit d’un fichier téléchargé dans une couche, puis que vous passez à la ligne suivante, qui
‫est une ou la prochaine commande Docker. Je devrais dire que la prochaine commande Docker sera une
‫nouvelle couche.
‫Pensez à cela comme à un élément distinct lorsque vous avez arrêté une ligne ou une commande de menu fixe.
‫Vous ne pouvez pas changer le fait que vous ne pouvez pas revenir en arrière et changer cela.
‫Ainsi, la ligne ou le fichier de commandes et le fichier docker suivants ajouteront simplement des éléments.
‫Maintenant, s'il supprime des fichiers, il va simplement les supprimer dans cette couche.
‫Il contient essentiellement des métadonnées indiquant que le fichier ne doit plus exister ou ressembler à celui-ci, mais que ces fichiers continueront
‫d'exister et que les couches en lecture seule seront désormais lues, car chaque couche
‫au-dessus est désormais en lecture seule et c'est ainsi que ces couches garantissent que ils sont identiques à ce que vous attendez.
‫Aucune couche ne peut donc remonter dans le temps.
‫Donc, c'est ce que vous devez faire, allez voir certaines des images par défaut du docker et allons-y en fait, jetez un coup d'œil à l'une des miennes,
‫car ce sera un
‫peu plus facile à comprendre.
‫Alors oui je ne
‫suis pas sûr.
‫D'ACCORD.
‫Donc, fichier Docker oui il y a un AP Kay mais vous remarquerez ici que tout est dans une ligne, ce
‫qui est un peu un mauvais exemple, mais faisons un hub et regardons Ghost.
‫Regardez donc ce fichier Debian Docker.
‫Tout ici on y va.
‫Ainsi, vous remarquerez que dans cette situation, il télécharge des éléments qu'il traite, puis
‫les supprime en une seule fois.
‫Donc, comme ça, ces fichiers ne restent jamais.
‫Une fois que cette couche est scellée et marquée en lecture seule.
‫Et c’est la clé pour que vos images restent petites.
‫Je parie que, une fois que vous aurez réussi à combiner ces éléments de manière efficace, vous économiserez des centaines de
‫Mo et la taille de votre image.
‫Très bien et l’autre chose ici est que j’ajouterais aussi que sur une seule ligne et une autre chose que je ferais,
‫c’est que vous n’aurez peut-être pas besoin de vous faire peut-être faire une annonce, une annonce téléchargera automatiquement un fichier
‫à partir de l'Internet.
‫Et si vous êtes très curieux de savoir quelle est la différence de copie et d’annonce, notre norme actuelle est que la
‫copie est uniquement destinée à copier des fichiers hors du référentiel dans lequel vous avez raison.
‫Il suffit donc de copier des fichiers et les annonces font la même chose, mais nous avons tendance à vouloir utiliser les
‫annonces uniquement lorsque nous téléchargeons quelque chose sur Internet ou quoi que nous copions et que nous voulions qu'elle soit décompressée ou que le fichier tar soit
‫rempli. raison d'utiliser ad.
‫Mais l’avantage de l’utilisation d’annonce, c’est que vous n’auriez pas besoin de faire appel à des
‫médecins internes, nous allons récupérer ce fichier et le télécharger, mais c’est que lorsque vous faites cette ligne,
‫à la ligne suivante.
‫Ce paquet existera toujours.
‫Ainsi, même si les annonces sont vraiment géniales dans votre cas, car vous téléchargez un package que
‫vous êtes sûr d’installer, vous n’aurez plus besoin de ce package.
‫Je voudrais peut-être simplement mettre les trois lignes dans une ligne de cette façon, à la toute fin, vous pouvez
‫réellement supprimer ce point D. B. classer et économiser de l’espace supplémentaire dans votre événement final.
‫Donc, vous feriez tout cela en une fois.
‫D'accord.
‫Qui aide.
‫Donc, on dirait que vous copiez dans d’autres fichiers très utiles que vous utilisez, copie non ajoutée.
‫Vous faites aussi des travaux de copie, des copies et des certificats.
‫C'est exactement comme ça que je le ferais.
‫Pour optimiser ce résultat, vous pouvez généralement placer tous ces éléments dans une commande
‫d'exécution unique. En principe, sa construction est un peu plus rapide, ce qui vous donnera peut-être une seconde plus
‫rapidement dans votre facture, car chaque ligne doit s'arrêter le conteneur ou créer un nouveau
‫conteneur, montez le reste de l'image et exécutez cette commande, puis enregistrez-la dans une nouvelle image de
‫conteneur, puis démarrez un nouveau conteneur.
‫Droite.
‫Donc, il doit faire beaucoup plus de travail que simplement exécuter trois commandes rapides.
‫Donc, je pourrais juste les avoir en un.
‫Il n’ya aucune économie d’espace ou quoi que ce soit, mais c’est juste une
‫question de trois commandes qui se transformeraient vraiment en une longue commande de shell leur et ouais d’accord ouais.
‫Nous avons les portes.
‫Je ferais probablement la même chose pour ceux-là juste pour l'efficacité en passant.
‫Donc, ici, vous copiez deux lignes de copie différentes, vous pouvez créer cette ligne.
‫Vous pouvez en fait dire copie, puis le chemin d'accès à la TRC, puis le chemin d'accès à cette clé.
‫Kay Kay toi pourquoi et avoir ces deux fichiers et ensuite mettre dans le chemin du répertoire SSL.
‫Donc, tant qu'ils vont tous les deux dans le même répertoire, vous pouvez avoir plusieurs fichiers dans la même
‫ligne de copie, ce qui vous aidera à le rendre un peu plus facile.
‫Moins il y a de lignes, mieux c'est, tant qu'elles ne sont pas trop compliquées.
‫Ouais.
‫Vous avez peut-être aussi des informations standard sur Apache concernant les configurations.
‫Je ne sais pas combien.
‫Ouais.
‫Ce sont en fait ceux-ci sont bons.
‫Je
‫pense que ceux-ci sont bons, ou que vous faites un peu plus de copie des fichiers de configuration dans certains d'entre eux, vous pouvez également
‫considérer qu'il s'agit de fichiers de configuration standard, mais si vous devez les écraser et que
‫vous utilisez un orchestrateur, que vous utilisiez Cuban ou swarm, réalisez que vous pouvez utiliser cette configuration ou dans des communautés appelées config
‫map, vous pouvez utiliser la fonctionnalité de configuration et swarm pour monter ces fichiers au moment de l'exécution, de manière à ne
‫coder aucune configuration de manière exacte.
‫Idéalement, vous ne codez pas de manière stricte SSL dans votre image si vous possédez un protocole SSL personnalisé, car
‫vous souhaitez le stocker dans votre orchestrateur ou dans Docker et le monter et le exécuter, car idéalement, rien
‫de secret ne devrait exister. dans une image lorsque vous enregistrez.
‫J'espère donc que vous allez faire la même chose ici, car vous pourriez combiner ces deux éléments en une seule ligne, vous pouvez
‫combiner certains de ces éléments en une seule ligne. Vous pouvez probablement savoir s'il s'agit de tous les x petits
‫fichiers de ce répertoire que vous pouvez copier. répertoire astérisque dot montant X et ensuite vous pouvez
‫copier tous les quatre dans là c'est avantages et inconvénients à cela parce que si
‫un fichier X extra excel apparaît il peut accidentellement être copié mais cela dépend de comment verbose vous voulez être et comment vous
‫voulez une ligne littérale pour les lignes plutôt que de garder le fichier sombre plus petit et simple.
‫D'accord.
‫Et puis vous avez une autre copie, lancez votre changement dans le répertoire de travail et ensuite vous avez
‫votre point d’entrée.
‫Maintenant, généralement, vous n'avez donc pas de CRM D.
‫Donc, je suppose que vous utilisez le CRM D à partir de cette image racine et c'est tout à fait bien.
‫Il n'y a rien de mal à cela.
‫L’un des problèmes que j’ai avec cela est cependant que les personnes qui utilisent mes images si j’ai une équipe de personnes qu’elles ne
‫sauront pas comment se rendre pour les voir D.
‫Donc, j'ai tendance à simplement répéter le CMT même s'il est inutile ici au bas parce qu'ils vont obtenir ceci et une sorte de dépôt et
‫ils vont le regarder et s'ils ne sont pas super avertis sur Docker ils sont ne pas réaliser Oh,
‫je dois aller chercher ce fichier Docker pour le.
‫À partir de là, cela provient ou utilise l’historique et retourne en arrière et regarde l’histoire et le moment pour trouver
‫cette CMT.
‫Donc, vous pourriez peut-être même ajouter un commentaire pour aider les personnes qui consultent peut-être ce fichier Docker, mais
‫j'ai tendance à le trouver parce que le point d'entrée dans la CMT est tellement important pour ce
‫que l'image de Docker fait que j'ai tendance à ajoutez ces n même si cela peut être répétitif pour une image précédente.
‫Encore une fois, il ne s’agit que de métadonnées, de sorte que cela n’ajoute pas vraiment de temps réel ni d’engourdissement à votre construction plutôt qu’aux modifications
‫de fichier et aux commandes d’exécution que vous effectuez.
‫Mais à part cela, cela ressemble à un fichier Docker de production de bonne qualité sur lequel vous avez passé
‫beaucoup de temps, mais je pense que dans l’ensemble, vous pouvez combiner beaucoup de ces fichiers et obtenir des éléments
‫permettant de gagner beaucoup d’espace dans votre image et beaucoup. de ballonnement et évitez également le problème de mise à jour d'avoir une ancienne mise à jour qui
‫est essentiellement une ancienne application pour obtenir de l'argent lorsque vous essayez d'installer de nouvelles choses.
‫Je vous recommanderais une version de ceux-ci et vous pouvez fondamentalement à l'intérieur de cette commande d'installation, vous pouvez spécifier la
‫version de chacun de ces outils, peut-être que certains de ces outils importent peu, mais lorsque vous commencez à entrer dans
‫les bibliothèques dont vous avez besoin.
‫Pour Apache, pour votre application réelle, ce ne sont que des outils supplémentaires pour la gérer, mais pas vraiment, des choses que
‫vous utiliseriez dans une application en cours de production.
‫Droite.
‫Mais cet Apache en direct ici, je voudrais certainement la version que j'ai été mordu par ce
‫bogue et HP parce qu'un mongo D. B. Le pilote et HP ont changé de version à l'intérieur de
‫mon image. Un bogue a été cassé et mes applications de production ont été cassées, car je ne les ai pas placées dans le fichier
‫de docker et je suis passée en production. J'ai reconstruit l'image un jour. a bien fonctionné sur ma machine parce que ma machine avait
‫une version différente car il n'y en avait aucune qui indique qu'il n'y avait pas
‫de version. Vous obtenez la version la plus récente, quelle que soit la version la plus récente, lorsque vous avez construit l'image.
‫ça marche.
‫Donc, vous obtenez certainement une épinglette que je voudrais personnellement épingler à tous et simplement mettre à jour une fois par mois ou quelque chose
‫du genre ou tout ce que votre équipe de sécurité exige.
‫Mais c'est un excellent fichier Docker.
‫Merci beaucoup.
‫Bien sûr, il y a toujours place à l'amélioration et je suis heureux que vous soyez venu pour aider à cela.