‫Wymagania dotyczące tego wykładu obejmują znajomość podstaw dotyczących kontenera
‫i obrazu w Dockerze i
‫zrozumienia warstw lub przynajmniej podstaw warstw. Wiesz kilka rzeczy o Docker Hub.
‫Ten wykład będzie dotyczył tagów graficznych i sposobu przesyłania ich do Docker Hub.
‫Istnieje wiele tagów, ponieważ nie są one tak intuicyjne, jak mogłoby się wydawać, gdy
‫po raz pierwszy zaczynasz z nich korzystać. Muszą w rzeczywistości być w określonym formacie, aby pracować
‫z rejestrem, w szczególności z Docker Hub. Następnie porozmawiam z tobą o związku
‫między tagami przypisanymi do twoich obrazów i identyfikatorami tych obrazów.
‫Więc zacznijmy.
‫Najpierw porozmawiajmy o tagowaniu. tag obrazu dokowanego --help. Obrazy nie mają technicznej nazwy, mimo że w pewnym sensie odnosimy się
‫do nich w ten sposób, gdy rozmawiamy od niechcenia.
‫Jeśli zrobimy
‫obraz dokowania, zauważysz, że nie ma kolumny nazwy.
‫Poza identyfikatorem obrazu, którego nikt z nas nie będzie pamiętał?
‫Musimy odnieść się do nich za pomocą trzech różnych informacji.
‫Na tym ekranie dla polecenia ls obrazu widzimy tylko dwa z nich. Po lewej stronie
‫widzimy repozytorium,
‫a następnie widzimy tag. Repozytorium składa się faktycznie z
‫nazwy użytkownika lub organizacji slash repozytorium.
‫Tutaj mamy do czynienia tylko z oficjalnymi obrazami
‫repozytoriów, więc zobaczymy tylko rzeczywistą nazwę repozytorium.
‫Wspomnieliśmy wcześniej, że specjalne obrazy, które są uważane za oficjalne, są jedynymi, które mają
‫prawo nazywać się po prostu ich nazwą repozytorium, a nie rzeczywistą nazwą repozytorium
‫slash organizacji.
‫Ale jeśli przejdziemy do Docker Hub, a ja po prostu przeszukuję mysql, okaże się, że
‫istnieje organizacja, nie tylko oficjalny mysql, który jest nazywany mysql, ale
‫istnieje organizacja SQL z serwer mysql, który wydaje się być dość popularny,
‫ponieważ ma ponad milion pobrań. Wygląda na to, że to właśnie jest to
‫ten sam serwer MySQL, ale faktycznie został stworzony przez zespół MySQL w Oracle.
‫Jeśli naprawdę chciałem go pobrać, zauważysz tutaj
‫po prawej stronie, muszę zrobić docker pull mysql / mysql-server. Mogę kliknąć przycisk
‫kopiowania, a ja to skopiuję. To rzeczywiście pobierze ten unikalny obraz oparty na organizacji
‫i jeśli zrobię ponownie obraz w doku, zauważysz, że nazwa repozytorium zawiera nazwę organizacji.
‫Na moim koncie w Docker Hub, jestem znany jako bretfisher. Możesz go zobaczyć w prawym górnym rogu.
‫Więc gdybym spojrzał na mój pulpit nawigacyjny i spojrzał na moje obrazy, które mam, które
‫są publiczne, na przykład, spójrzmy na nodemongoapp.
‫Gdybyś to pobrał,
‫musiałbym zrobić docker pull bretfisher / nodemongoapp.
‫Teraz rozumiemy, jak nazwano repozytorium do czego służy znacznik?
‫Tag nie jest całkiem wersją i nie jest to całkiem gałąź, ale jest bardzo podobny do tagów Git.
‫To trochę po trochu.
‫To naprawdę tylko wskaźnik do konkretnego zatwierdzenia obrazu i naprawdę może to być wszystko, do tego repozytorium.
‫Gdybyśmy wrócili do Docker Hub na minutę, a my poszlibyśmy na oficjalny obraz mysql, na pierwszej stronie zobaczysz
‫te różne tagi. Próbują tu powiedzieć, że 8. 0. 0
‫i 8. 0 i 8 to wszystkie tagi dla tego samego identyfikatora obrazu.
‫Jeśli przejdę tutaj i spojrzę na przycisk tagów, otrzymam pełną listę wszystkich
‫znaczników, które podali mysql.
‫Przejdźmy więc do Nginx, nad którym dużo pracowaliśmy.
‫Zobaczymy, że to nie tylko liczby, ale tak naprawdę to także nazwy.
‫Ważne jest, aby zaznaczyć, że są to w rzeczywistości dokładnie te same obrazy, a
‫Docker jest wystarczająco inteligentny, aby o tym wiedzieć. Idę do mojej linii poleceń i widzę, że mam już pobrany najnowszy nginx.
‫Jeśli spojrzałem na stronę internetową, widzę tu najnowszy tag, ale jest on również nazywany linkiem głównym.
‫A co jeśli zrobiłbym dokowanie pull nginx: mainline? Mówi nam to, że faktycznie już wiedział, że na podstawie identyfikatora obrazu ten
‫obraz jest już w mojej pamięci podręcznej. Teraz jeśli zrobię ponownie
‫obraz doka, zobaczę dwa różne nginx. Zauważysz, że mają dokładnie ten sam identyfikator obrazu, ponieważ nie są tak naprawdę przechowywane dwa
‫razy w pamięci podręcznej, a to znowu oznacza wiele oszczędności. Te znaczniki są tylko
‫etykietami wskazującymi na rzeczywisty identyfikator obrazu, a wiele z nich może wskazywać na ten
‫sam.
‫Jak więc utworzyć nowe etykiety?
‫Mogłabym stworzyć własny plik Dockerfile i stworzyć własny niestandardowy obraz, ale możemy również
‫ponownie oznaczyć istniejące obrazki Docker, więc mogę po prostu zrobić tag
‫obrazu dokowanego nginx bretfisher / nginx. Format tego polecenia jest obrazem, który zamierzam nadać
‫nowemu znacznikowi najpierw, a następnie nowemu znacznikowi, który chcę nadać.
‫Jeśli zrobiłem tag obrazu dokowanego --help ponownie, aby odświeżyć pamięć, pokazuje SOURCE_IMAGE
‫i
‫opcjonalny tag, a następnie NEW_IMAGE opcjonalny tag.
‫Jeśli więc nie określisz tagu, zawsze będzie on domyślny jako najnowszy. Najnowsze nie zawsze oznacza najnowsze, ponieważ
‫technicznie mogę wziąć stare oprogramowanie i oznaczyć je najnowszym.
‫Nie ma w tym nic szczególnego, ale jest to po prostu rodzaj defaultu. Naprawdę, szkoda, że
‫nie nazwaliby go domyślnym i nie najnowszym.
‫Jest to
‫trochę mylące, ale na ogół w Docker Hub, szczególnie gdy używasz oficjalnych obrazów,
‫możesz mieć pewność, że najnowszy jest ogólnie najnowszą stabilną wersją oprogramowania, którego chcesz użyć.
‫Zróbmy więc ponownie
‫obraz dokowania. Zauważ, co się stało.
‫Dodałem nowy tag do istniejącego obrazu, którego nie zrobiłem.
‫Wyświetla ten sam identyfikator
‫obrazu, a teraz jest oznaczony moją nazwą użytkownika i nowym repozytorium, które jeszcze nie istnieje w Docker Hub.
‫Jeśli poszliśmy i spojrzeliśmy na mój
‫pulpit nawigacyjny, nie mam nic o nazwie bretfisher / nginx.
‫A co, gdybym zrobił push obrazka w doku, podobnie jak w Git push, bretfisher / nginx?
‫denied: odmówiono dostępu do zasobu.
‫Więc wyraźnie próbował przesłać to, co właśnie stworzyłem, próbował przesłać ten tag, ale odmówił mi
‫dostępu.
‫To dlatego, że nie zalogowałem się.
‫Więc jeśli spojrzysz na docker - help zobaczysz polecenie logowania i wylogowania. Jeszcze ich nie wykorzystaliśmy.
‫Tak więc, gdy masz już swoje własne darmowe konto Docker Hub, możesz się zalogować z poziomu okna logowania w oknie wiersza poleceń.
‫Więc to, co tak naprawdę było, to było napisane w pliku, który domyślnie znajduje się w moim profilu pod kodem. docker / config. json, i faktycznie przechowywał
‫klucz uwierzytelniający, który pozwoliłby mojej lokalnej stacji dokującej CLI na dostęp do Docker Hub jako
‫mnie.
‫Ważnym punktem, o którym dowiemy się później w produkcji, jest to, że
‫zawsze, gdy logujesz się przy pomocy interfejsu Docker CLI, domyślnie będzie przechowywać klucz uwierzytelniający dla twojego konta
‫w profilu tego użytkownika.
‫Więc bądź tego świadomy.
‫Jeśli korzystasz z maszyny, której nie ufasz, po zakończeniu wpisz typ wyloguj.
‫Teraz, gdy jesteśmy już zalogowani, zamierzam nacisnąć strzałkę w górę, aby spróbować ponownie przesłać ten obraz.
‫DOBRZE.
‫Wygląda na to, że tak się stało.
‫Przejdźmy do Docker Hub i odświeżmy. Oto,
‫bretfisher / nginx. Ponownie, nie musiałem tworzyć od zera, aby go przesłać.
‫Właśnie dodałem nowy tag do istniejącego obrazu, a kiedy go przesłałem, automatycznie utworzył
‫nowe repozytorium oparte na tym tagu.
‫Oczywiście mógłbym wypełnić wszystkie informacje tutaj, a zobaczysz, że domyślnie jest
‫to ostatnia nazwa tagu, ponieważ nie określiłem jej. Mógłbym więc wrócić i wykonać zadanie ze
‫strzałką w górę, aż dotrę do mojego tagu, a ja mógłbym podać inny tag.
‫Zamierzamy dodać dodatkowy tag do tego samego obrazu i mam zamiar nazwać to testowaniem. Jeśli zrobimy obraz dokowania,
‫zobaczysz, że mam teraz trzy wszystkie z tym samym identyfikatorem obrazu.
‫Jeśli zrobiłem obraz dokowany push bretfisher / nginx: testing, a tym razem określiłem testowanie, zauważ, że jest
‫napisane, że warstwy już istnieją.
‫To część naszej niesamowitej stopy oszczędności.
‫Kiedy pobieramy i przesyłamy obrazy, że istnieją już warstwy, nie będzie im
‫to przeszkadzać.
‫Jeśli wrócimy i odświeżę, zobaczysz, że mam teraz inny tag.
‫Ale oczywiście, gdybym po prostu zrobił obraz doka, widzimy, tak jak widzieliśmy, że jest to ten sam identyfikator obrazu
‫i obie strony tego połączenia wiedzą o tym. Jeśli chciałbym, aby to było prywatne repozytorium, ponieważ
‫jest to obsługiwana funkcja Docker Hub, prawdopodobnie chciałbym najpierw utworzyć repozytorium, a kiedy je
‫utworzyłem, określiłem, że ma być prywatny.
‫Potem, kiedy do tego popchnęłam, kod nigdy nie będzie publicznie dostępny w Internecie.
‫Wow, jest wiele zdjęć i ich znaczników.
‫Zróbmy więc krótką recenzję.
‫Jak widać, prawie wszystko można oznaczać na obrazkach, ale muszą one być w określonym
‫formacie do pracy z Docker Hub. Nie możesz po prostu wywołać czegoś nginx, a następnie
‫przesłać go, ponieważ nie zadziała, chyba że ma przed sobą identyfikator konta lub identyfikator organizacji.
‫Potem rozmawiałem o tym, jak możesz mieć wiele tagów dla tego samego identyfikatora obrazu i tylko
‫dlatego, że ponownie tagujesz lub tagujesz inaczej istniejący obraz, tak naprawdę nie zmienia on tego identyfikatora obrazu.
‫Pamiętaj, że najnowszy tag to tak naprawdę domyślny tag.
‫Nie ma w tym nic szczególnego, ale zakładamy, że w Docker
‫Hub jest to normą, że ludzie używają najnowszego tagu jako sposobu wskazania najnowszej
‫stabilnej wersji swojego obrazu. Pokazałem ci, jak szybko zalogować się i wyjść z Docker Hub z CLI. Pamiętaj, że przechowuje on identyfikator sesji
‫w twojej lokalnej konfiguracji, jeśli jesteś na maszynie z Linuksem i upewniasz się, że wylogowałeś się, aby ją usunąć,
‫jeśli jesteś na wspólnym komputerze
‫z systemem Linux lub na hoście, jak na serwerze. Następnie, po prostu przypomnienie, jeśli chcesz
‫utworzyć prywatny obraz Docker Hub, prawdopodobnie powinieneś najpierw utworzyć repozytorium przed jego przesłaniem.