‫I requisiti per questa lezione comprendono la conoscenza delle nozioni di base su cosa
‫un contenitore e un'immagine si trovano in Docker e
‫nella comprensione dei livelli, o almeno delle basi dei livelli. Conoscere alcune cose su Docker Hub.
‫Questa conferenza riguarderà i tag immagine e come caricarli su Docker Hub.
‫In realtà c'è molto da tag perché non sono così intuitivi come si potrebbe pensare quando
‫si inizia a usarli per la prima volta. Devono effettivamente essere in un formato specifico per lavorare
‫con un registro, in particolare con Docker Hub. Poi ti parlerò della relazione tra i tag
‫assegnati alle tue immagini e gli ID di quelle immagini.
‫Quindi iniziamo.
‫Per prima cosa parliamo di tagging. etichetta immagine finestra mobile --help. Le immagini non hanno un nome tecnico, anche se ci
‫riferiamo a loro in quel modo quando parliamo casualmente.
‫Se eseguiamo un'immagine
‫docker ls, noterai che non esiste una colonna del nome.
‫Oltre l'ID immagine, che nessuno di noi ricorderà a quelli giusto?
‫Dobbiamo fare riferimento a loro da tre diverse informazioni.
‫In questa schermata per il comando image ls, in realtà ne vediamo solo due. stiamo visualizzando il tag.
‫Sopra a sinistra,
‫stiamo visualizzando il repository, quindi Il repository è in realtà costituito dal
‫nome utente o dall'organizzazione che taglia il repository.
‫Qui abbiamo a che fare solo con le immagini dei
‫repository ufficiali, quindi vedremo solo il nome del repository effettivo.
‫Abbiamo accennato in precedenza che le immagini speciali che sono considerate ufficiali sono le uniche che ottengono
‫il diritto di essere chiamate semplicemente il loro nome del repository, non il nome effettivo del repository
‫di slash dell'organizzazione.
‫Ma se andiamo su Docker Hub, e faccio solo una ricerca su mysql, scopriremo che in realtà
‫c'è un'organizzazione, non solo il mysql ufficiale, che si chiama semplicemente mysql, ma
‫c'è l'organizzazione SQL con un server mysql, che sembra essere molto popolare poichè, beh,
‫ha più di un milione di download. Sembra che sia qui è in realtà lo stesso
‫server MySQL ma in realtà è stato creato dal team MySQL di Oracle.
‫Se davvero volessi scaricarlo, noterai qui a
‫destra, devo fare un docker per caricare mysql / mysql-server. Posso effettivamente fare clic sul
‫pulsante di copia e lo copio. ls, noterai che il nome del repository include il nome dell'organizzazione.
‫In pratica scaricherà questa immagine unica basata sull'organizzazione e se eseguo di nuovo un'immagine docker
‫Sul mio account su Docker Hub, sono conosciuto come bretfisher. Puoi vederlo in alto a destra.
‫Quindi, se dovessi guardare il mio cruscotto e guardare le mie immagini che sono
‫pubbliche, per esempio, diamo un'occhiata al nodemongoapp.
‫Se dovessi scaricarlo, dovrei
‫fare docker pull bretfisher / nodemongoapp.
‫Ora capiamo come viene chiamato il repository a cosa serve il tag?
‫Il tag non è una vera e propria versione e non è un ramo, ma assomiglia molto ai tag Git.
‫Quindi è un po 'un po' di entrambi.
‫In realtà è solo un puntatore a un commit di immagine specifico, e potrebbe davvero essere qualsiasi cosa, in quel repository.
‫Se tornassimo su Docker Hub per un minuto, e siamo andati su mysql image ufficiale, vedrai in prima pagina che
‫ha questi tag diversi. Quello che stanno cercando di dire qui è che l'8. 0. 0
‫e l'8. 0 e 8 sono tutti tag per lo stesso ID immagine.
‫Se faccio scorrere il mouse verso l'alto e guardo il pulsante dei tag, ottengo un elenco dettagliato di tutti i
‫vari tag che hanno assegnato a mysql.
‫Quindi andiamo a Nginx, che è quello su cui abbiamo lavorato molto.
‫Vedremo qui che non sono solo numeri ma anche nomi.
‫È importante sottolineare che questi sono in realtà tutti esattamente la stessa
‫immagine e Docker è abbastanza intelligente da saperlo. Vado alla mia riga di comando e vedo che ho già scaricato l'ultima versione di nginx.
‫Se guardo la pagina web, vedo l'ultimo tag qui ma è anche chiamato mainline.
‫Quindi cosa succede se ho fatto un docker tirare nginx: mainline? Ciò che questo ci sta dicendo è che già sapevamo che, in base
‫all'ID immagine, questa immagine è già nella mia cache. Ora se faccio di nuovo
‫un'immagine docker, vedrò due diversi nginx. Si noterà che hanno lo stesso identico ID dell'immagine perché non vengono realmente archiviati due
‫volte nella cache e, di nuovo, ciò comporta molti risparmi. essi tutti puntano allo stesso.
‫Questi tag sono solo etichette che puntano a un ID immagine reale e possiamo avere molti
‫di
‫Quindi, come posso creare nuove etichette?
‫Bene, potrei creare il mio Dockerfile e creare la mia immagine personalizzata, ma
‫possiamo anche ridigitare le immagini Docker esistenti così posso fare solo un
‫tag immagine docker nginx bretfisher / nginx. Il formato di questo comando è l'immagine con cui andrò a
‫dare un nuovo tag e poi il nuovo tag che voglio dargli.
‫aggiornare la memoria, mostra SOURCE_IMAGE e un tag opzionale, quindi NEW_IMAGE un tag opzionale.
‫Se ho
‫creato un tag immagine docker: di nuovo, per
‫Quindi, se non si specifica il tag, sarà sempre l'impostazione predefinita più recente. L'ultimo non significa in realtà sempre l'ultimo perché
‫tecnicamente potrei prendere un vecchio software e taggarlo più tardi.
‫Non c'è niente di speciale in questo, ma è solo una specie di default. Davvero, vorrei che lo
‫chiamassero solo come predefinito e non come ultimo.
‫ufficiali, ci si può
‫fidare che l'ultima è generalmente l'ultima versione stabile del software che si desidera utilizzare.
‫Quindi è un po 'di confusione, ma generalmente su Docker Hub, specialmente quando si utilizzano immagini
‫Quindi eseguiamo di
‫nuovo un'immagine docker. Nota cosa è successo.
‫Ho aggiunto un nuovo tag a un'immagine esistente che non ho creato.
‫Mostra lo stesso ID immagine e
‫ora è etichettato con il mio nome utente e un nuovo repository che non esiste ancora su Docker Hub.
‫Se siamo andati a guardare il
‫mio cruscotto, non ho nulla chiamato bretfisher / nginx.
‫Quindi, cosa succede se ho fatto un push immagine docker, simile a un push Git, bretfisher / nginx?
‫negato: negato l'accesso richiesto alla risorsa.
‫Quindi ha chiaramente provato a caricare ciò che ho appena creato, ha provato a caricare quel tag, ma mi ha
‫dato accesso negato.
‫Questo perché non ho effettivamente effettuato l'accesso.
‫Quindi se guardi la finestra mobile --help vedrai un comando di login e disconnessione. Non li abbiamo ancora usati. Quindi, in effetti, ciò che è stato fatto è stato scrivere su un file, che di default è nel mio profilo in cat. finestra mobile / config. json, e in realtà memorizzava una chiave di
‫Quindi, una volta ottenuto il proprio account Docker Hub gratuito, è possibile effettuare il login dal login della finestra mobile della riga di comando. autenticazione che consentiva alla mia CLI finestra mobile locale di accedere
‫a Docker Hub come me.
‫Questo è un punto importante che apprenderemo più avanti nella produzione è che, ovunque si effettui il login con la CLI di Docker, per
‫impostazione predefinita, memorizzerà
‫questa chiave di autenticazione per il proprio account nel profilo di quell'utente.
‫Quindi, sii consapevole di ciò.
‫Se stai utilizzando una macchina di cui non ti fidi, quando hai finito digita semplicemente il logout.
‫Quindi ora che abbiamo effettuato il login, colpirò la freccia verso l'alto per provare a spingere di nuovo quell'immagine.
‫OK.
‫Quindi sembra che sia fatto.
‫Andiamo su Docker Hub e premi Aggiorna. Eccolo,
‫bretfisher / nginx. Ancora una volta, non ho
‫dovuto creare questo da zero per caricarlo.
‫Ho semplicemente dato un nuovo tag ad un'immagine esistente e quando l'ho caricato, ha creato automaticamente un nuovo repository basato su quel
‫tag.
‫Naturalmente potrei riempire tutte le informazioni qui, e vedrai che è impostato per default sull'ultimo nome
‫del tag perché non ne ho specificato uno. Quindi potrei davvero tornare indietro e fare la freccia
‫rivolta verso l'alto fino a quando raggiungerò il mio tag e potrei effettivamente dargli un tag diverso.
‫Stiamo per aggiungere un tag aggiuntivo a quella stessa immagine e ho intenzione di chiamarlo testing. Se eseguiamo un'immagine docker ls,
‫vedrai che ora ne ho tre tutti con
‫lo stesso ID immagine.
‫Se ho fatto
‫un'immagine docker, spingere bretfisher / nginx: test, e questa volta ho specificato test, notare come dice che i layer esistono già.
‫Fa parte del nostro fantastico tasso di risparmio.
‫Quando scarichiamo e carichiamo le immagini, esistono già dei
‫livelli che non si preoccuperanno di ricaricarli.
‫Se torniamo indietro e clicco su Aggiorna, vedrai che ora ho un altro tag.
‫Ma ovviamente se ho appena
‫fatto un'immagine di docker, vediamo proprio come abbiamo visto che è lo stesso ID di immagine e entrambi i lati di questa connessione lo sanno. Se volevo che fosse un repository privato, perché questa è una
‫funzionalità supportata di Docker Hub, ciò che probabilmente vorrei fare è creare il repository prima, e
‫quando l'ho creato, ho specificato che fosse privato.
‫Poi, quando l'ho spinto, il codice non sarebbe mai stato pubblicamente su Internet.
‫Wow, ci sono molte immagini e i loro tag.
‫Quindi facciamo una breve revisione.
‫Come puoi vedere, puoi taggare praticamente qualsiasi cosa sulle immagini ma devono essere
‫in un formato specifico per funzionare con Docker Hub. Non puoi semplicemente chiamare qualcosa di nginx
‫e quindi caricarlo perché non funzionerà a meno che non abbia l'ID account o l'ID dell'organizzazione in primo piano.
‫Poi ho parlato di come si possano effettivamente avere molti tag per lo stesso
‫ID immagine e solo perché si re-taggano o taggano in modo diverso un'immagine esistente, in realtà non cambia quell'ID immagine.
‫Ricorda che l'ultimo tag è in realtà solo il tag predefinito.
‫di presupposto, che è praticamente uno standard lì, che le persone usano l'ultimo
‫tag come modo per indicare l'ultima versione stabile della propria immagine.
‫Non c'è nulla di intrinsecamente speciale al riguardo, ma su Docker Hub ci assumiamo una sorta Ti ho mostrato come accedere e uscire rapidamente da Docker Hub dalla CLI. Ricorda che memorizza un ID di sessione nella tua configurazione locale
‫se sei su una macchina Linux e ti assicuri di uscire
‫per rimuoverlo se sei
‫su una macchina Linux condivisa o un host, come un server. Quindi, solo un promemoria, se vuoi creare un'immagine hub Docker
‫privata, dovresti probabilmente creare
‫il repository prima di caricarlo.
‫