‫Cerințele pentru această prelegere includ cunoașterea elementelor de bază ale containerului și
‫a imaginii în Docker și înțelegerea straturilor
‫sau cel puțin elementele de bază ale straturilor. Aflați câteva lucruri despre Docker Hub.
‫Această prelegere va fi totul despre etichetele de imagine și cum să le încărcați în Docker Hub.
‫Există de fapt multe etichete, deoarece nu sunt la fel de intuitive cum credeți
‫atunci când le începeți să le folosiți. Ei trebuie să fie într-un anumit format pentru a lucra
‫cu un registru, în special cu Docker Hub. Apoi vă voi vorbi despre relația dintre
‫etichetele care sunt atribuite imaginilor dvs. și identitățile acelor imagini.
‫Deci sa începem.
‫Mai întâi să vorbim despre etichetare. eticheta pentru imaginea de andocare --help. Imaginile nu au un nume tehnic, chiar dacă ne referim la
‫ele așa de bine atunci când vorbim ocazional.
‫Dacă facem o
‫imagine a docului, observați că nu există o coloană de nume.
‫Pe lângă ID-ul imaginii, pe care nici unul dintre noi nu-l va aminti pe cei potriviți?
‫Trebuie să ne referim la acestea prin trei informații diferite.
‫Pe acest ecran pentru comanda imagine ls, vedem doar două dintre ele. În stânga, vedem
‫depozitul,
‫apoi vedem eticheta. Depozitul este compus, de fapt,
‫din numele de utilizator sau din organizație.
‫Aici ne ocupăm doar de imaginile oficiale ale repozitorilor,
‫astfel încât vom vedea doar numele repositorului propriu-zis.
‫Am menționat mai devreme că imaginile speciale care sunt considerate oficiale sunt singurele care
‫obțin dreptul de a fi denumite numele depozitului, și nu numele actual al
‫depozitului organizației.
‫Dar dacă mergem la Docker Hub și căut doar pe mysql, vom găsi că există de fapt o
‫organizație, nu doar doar mysql-ul oficial, care este pur și simplu denumit mysql, dar
‫există organizația SQL cu un server mysql, care pare să fie destul de popular, deoarece
‫are peste un milion de descărcări. Se pare că ceea ce este aici este faptul că acesta
‫este de fapt același server MySQL, dar este de fapt creat de echipa MySQL de la Oracle.
‫Dacă aș fi vrut să îl descarc, veți observa
‫aici, în dreapta, trebuie să fac un server de mysql mysql / mysql-server. De fapt, pot să fac
‫clic pe butonul de copiere și să îl copiez. Acesta va descărca de fapt această imagine unică bazată pe organizație
‫și dacă fac din nou o imagine de andocare, veți observa că numele repozitorului include numele organizației.
‫În contul meu din Docker Hub, sunt cunoscut ca bretfisher. Puteți vedea din partea dreaptă sus.
‫Deci, dacă mă uit la tabloul de bord și mă uit la imaginile mele pe care le
‫am publice, de exemplu, să ne uităm la nodemongoapp.
‫Dacă ați fi descărcat acest
‫lucru, aș fi nevoit să fac docker pull bretfisher / nodemongoapp.
‫Acum, că înțelegem cum se numește repozitoriul pentru ce înseamnă eticheta?
‫Eticheta nu este o versiune destulă și nu este o ramură, dar este foarte asemănătoare cu etichetele Git.
‫Deci este un pic cam ambele.
‫Este într-adevăr doar un pointer la o imagine specifică comite și, într-adevăr, poate fi orice, în acel depozit.
‫Dacă ne-am întors la Docker Hub pentru un minut și ne-am dus la imaginea oficială mysql, veți vedea pe prima pagină că
‫are aceste etichete diferite. Ceea ce încearcă să spună aici este faptul că cei 8. 0. 0
‫și 8. 0 și cele 8 sunt toate etichete pentru același ID de imagine.
‫Dacă mă defilez aici și mă uit la butonul de etichete, primesc o listă completă a tuturor etichetelor
‫pe care le-au dat mysql-ului.
‫Deci haideți să mergem la Nginx, lucru pe care am lucrat mult.
‫Vom vedea aici că nu este vorba doar de numere, ci de nume, de asemenea.
‫Este important să subliniem că acestea sunt de fapt exact aceeași imagine, iar Docker
‫este suficient de inteligent pentru a ști asta. Mă duc la linia de comandă și văd că deja am descărcat ultima versiune de nginx.
‫Dacă m-am uitat la pagina web, văd cea mai recentă etichetă aici, dar se numește și linia principală.
‫Deci, dacă am făcut un docker trage nginx: mainline? Ceea ce ne spune aceasta este că știa deja că, pe baza ID-ului
‫imaginii, această imagine este deja în cache-ul meu. Acum, dacă fac o imagine a
‫docului, o să văd două nginx-uri diferite. Veți observa că aceștia au identitatea exactă a imaginii, deoarece nu sunt într-adevăr stocate de două ori în memoria
‫cache și, din nou, aceasta se întoarce la o mulțime de economii. Aceste etichete sunt doar etichete
‫care indică un ID real de imagine și putem avea multe dintre ele toate indicând la
‫același.
‫Deci, cum fac noi etichete?
‫Ei bine, aș putea să-mi fac propriul Dockerfile și să-mi creez propria imagine personalizată, dar putem, de
‫asemenea, re-eticheta imaginile existente ale Docker-ului, astfel încât să pot face doar o etichetă
‫de imagine a docului nginx bretfisher / nginx. Formatul acestei comenzi este imaginea pe care o voi da mai întâi
‫unei etichete noi și apoi noua etichetă pe care vreau să o dau.
‫Dacă am redeschis din nou un etichetă de imagine de andocare --help, doar pentru a reîmprospăta memoria dvs., acesta
‫arată SOURCE_IMAGE
‫și o etichetă opțională și apoi NEW_IMAGE o etichetă opțională.
‫Deci, dacă nu specificați eticheta, va fi întotdeauna implicită cea mai recentă. Ultimele nu înseamnă întotdeauna mai târziu, deoarece tehnic ar
‫putea să ia ceva software vechi și să-l etichetez mai târziu.
‫Nu este nimic special în privința asta, dar este doar un fel de implicit. Într-adevăr, aș vrea să
‫se numească implicit și nu mai târziu.
‫Deci, este puțin confuz,
‫dar, în general, pe Docker Hub, mai ales când utilizați imagini oficiale, puteți avea încredere că cea
‫mai recentă este, în general, cea mai recentă versiune stabilă a software-ului pe care doriți să îl utilizați.
‫Deci, să facem din nou o
‫imagine de andocare. Observați ce sa întâmplat.
‫Am adăugat o nouă etichetă unei imagini existente pe care nu am făcut-o.
‫Acesta arată același ID de
‫imagine și este etichetat cu numele meu de utilizator și un nou repo care nu există încă pe Docker Hub.
‫Dacă am mers și ne-am uitat
‫la tabloul de bord, nu am nimic numit bretfisher / nginx.
‫Deci, dacă am făcut o împingere a imaginii de tip docker, asemănătoare cu o împingere Git, bretfisher / nginx?
‫refuzat: accesul solicitat la resursă este refuzat.
‫Așa că a încercat în mod clar să încarce ceea ce tocmai am creat, a încercat să încarce acea etichetă, dar mi-a dat
‫acces refuzat.
‫Asta pentru că nu m-am conectat.
‫Deci, dacă te uiți la docker -help veți vedea o comandă de logare și de logout. Nu le-am folosit încă.
‫Deci, odată ce aveți propriul cont Docker Hub gratuit, vă puteți autentifica de la login-ul docker al liniei de comandă.
‫Deci, ceea ce a făcut de fapt a fost că a fost scris acest lucru într-un fișier, care în mod implicit este în profilul meu sub pisică. docher / config. json și, de fapt,
‫a stocat o cheie de autentificare care să permită accesului meu local CLI la Docker Hub ca
‫și mine.
‫Acesta este un punct important pe care îl vom afla mai târziu în producție, că ori
‫de câte ori vă conectați cu Docker CLI, în mod implicit, acesta va stoca această cheie de autentificare pentru contul
‫dvs. în profilul respectivului utilizator.
‫Deci, trebuie doar să fii conștient de asta.
‫Dacă utilizați o mașină pe care nu aveți încredere, atunci când ați terminat, tastați oprire logout.
‫Acum că suntem conectați, o să apăs pe săgeata sus pentru a încerca să împing imaginea din nou.
‫O.K.
‫Așa că se pare că sa terminat.
‫Hai să mergem la Docker Hub și să loviți reîmprospătarea. Acolo este,
‫bretfisher / nginx. Din nou, nu trebuia să fac acest lucru de la zero pentru al încărca.
‫Pur și simplu am dat o etichetă nouă unei imagini existente și când am încărcat-o, a creat
‫automat un nou repo pe baza acelei etichete.
‫Bineinteles ca am putut completa toate informatiile de aici, si veti vedea ca a intarziat la
‫cel mai nou nume de tag deoarece nu am specificat unul. Deci, m-am putut întoarce și m-am întors până
‫când am ajuns la tag-ul meu și aș putea să-i dau o etichetă diferită.
‫Vom adăuga o etichetă suplimentară la aceeași imagine și o voi numi testarea. Dacă facem o imagine a
‫docului,
‫veți vedea că acum am trei cu același ID de imagine.
‫Dacă am făcut o imagine de tip docker push bretfisher / nginx: testing și de această dată am specificat testarea, observați
‫cum se spune că straturile există deja.
‫Aceasta face parte din rata noastră de economii minunată.
‫Când descărcăm și încărcăm imagini, că există deja straturi care există, nu va deranja să le încărcați
‫din nou.
‫Dacă ne întoarcem și am dat de reîmprospătare, veți vedea că acum am o altă etichetă.
‫Dar, desigur, dacă am făcut doar o imagine a docului, vedem exact cum am văzut că este același ID de imagine
‫și că ambele părți ale acestei conexiuni o știu. Dacă aș fi vrut ca acesta să fie un depozit privat, pentru
‫că aceasta este o caracteristică acceptată a Docker Hub, ceea ce probabil aș vrea să fac este să creez mai întâi depozitul
‫și când l-am creat, i-am specificat ca acesta să fie privat.
‫Apoi, când am împins spre el, codul nu va fi niciodată public pe Internet.
‫Wow, sunt foarte multe imagini și etichetele lor.
‫Deci, hai să facem o revizuire rapidă.
‫După cum puteți vedea, puteți eticheta destul de mult imaginile, dar trebuie să fie într-un format
‫specific pentru a lucra cu Docker Hub. Nu puteți suna doar ceva nginx și apoi încărcați-l pentru că
‫nu va funcționa decât dacă are ID-ul contului sau ID-ul organizației în partea din față a acestuia.
‫Apoi am vorbit despre cum puteți avea mai multe etichete pentru același ID de imagine și
‫doar pentru că re-etichetați sau etichetați diferit o imagine existentă, nu schimbă de fapt acel ID de imagine.
‫Rețineți că cea mai recentă etichetă este într-adevăr doar eticheta implicită.
‫Nu este nimic special în privința asta, dar presupunem că presupunem în Docker Hub, este destul de
‫mult standard acolo, că oamenii folosesc cea mai recentă etichetă ca o modalitate de a indica cea mai recentă
‫versiune stabilă a imaginii lor. V-am arătat cum să vă conectați rapid și să ieșiți din Docker Hub din CLI. Amintiți-vă că stochează un ID de sesiune
‫în configurația dvs. locală dacă sunteți pe o mașină Linux și vă asigurați că vă deconectați pentru a o elimina
‫dacă sunteți pe o mașină Linux
‫sau o gazdă comună, cum ar fi un server. Apoi, doar un memento, dacă doriți să creați
‫o imagine privată a Docker Hub, ar trebui să creați mai întâi magazia înainte de ao încărca.