‫Also hatten wir zuerst Charles, der seinen Docker-Dateibereich gepostet hat,
‫und
‫ließen mich den grünen Bildschirm hochziehen, damit wir uns diese
‫Docker-Datei ansehen können.
‫Und natürlich ist die Realität hier, dass, sobald Sie zu Dateien aus der realen Welt gelangen, alles unordentlicher wird.
‫Richtig.
‫Wir alle lernen in Kursen wie denen, die ich habe, und wir lernen aus Blogartikeln und Dokumentationen. Wenn wir dann in die
‫reale Welt kommen, scheint es immer schwieriger zu sein.
‫Daher versuche ich immer, den Kursen mehr Komplexität zu verleihen, aber es ist eine Menge Arbeit, dies in die Kurse zu
‫integrieren, da es sich um den Kontext handelt.
‫Es geht sehr viel um Ihre Umgebung, Ihr Setup und Ihre spezielle App.
‫Also dachte ich gestern Abend Hey, warum reden wir nicht morgen in der Show darüber?
‫Also, wenn Sie dies wirklich mögen, geben Sie einen Daumen hoch.
‫Sagen Sie mir im Chat oder in den Kommentaren, dass Sie mehr von diesen möchten, und wir
‫werden dies zu einer normalen Sache machen. Wir werden tatsächlich mehr Docker-Dateien überprüfen und Dateien zusammenstellen und einige der guten Juwelen dort herausholen.
‫Gut.
‫Also steht Charles an erster Stelle und es sieht so aus, als käme er von seinem eigenen Konto. Er hat ein P HP Apache-Image.
‫Aufgrund dieses Namens gehe ich einfach davon aus, dass es das ist, was es ist.
‫Und es hat ein Datum und es weiß, dass es eine Version und ein Datum im Namen gibt.
‫Das ist also ziemlich häufig, wenn Sie anfangen, von Bildern zu Ihrer eigenen Gewohnheit zu gelangen, werden Sie damit beginnen,
‫Dinge wie diese zu versionieren, zu datieren oder Commit-Ideen in ihnen zu verwenden.
‫Auf diese Weise können Sie sicherstellen, dass Sie genau dasselbe Bild verwenden.
‫Auch hier verwenden Sie nicht nur das Neueste in einem realen Produktions-Setup, sondern Sie können immer das Neueste zum Herumspielen
‫und Testen verwenden.
‫Aber wenn Sie zu echten Sachen gehen, werden Sie immer diese echten Versionen verwenden wollen.
‫Nun, das ist das Azure HP-Image, sagt Charles.
‫OK Cool.
‫Und dann hat er hier ein interessantes Setup, das ich noch nie gesehen habe und ich glaube, ich weiß,
‫warum du es tust.
‫In der folgenden Zeile führen Sie eine App aus, um ein Update zu erhalten, und sagen dann, wenn dies nicht der Fall
‫ist, geben Sie in der Bash ein OP an, was bedeutet, dass dies nicht gelingt.
‫Und so wiederholst du es.
‫Ich vermute also, dass Sie entweder in einem Netzwerk oder an einem Ort sind, an dem möglicherweise Probleme mit Updates auftreten, oder
‫dass Sie in der Vergangenheit einige Macken hatten, bei denen es zufällig fehlgeschlagen ist, und wenn Sie Habe
‫es gerade ein zweites Mal gemacht, dass es funktionieren würde.
‫Das ist, was ich vermute, Sie dort tun.
‫Und es ist eine effektive Lösung für dieses Problem, wenn es das ist, wofür es ist.
‫Ansonsten sehe ich diese Art von Setup normalerweise nicht. Das ist normalerweise nicht das, was ich dort sehen würde.
‫Gut.
‫Als nächstes exportieren Sie und das ist nur eine winzige kleine Metadatenänderung.
‫Also wird es nicht viel kosten. Oh, schau dir das an, was
‫Charles sagt: Ja, er sagt, es ist ein ebenso fröhliches HP-Bild.
‫Und er sprach, um den Azure-Support zu vermasseln und es behebt einen Fehler.
‫Also sehr
‫cool,
‫ich werde das ändern. Lass
‫uns das hier machen und die Schriftarten ändern, damit es ein bisschen einfacher aussieht.
‫Ein besserer Blick.
‫Ja.
‫Gut.
‫Also hier ist eine interessante Sache.
‫Sie laden also herunter, führen einige Downloads durch und installieren ein normales Paket.
‫Und du machst auch ein paar APPs, die hier installiert werden.
‫Wenn Sie dies also nicht testen und nur herausfinden möchten, wie dieser Workflow
‫funktioniert, bieten sich zahlreiche Optimierungsmöglichkeiten, insbesondere in Bezug auf die Größe.
‫Und Sie haben auch eine Situation, in der wir uns in Schwierigkeiten bringen können.
‫Beachten Sie hier oben, dass wir eine separate Ausführungszeile haben, in der die App ausgeführt wird, um Aktualisierungen zu erhalten.
‫Sie haben also nicht die Zeile hier unten, in der Sie die gesamte Installation durchführen.
‫Sie haben also alle diese Schritte abgebrochen.
‫Wenn Sie sich nun die offiziellen Bilder ansehen, werden Sie feststellen, dass sie dies niemals tun.
‫Sie haben immer alles in einer großen Reihe zusammengefasst, und dafür gibt es ein paar Gründe.
‫Der Hauptgrund dafür ist das Zerschlagen von Bargeld.
‫Wenn Sie also darüber nachdenken, wann Sie ein Image erstellen, steckt Bargeld dahinter.
‫Wenn Sie so etwas wie Jenkins oder einen CCD-Runner verwenden und das Caching deaktiviert haben, bei
‫dem es jedes Mal von Grund auf neu erstellt wird, ohne dass ein Caching erforderlich ist, ist dies möglicherweise kein solches Problem, aber es
‫wird sicherlich ein Problem sein, wenn Sie bauen lokal oder auf einem beliebigen
‫System mehr als einmal.
‫Und genau das wird auf der Run-Line passieren.
‫Sagen wir, es ist da.
‫OKAY.
‫Und es ändert sich nie.
‫Richtig.
‫Wenn Sie dieses Bild zum ersten Mal erstellen, ist alles in Ordnung.
‫Nehmen wir an, Sie bauen drei Tage später.
‫Es wird diese Zeile nicht zwischenspeichern, da sich diese Zeile nicht geändert hat. Beachten Sie,
‫dass der Cache im Standard-Docker-Build-Befehl nicht mehr funktioniert, wenn Sie eine Zeile geändert haben.
‫Und wenn Sie diese Zeile ändern, wird alles in dieser Zeile erneut ausgeführt und jede Zeile danach.
‫Und was hier passiert, ist, wenn Sie diese Ausführungsreihe hier haben und sie sich nie ändert, aber Sie fügen dann
‫sagen wir ein anderes Paket hier unten in der Ausführungsreihe hinzu, oder Sie ändern möglicherweise die Versionen und codieren
‫Ihre Versionen hart, was Sie auch tun sollten sollte die Versionen all dieser Tools hart codieren
‫und möglicherweise nicht zip und unzip und curl.
‫Aber wenn Ihr Sicherheitsteam streng ist, wird erwartet, dass Sie zuverlässige Versionen haben, und das ist eine andere Sache, die
‫Sie hier tun möchten.
‫Aber kommen wir zurück zu diesem Punkt.
‫Wenn Sie diese Installationen durchführen und ein Tool ändern und es hier hinzufügen möchten.
‫Denken Sie darüber nach und holen Sie sich ein Update, bei dem alle Metadaten zu diesen Paketen heruntergeladen
‫werden mussten. Sie werden diese Pakete später installieren. Wenn die zweite Zeile hier durch
‫eine Änderung kaputt geht, wird sie erneut ausgeführt.
‫Es wird jedoch basierend auf dem alten Cache Ihrer App ausgeführt, um ein Update zu erhalten.
‫Mit der Zeit werden Sie also Probleme bekommen, da Ihre Pakete immer diese alten Versionen installieren. Eine
‫viel bessere Möglichkeit, dies zu tun, besteht darin, Ihre gesamte App zu nutzen, um alles richtig zu machen.
‫Und das hängt nicht unbedingt damit zusammen, dass Sie dieses Paket hier herunterladen.
‫Dies ist ein benutzerdefiniertes Paket.
‫Wir werden gleich darüber reden.
‫Aber wenn es um diese Zeilen geht, hat diese Zeile keine Auswirkung auf
‫die Größe, da diese Zeile in der gleichen Zeile wie diese ausgeführt werden muss oder nicht funktioniert.
‫Nun ist das alles vielleicht nicht wahr.
‫Wenn du ein anderes Okay hast, machst du das nicht mehrstufig.
‫Eine Möglichkeit, das Größenproblem zu umgehen, besteht darin, dass Sie mehrere Status ausführen, aber nicht den Status ausführen, und das ist
‫in Ordnung.
‫Sie müssen nicht mehrstufig
‫sein, also lassen Sie uns sehen,
‫was hier passieren wird, ist, dass Sie empfehlen würden, diese hier zu nehmen und all dies hier
‫zu tun, um alles auf diese Linie zu bringen.
‫Ich würde diese Exportzeile nehmen und sie oben platzieren, also würde ich sie hier einfach so platzieren, dass sie eingestellt
‫ist.
‫Und es muss sich nie ändern.
‫Und Sie müssen sich keine Sorgen machen, wenn Sie unterwegs sind, um das Richtige zu tun.
‫Und im Allgemeinen ist es gut, dass Sie alles haben, was Sie brauchen, um an die Spitze zu kommen, denn Sie möchten, dass die
‫Abhängigkeiten, deren Installation normalerweise lange dauert, so hoch wie möglich sind, damit Sie sie
‫nicht erneut ausführen müssen häufig.
‫Aber ich werde empfehlen, dass Sie all
‫diese Dinge gleich hierher nehmen und hierher bringen, jetzt können Sie dies als nächstes tun, da dies ein manuelles Herunterladen und Installieren von Paketen ist.
‫Wenn Sie dies tun, gibt
‫es ein paar Dinge, die Sie tun können.
‫Eins ist das.
‫Diese Zeile hier wird eine Ebene sein und diese Ebene wird immer die Datenbankdatei enthalten, auch wenn Sie sie
‫nicht benötigen.
‫Wenn Sie also später aufräumen, werden diese vorherigen Schichten nicht aufgeräumt.
‫Das ist eines der Probleme hier ist, dass es sich um eine Datei handelt, die in eine Ebene heruntergeladen wurde, und Sie dann in die
‫nächste Zeile gehen, die ein oder der nächste Docker-Befehl ist. Ich sollte sagen, dass der nächste Docker-Befehl eine neue Ebene
‫sein wird.
‫Stellen Sie sich das als separate Aufgabe vor, sobald Sie eine Zeile oder einen Docker-Befehl angehalten haben.
‫Sie können nicht ändern, dass Sie nicht in der Zeit zurückgehen und das ändern können.
‫Die nächste Zeile oder die nächste Befehls- und Andockdatei fügt einfach etwas hinzu.
‫Wenn nun Dateien gelöscht werden, werden sie nur in dieser Ebene gelöscht.
‫Es wurden im Wesentlichen einige Metadaten eingefügt, die besagen, dass eine Datei nicht mehr existieren sollte oder so aussieht, als ob
‫sie existiert. Diese Dateien und schreibgeschützten Ebenen werden jedoch weiterhin existieren, da jede
‫darüber liegende Ebene jetzt schreibgeschützt ist. Auf diese Weise garantieren diese Ebenen dies Sie sind identisch mit dem, was Sie erwarten.
‫So kann keine Schicht in der Zeit zurückgehen.
‫Schauen Sie sich also einige der Standard-Docker-Images an und schauen wir uns eines von meinen an, denn es wird ein bisschen mehr sein,
‫es könnte ein
‫bisschen einfacher zu verstehen sein.
‫Also ja, ich bin
‫mir nicht sicher.
‫OKAY.
‫Also Docker-Datei, ja, es gibt einen AP Kay, aber Sie werden hier feststellen, dass alles in einer Zeile steht, was ein
‫schlechtes Beispiel ist, aber lassen Sie uns einen Hub erstellen und uns Ghost ansehen.
‫Schauen Sie sich also diese Debian Docker-Datei an.
‫Alles klar, los geht's.
‫Sie werden also feststellen, dass es in dieser Situation darum geht, einige Dinge herunterzuladen, die es zu erledigen
‫gilt, und diese Dinge dann auf einmal loszuwerden.
‫Auf diese Weise bleiben diese Dateien nie hängen.
‫Sobald diese Schicht versiegelt und als schreibgeschützt markiert ist.
‫Und das ist ziemlich wichtig, um Ihre Bilder klein zu halten.
‫Ich wette, wenn Sie dieses Zeug effizienter machen und zusammenfügen, sparen Sie Hunderte von
‫Megabytes und Ihre Bildgröße.
‫In Ordnung, und das andere an dieser Stelle ist, dass ich das auch zu einer einzelnen Zeile hinzufüge und eine andere Sache, die ich
‫dort machen würde, ist, dass Sie vielleicht nicht brauchen, dass Sie vielleicht eine Anzeige machen können, von der eine Anzeige automatisch eine
‫Datei herunterlädt das Internet.
‫Und wenn Sie sehr neugierig auf den Unterschied zwischen Kopie und Anzeige sind, dann ist unser Standard, dass Kopie
‫wirklich nur zum Kopieren von Dateien aus dem Repo dient, in dem Sie Recht haben.
‫Das Kopieren von Dateien und Werbung macht also genau das Gleiche, aber wir möchten Werbung nur dann verwenden, wenn wir entweder etwas
‫aus dem Internet herunterladen oder was auch immer wir kopieren, und möchten, dass es entpackt oder UN-tar wird und das wird wirklich Grund für die
‫Verwendung der Anzeige.
‫Aber der nette Vorteil der Verwendung von Werbung ist, dass Sie nicht tun müssten,
‫wenn Sie im Grunde genommen Internisten von Ärzten verwenden könnten. Wir holen diese Datei und laden sie
‫herunter zur nächsten Zeile.
‫Dieses Paket wird noch existieren.
‫Obwohl Anzeigen in Ihrem Fall wirklich cool sind, weil Sie ein Paket herunterladen, das Sie für gut befunden
‫haben, werden sie installiert, und dann brauchen Sie das Paket nicht mehr.
‫Ich würde vielleicht einfach alle drei Zeilen in eine Zeile setzen, so dass Sie ganz am Ende den
‫Punkt D tatsächlich löschen können. B. Datei und speichern Sie zusätzlichen Platz in Ihrer letzten Veranstaltung.
‫Also würden Sie das alles in einem Durchgang machen.
‫Gut.
‫Das hilft.
‫Sieht also so aus, als würden Sie in einigen anderen Dateien großartig kopieren, dass Sie das Kopieren nicht hinzufügen.
‫Du machst auch einige Macher und kopierst und zertifizierst.
‫Genau so würde ich es machen.
‫Um dies zu optimieren, können Sie all diese Befehle in der Regel in einem einzigen
‫Ausführungsbefehl ausführen, da die Erstellung im Grunde genommen etwas schneller ist und Sie möglicherweise eine Sekunde schneller rechnen müssen, da
‫jede einzelne Zeile angehalten werden muss Laden Sie den Rest des Images in den Container oder
‫erstellen Sie einen neuen Container. Führen Sie diesen Befehl aus, speichern Sie ihn in einem neuen Container-Image und
‫starten Sie dann einen neuen Container.
‫Richtig.
‫Es muss also viel mehr getan werden, als nur drei Schnellbefehle auszuführen.
‫Also könnte ich nur diese in einem haben.
‫Es gibt keine sicheren Platzersparnisse oder irgendetwas anderes, aber es ist
‫nur eine Frage von drei Befehlen, die sich wirklich in einen langen Shell-Befehl verwandeln würden.
‫Wir haben die Tore.
‫Ich würde wahrscheinlich das Gleiche tun, um diese übrigens nur aus Effizienzgründen herzustellen.
‫Wenn Sie also in zwei verschiedenen Kopierzeilen kopieren, können Sie diese eine Zeile erstellen.
‫Sie könnten tatsächlich Kopie sagen und dann den Pfad zum CRT und dann den Pfad zu diesem Schlüssel.
‫Kay Kay Sie warum und haben diese beiden Dateien und dann in den Pfad zum SSL-Verzeichnis.
‫Solange sich beide in demselben Verzeichnis befinden, können Sie mehrere Dateien in
‫einer einzigen Kopierzeile speichern, um die Arbeit zu vereinfachen.
‫Weniger Zeilen, es ist in der Regel besser, solange sie nicht zu kompliziert sind.
‫Ja.
‫Sie haben dort einige Standard-Apache-Sachen zu Konfigurationen, die Sie vielleicht auch haben.
‫Ich weiß nicht wie viel.
‫Ja.
‫Das sind die, die eigentlich gut sind.
‫Ich
‫denke, das ist gut. Ja, machen Sie noch ein paar Kopien von Konfigurationsdateien in einigen von diesen. Sie könnten auch in Betracht ziehen,
‫dass dies Standardkonfigurationsdateien sind. Wenn Sie diese überschreiben müssen und einen Orchestrator verwenden, egal ob
‫Sie Kubanisch oder Schwarm verwenden, stellen Sie fest, dass Sie dies tun Sie können diese Konfiguration verwenden oder in Communitys,
‫die als Konfigurationszuordnung bezeichnet werden, die Konfigurationsfunktion und den Schwarm verwenden, um diese Dateien zur Laufzeit einzubinden, sodass Sie
‫keine Konfigurationen hart codieren müssen.
‫Idealerweise codieren Sie SSL nicht fest in Ihr Image, auch wenn Sie über benutzerdefiniertes SSL verfügen, das Sie in
‫Ihrem Orchestrator oder in Docker speichern und diese bereitstellen möchten, und wenn Sie ausgeführt werden, sollte im Idealfall
‫nichts geheim sein in einem Bild, wenn Sie es speichern.
‫Hoffentlich machen Sie hier dasselbe, da Sie diese beiden in einer Zeile zusammenfassen könnten. Sie könnten einige davon in einer
‫Zeile zusammenfassen. Sie könnten wahrscheinlich wissen, ob dies alle x kleinen Dateien sind, die Sie in das
‫Verzeichnis kopieren könnten Verzeichnis Sternchen Punkt X Menge und dann könnten Sie alle vier in
‫es kopieren, es ist vor- und Nachteile, weil dann, wenn eine X extra Excel-Datei
‫auftaucht, es könnte versehentlich kopiert werden, aber es hängt nur davon ab, wie ausführlich Sie sein möchten und wie ob
‫Sie möchten eine wörtliche Zeile für Zeilen, anstatt die dunklere Datei klein und einfach zu halten.
‫Gut.
‫Und dann haben Sie eine weitere Kopie, die Ihre Änderung im Arbeitsverzeichnis ausführt, und dann haben Sie
‫Ihren Einstiegspunkt.
‫Jetzt haben Sie normalerweise kein CRM D.
‫Vermutlich verwenden Sie das CRM D aus diesem Root-Image, und das ist völlig in Ordnung.
‫Daran ist nichts wirklich Falsches.
‫Eine der Herausforderungen, die ich dabei habe, ist, dass Leute, die meine Bilder verwenden, wenn ich ein Team von Leuten habe, nicht
‫wissen, wie sie hingehen sollen, um sie zu sehen.
‫Ich neige dazu, die CMT einfach zu wiederholen, obwohl es hier unten unnötig ist, weil sie diese und eine Art Repo bekommen
‫und sie sich ansehen werden und wenn sie nicht besonders versiert in Docker sind, sind sie es
‫Oh, ich muss die Docker-Datei für die suchen.
‫Daraus ergibt sich, oder verwenden Sie die Historie und gehen Sie zurück und schauen Sie sich die Historie und die Zeit an, um diese CMT
‫zu finden.
‫Sie könnten es vielleicht sogar in einen Kommentar werfen, um den Leuten zu helfen, die sich vielleicht diese Docker-Datei
‫ansehen, aber ich bin der Meinung, dass der Einstiegspunkt in die CMT so wichtig für die Aufgaben
‫dieses Docker-Images ist, zu denen ich neige Füge diese n hinzu, auch wenn sie sich zu einem vorherigen Bild wiederholen.
‫Auch hier handelt es sich nur um Metadaten, sodass der Build nicht wirklich in Echtzeit aktualisiert oder aufgebläht wird, sondern nur die anderen
‫Dateiänderungen und die von Ihnen ausgeführten Ausführungsbefehle.
‫Abgesehen davon sieht es aus wie eine großartige hochwertige Docker-Produktionsdatei, für die Sie viel Zeit aufgewendet haben, aber
‫ich denke, Sie könnten auf jeden Fall insgesamt eine Menge davon kombinieren und Dinge besorgen, um viel
‫Platz in Ihrem Bild und viel Geld zu sparen von aufblähen und vermeiden Sie auch das Update-Problem, ein altes Update zu haben, das im Grunde
‫eine alte App ist, um Geld zu verdienen, wenn Sie versuchen, neue Sachen zu installieren.
‫Ich würde Ihnen empfehlen, diese zu versionieren, und Sie können im Grunde genommen innerhalb dieses Installationsbefehls die
‫Version jedes dieser Tools angeben, vielleicht ist es nicht wirklich wichtig, aber wenn Sie anfangen, Bibliotheken aufzusuchen,
‫für die Sie sie benötigen.
‫Für Apache für Ihre eigentliche App sind dies nur so viel mehr Hilfsprogramme für die Verwaltung, als Sie
‫für eine produktiv laufende App benötigen würden.
‫Richtig.
‫Aber diese Live-Apache hier unten würde ich definitiv als Version bezeichnen, dass ich von diesem Bug und HP
‫wegen eines Mongos D gebissen worden bin. B. Treiber und HP haben die Versionen in meinem Image geändert und
‫es hat einen Fehler verursacht und meine Produktions-Apps wurden beschädigt, da ich sie nicht in der Docker-Datei gespeichert habe und im Grunde genommen
‫nur eines Tages zur Produktion übergegangen bin Auf meinem Computer hat es gut funktioniert, weil mein Computer eine andere Version hatte, weil
‫es keine gibt, die besagt, dass es keine Versionen gibt. Sie erhalten im
‫Grunde genommen die neueste Version, wenn Sie das Image erstellt haben, und hoffen, dass Sie eine gute Version bekommen das
‫funktioniert.
‫Sie erhalten also auf jeden Fall eine PIN, die ich persönlich alle anpinnen würde, und aktualisieren sie nur einmal im Monat
‫oder so oder was auch immer Ihr Sicherheitsteam benötigt.
‫Aber das ist eine großartige Docker-Datei.
‫Ich danke dir sehr.
‫Natürlich gibt es immer Raum für Verbesserungen, und ich bin froh, dass Sie dabei aufgetaucht sind.