‫Quindi, per prima cosa, abbiamo avuto Charles che ha pubblicato la sua area del file
‫Docker e
‫mi ha permesso di farmi aprire lo schermo verde in modo che possiamo quindi dare
‫un'occhiata a questo file Docker dovremmo.
‫E naturalmente la realtà è che una volta arrivati ai file del mondo reale tutto diventa più caotico.
‫Destra.
‫Impariamo tutti in corsi come quelli che ho e impariamo dagli articoli e dalla documentazione del blog e poi, una volta arrivati
‫nel mondo reale, sembra sempre più difficile di così.
‫Quindi cerco sempre di aggiungere una maggiore complessità ai corsi, ma è molto difficile inserirli nei corsi
‫perché è necessario che siano molto contestuali.
‫Dipende molto dal tuo ambiente, dalla tua configurazione e dalla tua particolare app.
‫Quindi ho pensato ieri sera Ehi, perché non ne parliamo nello show domani.
‫Quindi, se ti piace davvero, dai un pollice in su.
‫Dimmi in chat o nei commenti che vorresti più di questi e faremo di questo
‫una cosa normale in realtà esamineremo più file Docker e comporremo i file e tireremo fuori alcune delle gemme buone lì.
‫Tutto ok.
‫Quindi il primo è Charles e sembra che provenga dal suo account e che abbia un'immagine P HP Apache.
‫Basandomi su quel nome, suppongo che sia quello che è.
‫E ha una data e sa che ha una versione e una data nel nome lì.
‫Quindi è abbastanza comune quando inizi a personalizzare le tue immagini con le immagini, inizierai a fare cose come
‫la loro versione o datarle o usare idee di commit in esse.
‫E questo è un modo per garantire che stai usando esattamente la stessa immagine.
‫Anche in questo caso non solo usi gli ultimi in qualsiasi configurazione di produzione reale, ma puoi sempre usare gli ultimi per
‫giocare e testare.
‫Ma quando vai a cose reali vorrai sempre usare quelle versioni reali.
‫Bene, questa è l'immagine HP di Azure che dice Charles.
‫Ok bello.
‫E poi ha qui un allestimento interessante che non ho mai visto prima e penso di sapere
‫perché lo stai facendo.
‫Quindi in questa linea di esecuzione qui stai facendo un'app per ottenere l'aggiornamento e poi stai dicendo che se non lo stai
‫dando un OR in bash, il che significa che se ciò non riesce farlo.
‫E così lo stai ripetendo.
‫Quindi suppongo che potrebbe essere o sei su una rete o in un luogo in cui potenzialmente hai un problema comune per
‫avere problemi di aggiornamento o forse hai avuto alcune stranezze in passato in cui si è verificato un
‫errore casuale e se appena fatto una seconda volta avrebbe funzionato.
‫Questo è quello che immagino tu stia facendo lì.
‫Ed è una soluzione efficace a questo problema se è quello che è che è quello che serve.
‫Altrimenti normalmente non vedo questo tipo di installazione, questo normalmente non è quello che vedrei lì.
‫Tutto ok.
‫Successivamente esporti e questo è solo un piccolo cambiamento di metadati.
‫Quindi non ci vorrà molto Oh guarda che Charles dice
‫di sì, dice che è un'immagine HP altrettanto felice.
‫E ha parlato con il supporto di Azure e risolve un bug.
‫Così bello che cambierò, vediamolo, cambiamo
‫i caratteri
‫qui, quindi sembra un po 'più semplice, sì.
‫Un aspetto migliore
‫Si.
‫Tutto ok.
‫Quindi ecco una cosa interessante.
‫Quindi stai scaricando così stai facendo alcuni download e stai installando un pacchetto che è normale.
‫E stai anche facendo un sacco di APP per ottenere installazioni qui.
‫Quindi, a meno che questo non sia qualcosa che stai testando e stai solo cercando di capire come funziona
‫questo flusso di lavoro, ci sono molte opportunità di ottimizzazione soprattutto quando si tratta di dimensioni.
‫E hai anche una situazione qui, possiamo metterti nei guai.
‫Quindi notate qui che abbiamo una linea di esecuzione separata che sta eseguendo l'app per ottenere l'aggiornamento.
‫Quindi non hai quella linea qui sotto dove stai facendo tutta l'installazione.
‫Quindi hai rotto tutti questi passaggi.
‫Ora, se inizi ad andare a guardare le immagini ufficiali, noterai che non lo fanno mai.
‫Hanno sempre messo tutto in una linea di corsa enorme e ci sono un paio di ragioni per questo.
‫Il motivo principale qui è il fallimento della liquidità.
‫Quindi, quando pensi a quando crei un'immagine, c'è un denaro dietro di essa.
‫Ora se stai usando qualcosa come Jenkins o un corridore CCD e hai disabilitato la memorizzazione
‫nella cache in cui si creerà sempre ogni volta da zero senza senza cache, questo potrebbe non essere quel problema quel tipo di problema,
‫ma sarà sicuramente un problema se costruisci localmente o costruisci su qualsiasi sistema
‫più di una volta.
‫E questo è ciò che accadrà sulla linea di corsa.
‫Diciamo che è lì.
‫OK.
‫E non cambia mai.
‫Destra.
‫Quindi la prima volta che costruisci questa immagine va tutto bene.
‫Diciamo che costruisci tre giorni dopo.
‫Non memorizzerà questa riga nella cache perché questa riga non è cambiata. Ricorda che il
‫busting della cache del comando build standard docker è quando hai cambiato una riga.
‫E quando cambi quella linea, tutto viene ripetuto e ogni riga successiva.
‫E ciò che accade qui è se hai questa sequenza di esecuzione qui e non cambia mai, ma
‫poi aggiungi diciamo un altro pacchetto qui nella riga di esecuzione o forse cambi le versioni e codifichi
‫le tue versioni che dovresti anche fare dovrebbe codificare le versioni di tutti questi strumenti
‫e forse non comprimere, decomprimere e arricciare.
‫Ma se il tuo team di sicurezza è severo, si aspetterà che tu abbia versioni affidabili e questa è un'altra cosa
‫che vorresti fare qui.
‫Ma torniamo a questo punto.
‫Quindi, se hai intenzione di fare queste installazioni e cambi uno strumento e lo aggiungi qui.
‫Pensaci e ottieni aggiornamenti che dovevano ottenere download scarica una cache di tutti i metadati su tutti questi
‫pacchetti e poi installerai questi pacchetti in seguito e se la seconda riga qui
‫viene sballata cambiando andrà di nuovo in esecuzione.
‫Ma verrà eseguito in base alla vecchia cache della tua app per ottenere l'aggiornamento.
‫Quindi col tempo inizierai a riscontrare problemi perché i tuoi pacchetti installeranno sempre quelle vecchie versioni un
‫modo molto migliore per farlo è quello di prendere tutte le tue app per ottenere le cose giuste.
‫E questo non è necessariamente correlato al download di questo pacchetto qui.
‫Questo è un pacchetto personalizzato.
‫Ne parleremo un minuto.
‫Ma quando si tratta di queste linee proprio qui questa linea non avrà
‫alcun effetto sulla dimensione perché questa linea deve funzionare nella stessa linea di questa o non funzionerà.
‫Questo forse non è tutto vero.
‫Se hai un altro Okay, quindi non stai facendo più fasi.
‫Un modo per cavartela con il problema delle dimensioni è fare multi-stato ma non stai facendo quello che è giusto e
‫va bene.
‫Non devi fare
‫un multi-stage, quindi vediamo che
‫cosa accadrà qui è che consiglieresti di prenderli proprio qui prendendo tutto questo
‫proprio qui, portando tutto su questa linea.
‫Prenderei questa linea di esportazione e la metterei sopra, quindi la metterei qui in questo
‫modo.
‫E non deve mai cambiare.
‫E non devi preoccuparti di ciò nel mezzo di tutto ciò che sei fuori per ottenere le cose giuste.
‫E in generale è positivo che tu abbia tutto ciò che ti serve in cima perché vuoi quelle dipendenze che di solito impiegano
‫molto tempo a installarti, vuoi che siano in alto il più possibile, quindi non
‫devi eseguirle di nuovo spesso.
‫Ma sono quello che sto per raccomandare
‫di prendere tutte queste cose proprio qui e metterle qui ora puoi farlo ora perché questo è un download e installazione di pacchetti manuali.
‫Quindi quando lo fai ci
‫sono un paio di cose che puoi fare.
‫Uno è questo.
‫Questa riga qui diventerà un livello e quel livello includerà sempre il file db anche se non ne
‫hai bisogno.
‫Quindi, quando pulisci più tardi, non sta pulendo questi livelli precedenti.
‫Questo è uno dei problemi qui è che si tratta di un file che viene scaricato in un livello e poi vai alla
‫riga successiva che è un o il prossimo comando Docker Dovrei dire che il prossimo comando Docker sarà un
‫nuovo livello.
‫Pensa a ciò come se fosse separato quando hai interrotto una riga o un comando docker.
‫Non puoi cambiare che non puoi tornare indietro nel tempo e cambiarlo.
‫Quindi la riga successiva o il comando e il file docker aggiungeranno semplicemente cose ad esso.
‫Ora se elimina i file, li eliminerà in quel livello.
‫In sostanza ha messo alcuni metadati che dicono che hey quel file non dovrebbe più esistere o sembrare che esista ma quei
‫file continueranno ad esistere e quelli leggeranno solo i livelli perché ogni livello sopra
‫di esso ora è di sola lettura ed è così che questi livelli garantiscono che sono identici a quello che ti aspetti.
‫Quindi nessuno strato può tornare indietro nel tempo.
‫Quindi questo è ciò che devi fare è andare a dare un'occhiata ad alcune delle immagini predefinite della finestra mobile e quindi facciamolo in realtà guardiamo una delle mie perché sarà
‫un po 'più potrebbe essere
‫un po' più facile da capire.
‫Quindi sì, non ne
‫sono sicuro.
‫OK.
‫Quindi il file Docker sì, c'è un AP Kay ma noterai qui come è tutto in una riga che è una
‫specie di cattivo esempio ma facciamo un hub e andiamo a vedere Ghost.
‫Quindi guarda questo file Debian Docker.
‫Va bene, andiamo.
‫Quindi noterai che in questa situazione sta scaricando alcune cose che ha a che fare con quelle cose e poi si
‫sta sbarazzando di quelle cose in una sola riga.
‫In questo modo quei file non si attaccheranno mai.
‫Una volta che lo strato è sigillato e contrassegnato come di sola lettura.
‫E questa è la chiave per mantenere le tue immagini piccole.
‫Scommetto che una volta che avrai reso queste cose efficienti e le avrai combinate insieme, risparmierai centinaia di mega
‫e le dimensioni delle tue immagini.
‫Va bene e l'altra cosa qui su questa è che aggiungerei anche quella a una singola riga e un'altra cosa che farei
‫lì è che forse non hai bisogno di ottenere forse potresti fare un annuncio un annuncio scaricherà automaticamente un file
‫da la rete.
‫E se sei molto curioso della differenza tra copia e annuncio, oggigiorno il nostro standard è che la
‫copia è davvero solo per copiare i file dal repository che hai ragione.
‫Quindi, basta copiare i file e l'annuncio fa la stessa cosa, ma tendiamo a voler utilizzare l'annuncio solo quando
‫scarichiamo qualcosa da Internet o qualunque cosa stiamo copiando e vogliamo che si decomprima o tar dell'ONU e che è davvero motivo
‫per utilizzare l'annuncio.
‫Ma il bello vantaggio di usare la pubblicità è che non avresti bisogno di fare ciò che potresti usare
‫fondamentalmente dottori interni andremo a prendere quel file e lo scaricheremo il negativo di quello è che quando fai quella linea e
‫poi vai alla riga successiva.
‫Quel pacchetto esisterà ancora.
‫Quindi, anche se nel tuo caso le pubblicità sono davvero interessanti perché stai scaricando un pacchetto che sei
‫bravo che installeranno e quindi non hai più bisogno di quel pacchetto.
‫Vorrei solo mettere tutte e tre le linee in una riga in quel modo alla fine in cui puoi
‫effettivamente eliminare quel punto D. B. archiviare e salvare spazio aggiuntivo nell'evento finale.
‫Quindi faresti tutto questo in una corsa.
‫Tutto ok.
‫Questo aiuta.
‫Quindi sembra che tu stia copiando in alcuni altri file fantastico che stai usando copia non aggiungere.
‫Stai anche facendo alcuni produttori, copie e certificati.
‫È esattamente come lo farei.
‫Potresti renderlo più ottimizzato e potresti metterli tutti in un unico comando di solito
‫perché in pratica è un po 'più veloce da costruire e ti darà forse un secondo più veloce nel
‫tuo conto perché ogni singolo di queste righe deve fermarsi il contenitore o creare un
‫nuovo contenitore montare il resto dell'immagine ed eseguire quel comando, quindi salvarlo in una nuova immagine contenitore
‫e quindi avviare un nuovo contenitore.
‫Destra.
‫Quindi deve fare molto più lavoro che semplicemente eseguire tre comandi rapidi.
‫Quindi potrei avere solo quelli in uno.
‫Non ci sono risparmi di spazio sicuri o altro, ma è solo questione
‫di tre comandi che si trasformerebbero in un unico comando shell loro e sì va bene sì.
‫Abbiamo i cancelli.
‫Probabilmente farei la stessa cosa per renderli comunque solo efficienti.
‫Quindi proprio qui stai copiando in due diverse linee di copia puoi creare quella riga.
‫Si potrebbe effettivamente dire copia e quindi il percorso per il CRT e quindi il percorso per arrivare a quella chiave.
‫Kay Kay tu perché e avere quei due file e quindi inserire il percorso della directory SSL.
‫Quindi, purché entrambi vadano nella stessa directory, puoi avere più file nella riga della singola
‫copia che ti aiuteranno a renderlo un po 'più semplice.
‫Meno linee tende ad essere migliore purché non siano troppo complicate.
‫Si.
‫Hai alcune cose standard di Apache lì su configurazioni che potresti anche.
‫Non so quanto.
‫Si.
‫Questi sono questi sono in realtà questi sono buoni.
‫Penso
‫che siano buoni, sì, fallo un po 'di più copiando i file di configurazione in alcuni di questi potresti anche considerare che si tratta
‫di file di configurazione standard, ma se hai bisogno di sovrascriverli e stai usando un orchestrator
‫se usi cubano o sciame ti rendi conto che tu puoi usare quella configurazione o nelle comunità chiamate mappa di configurazione
‫puoi usare la funzione di configurazione e sciamare per montare questi file in fase di esecuzione in modo che non
‫sia difficile codificare alcuna configurazione.
‫Idealmente non stai programmando duramente il codice SSL sia nella tua immagine se davvero hai SSL personalizzato
‫come vuoi archiviarlo nel tuo orchestrator o in Docker e montarli e quando esegui perché idealmente non
‫dovrebbe esserci nulla di segreto in un'immagine quando la salvi.
‫Quindi spero che farai la stessa cosa qui perché potresti combinare questi due in una riga, potresti combinare alcuni di questi
‫in una riga, probabilmente potresti sapere se si tratta di tutti i x piccoli file in quella directory
‫che potresti copiare directory asterisco punto X quantità e quindi è possibile copiare tutti e quattro
‫in là ci sono pro e contro perché perché se si presenta un file
‫excel X extra potrebbe accidentalmente essere copiato ma dipende solo da quanto dettagliato si vuole essere e come se vuoi una
‫linea letterale per linee di tipo roba piuttosto che mantenere il file più scuro piccolo e semplice.
‫Tutto ok.
‫E poi hai un'altra copia esegui la modifica nella directory di lavoro e poi hai il tuo punto
‫di ingresso.
‫Ora in genere quindi non hai un CRM D.
‫Quindi suppongo che tu stia usando il CRM D da questa immagine di root e va benissimo.
‫Non c'è niente di veramente sbagliato in questo.
‫Una delle sfide che ho con questo è che le persone che usano le mie immagini se ho un team di
‫persone che non sapranno come andare a vederle D.
‫Quindi tendo a ripetere il CMT anche se non è necessario quaggiù in fondo perché otterranno questo e una specie di repository
‫e lo guarderanno e se non sono molto esperti su Docker sono non realizzerò Oh, devo
‫andare a trovare quel file Docker per il.
‫Da ciò proviene o usa la storia e torna indietro e guarda la storia e il tempo per trovare quel
‫CMT.
‫Quindi potresti anche semplicemente inserirlo in un commento per aiutare le persone che stanno forse guardando questo file
‫Docker ma tendo a trovarlo perché il punto di ingresso nella CMT è così importante per
‫ciò che fa questa immagine Docker che tendo a aggiungere quelli n anche se potrebbe essere ripetitivo a un'immagine precedente.
‫Ancora una volta tutto ciò è solo metadati, quindi non aggiunge realmente tempo reale o gonfia alla tua build piuttosto che le altre modifiche ai
‫file e i comandi di esecuzione che esegui.
‫Ma a parte questo sembra un file Docker di produzione di ottima qualità su cui hai
‫trascorso molto tempo ma penso che nel complesso potresti combinare molti di questi e ottenere cose
‫per risparmiare molto spazio nella tua immagine e molto di gonfiare ed evita anche il problema dell'aggiornamento di avere un vecchio aggiornamento che
‫fondamentalmente una vecchia app per ottenere denaro quando si tenta di installare nuovi elementi.
‫Ti consiglierei la versione di questi e puoi fondamentalmente all'interno di questo comando di installazione che puoi
‫specificare la versione di ognuno forse alcuni di questi strumenti non importa, ma quando inizi a scendere alle
‫librerie di cui hai bisogno.
‫Per Apache per la tua app attuale queste sono solo altre utility per gestirla, non cose che
‫useresti su un'app in esecuzione di produzione.
‫Destra.
‫Ma questo live Apache quaggiù avrei sicuramente la versione in cui sono stato morso da questo bug
‫e da HP perché un mongo D. B. driver e HP hanno cambiato versione all'interno della mia immagine e
‫si è rotto ha avuto un bug e ha rotto le mie app di produzione perché non l'ho bloccato nel file docker e sono praticamente andato
‫in produzione Ho solo un giorno ho ricostruito l'immagine è andata ha funzionato bene sulla mia macchina perché la mia macchina aveva una versione diversa
‫perché non c'è nessuna dice che non ci sono versioni lì praticamente stai ottenendo qualunque
‫sia la versione più recente quando hai costruito l'immagine, quindi è una sorta di speranza casuale che tu ottenga una buona versione
‫che funzioni.
‫Quindi ottieni sicuramente un pin che personalmente li bloccherei tutti e che aggiornerei una volta al mese o qualcosa del genere
‫o qualunque cosa il tuo team di sicurezza richieda.
‫Ma questo è un ottimo file Docker.
‫Grazie mille.
‫Ovviamente c'è sempre spazio per migliorare e sono felice che tu ti sia presentato per aiutarti.