‫Witam.
‫Ten filmik powstał z dwóch powodów.
‫Jeden, jest na wypadek, gdybyś nie chciał uruchomić Dockera lokalnie.
‫Chcesz uruchomić Dockera na serwerze zdalnie, czy to dla produkcji, jakiegoś innego użycia serwera, czy po prostu
‫dlatego, że nie możesz uruchomić Dockera lokalnie ze względu na licencjonowanie zasobów wydajności, wiesz, że nie jesteś lokalnym
‫adminem.
‫Mogą to być najróżniejsze powody.
‫Czyli chodzi o silnik Docker dla serwerów linuksowych.
‫Powodem, dla którego mówię, że jest to silnik i serwery są kluczowe elementy, które dostaniemy w całym tym filmie.
‫Ten film skupi się na uzyskaniu najbardziej aktualnej instalacji Dockera z właściwej lokalizacji, która
‫różni się od domyślnych menedżerów pakietów Linuksa.
‫Następnie upewnimy się, że zasilanie jest zainstalowane gdziekolwiek będziesz go obsługiwać,
‫więc nie ssh ing do serwera przez cały czas.
‫Właściwie zamierzamy skonfigurować go tak, abyśmy mogli kontrolować go zdalnie, co jest najlepszym sposobem na uruchomienie
‫silnika Docker na serwerze Linux?
‫I mały disclaimer, jeśli nie oglądaliście poprzedniego filmiku, który dotyczy pulpitu
‫Docker dla desktopów linuksowych, to nie jest to.
‫To jest zanim mieliśmy Docker desktop, mieliśmy tylko silnik Docker.
‫Każdy pulpit Docker ma w sobie silnik Docker.
‫Zarządza nim za Ciebie, ale silnik Docker, to pojedyncza binaria zwana Docker D lub Docker Daemon, i która może
‫działać na każdym serwerze Linux.
‫Tak długo, jak masz jądro Linuksa, możesz uruchomić to samo.
‫Możesz go uruchomić na serwerze Windows, Docker RD ESXi, który mógłby faktycznie uruchomić jako usługę na serwerze Windows, aby uruchomić
‫Windows Containers.
‫Ale nie będziemy o tym mówić w tym filmie.
‫Więc pulpit Dockera, który jest do uruchomienia na lokalnym systemie, to naprawdę tylko do lokalnego wykorzystania
‫Dockera.
‫Ale to jest silnik Docker, który może działać na dowolnym systemie Linux, czy to lokalnym, czy zdalnym, czy
‫to maszyna wirtualna, czy fizyczny serwer, to Raspberry Pi, cokolwiek to jest.
‫Jeśli działa na jądrze Linuksa, jest na liście, a Docker ma kompatybilną listę przetestowanych wspieranych kompilacji,
‫które wiedzą, że działają.
‫To nie jest każda dystrybucja Linuksa.
‫Nie obejmuje BSD, który technicznie nie jest Linuksem, i naprawdę skupia się na tych największych,
‫wiesz, Central West, Red Hat, Ubuntu, Debian, tego typu rzeczy.
‫I są różne architektury, które będzie wspierać.
‫Więc jako odniesienie w tym filmie, zobaczysz link do tej strony, która pokazuje listę obecnie
‫obsługiwanych dystrybucji Linuksa dla silnika.
‫Oczywiście zamierzam używać Dockera na Ubuntu, mojej ulubionej serwerowej dystrybucji Linuksa, i zamierzam krok po kroku przeprowadzić
‫cię przez to.
‫Zamierzam przeoczyć szczegóły, ponieważ naprawdę zamierzasz tylko przeczytać to lub uruchomić skrypt,
‫o którym porozmawiamy dalej.
‫Teraz, tak, daję ci linki jako zasoby do tego wideo dla całej dokumentacji wokół wszystkich sposobów, aby zainstalować
‫go na wariantach Linuksa, dystrybucjach takich jak Ubuntu, Fedora i wszystkich innych.
‫Ale naprawdę najłatwiejszym sposobem na zrobienie tego przez większość czasu jest po prostu uruchomienie skryptu.
‫Jeśli w przeglądarce wpiszesz: get Docker.
‫To da ci skrypt powłoki, na który możesz spojrzeć, możesz pobrać, możesz uruchomić automatycznie.
‫Z Curl, to ma na celu zasadniczo uzyskać odpowiednie ustawienia i odinstalować stare rzeczy, zainstalować nowe rzeczy, upewnić
‫się, że otrzymujesz odpowiednie źródła i wszystkie te rzeczy za jednym zamachem.
‫Który to sposób zawsze instalowałem Docker, odkąd dowiedziałem się o nim way, way back na początku
‫projektu.
‫Więc może do nauki, może pierwszy raz instalujesz Docker na serwerze Linux, idziesz za dokumentacją,
‫która przechodzi krok po kroku z twoim menedżerem pakietów.
‫Może to apt, może to yum, może to APK tylko w zależności od tego, co robisz na swoim distro Linux.
‫Ale zamierzam użyć tego skryptu, który jest łatwiejszy.
‫To w zasadzie zwijanie skryptu do pliku, a następnie uruchamianie tego pliku za pomocą powłoki.
‫I to jest dokładnie to, co ten skrypt, gdybyś przeszedł do ostatniego slajdu, powiedziałby ci, abyś skopiował i wkleił
‫to i skopiował w dół, a następnie uruchomił.
‫Więc robimy to i to będzie zorientować się, na jakiej dystrybucji jestem, jaka wersja
‫tej dystrybucji, czy są wspierane to połączy się w tym przypadku apt z menedżerem pakietów z kluczem, aby upewnić
‫się, że masz prawo.
‫Repozytorium dla twojej instalacji, a następnie to polecenie działa przez kilka minut w zależności od tego, jak szybki jest twój
‫serwer.
‫A potem kończysz tutaj z powrotem w swojej powłoce prompt z wierszem poleceń Docker, silnikiem Docker
‫lub Daemon i kilkoma innymi narzędziami.
‫Zwykle przychodzi z kilkoma wtyczkami, takimi jak build kit do budowania obrazów, compose do uruchamiania tego.
‫Do tego wszystkiego dojdziemy w trakcie kursu.
‫Więc zdaj sobie sprawę, że w twoim systemie jest może cztery lub pięć binariów.
‫Teraz, podobnie jak wszystkie inne sposoby, w jakie możesz zainstalować Dockera, wykonaj polecenie Docker space version,
‫wpisz to polecenie w swojej powłoce, a powinieneś otrzymać z powrotem przynajmniej klienta linii poleceń i wersję serwera.
‫Kiedy otrzymasz z powrotem tę wersję serwera, oznacza to, że jesteś w stanie rozmawiać z API serwera na tym serwerze.
‫Jeśli jesteś na powłoce serwera, to technicznie rozmawia z lokalnymi hostami za pomocą gniazda.
‫Chcę tylko przypomnieć, że wszystko, co właśnie zrobiłeś, jest open source, silnik Docker,
‫linia poleceń Docker, wszystkie wtyczki tam.
‫Te wszystkie są w pełni open source.
‫Pulpit Dockera na licencji Apache, jednak z poprzednich filmów zawiera wszystkie te rzeczy, jak również zamknięte
‫oprogramowanie źródłowe lub licencjonowane od Dockera.
‫Pulpit Docker jest o wiele bardziej supersetem kilku różnych rzeczy.
‫Silnik Docker tutaj, który instalujemy to tylko gołe minimum.
‫To demon, który jest potrzebny do uruchomienia kontenera w Dockerze.
‫I dla przypomnienia, tak jak robiłem to w poprzednich filmach, jeśli używasz polecenia logowania Docker, ponieważ masz
‫tutaj tylko dostęp do linii poleceń, jeśli wpiszesz Docker space, zaloguj się, możesz zalogować się za pomocą
‫swojego identyfikatora Docker ID, a to pozwoli ci uzyskać więcej puli.
‫Jeśli pamiętasz, baseny to rzeczy z pierwszych kilku filmów w tym kursie, które zawierają oprogramowanie.
‫Wyciągasz obraz, a następnie uruchamiasz go jako kontener i robisz to określoną liczbę razy.
‫I Docker może ostatecznie narzekać i powiedzieć, Hej, spójrz, przekroczyłeś i myślę, że obecna
‫liczba jest jak 106 godzin.
‫Pisze, że przekroczyłeś liczbę basenów.
‫Cóż, jeśli jesteś za korporacyjnym firewallem i wszyscy w twojej firmie używają Dockera
‫i wszyscy są za jednym adresem IP, ten limit może zostać uderzony dość szybko.
‫Ale jeśli po prostu się zalogujesz, Docker daje ci co najmniej podwójną ilość ściągnięć za nic za darmo z darmowym kontem, jeśli
‫zapłacisz za Dockera, czego nie musisz z tym kursem, ale jeśli chciałeś zapłacić
‫za Dockera za subskrypcję Dockera, dostałbyś, jak sądzę, nieograniczone pule tak długo, jak długo logowałeś
‫się z tym kontem.
‫Przejdźmy jednak do kontrolowania tego demona lokalnie.
‫Teraz, co się stanie, to jakikolwiek system, którego zamierzasz użyć, powiedzmy, że jest to konfiguracja
‫serwera, lub może być tak, że nie chcesz uruchomić Dockera na swojej lokalnej maszynie.
‫Może nie wolno, może nie można.
‫Może nie masz wystarczających środków.
‫Może nie jesteś rootem na swojej lokalnej maszynie.
‫Ale masz możliwość uruchomienia Dockera na tej zdalnej maszynie.
‫Cóż, nie musisz siedzieć w powłoce na tej zdalnej maszynie i wpisywać tam wszystkich swoich poleceń i wykonywać tam
‫całej swojej pracy z kodem źródłowym lub klonować repo dla tego kursu.
‫Nie można tam nic zrobić.
‫Możesz to zignorować.
‫Można tam właściwie zainstalować Dockera i będziemy z nim zdalnie rozmawiać.
‫Teraz cofnijmy się na chwilę.
‫Lata temu, zanim ta funkcja tunelu SSH istniała gdzieś około 2018 roku, wtedy przed tym musiałbyś albo ssh do serwera
‫i zrobić wszystko na serwerze i to rodzaj czasami ssie, ponieważ wtedy musisz skopiować swoje rzeczy
‫nad i to po prostu nie jest świetne.
‫Masz wszystko inne lokalnie, masz swój edytor kodu, może używasz kodu Visual Studio
‫i masz swój kod źródłowy dla tej klasy i masz rzeczy tutaj, prawda?
‫Więc idealnie chcesz wykonać całą tę pracę na swojej lokalnej maszynie.
‫Docker rozwiązał to, gdy po raz pierwszy pojawił się w 2013 roku.
‫Jedynym sposobem, w jaki mogliśmy to zrobić, był port TCP, który nie ma wbudowanego uwierzytelniania
‫i domyślnie nie zapewnia szyfrowania połączenia.
‫Więc ogólnie uznano, że jest to zły sposób na połączenie z Dockerem.
‫To było coś, co chciałeś zrobić tylko w bezpiecznych sieciach, a zwłaszcza dlatego, że nie było uwierzytelnione.
‫Technicznie może to pozwolić na zdalny dostęp root do serwera, jeśli po prostu połączysz się z dowolnego miejsca,
‫które ma dostęp do tego portu, to zły pomysł.
‫Więc Docker następnie dodał tę nową funkcję wbudowaną w to, że możemy po prostu zrobić przezroczyste połączenie SSH,
‫o ile możesz SSH do tego serwera i masz uwierzytelnianie lub certyfikat, najlepiej do SSH do tego serwera.
‫Możesz to zrobić i nie musisz skakać przez obręcze lub wystawiać żadnych dodatkowych portów.
‫Więc to właśnie zamierzamy zrobić.
‫Więc ten krok tutaj jest po prostu uzyskać klienta wiersza poleceń Docker na dowolnym systemie, z którego
‫będziesz pracować i może to być na Windows, Mac, Linux, Raspberry, PIs, cokolwiek.
‫Po prostu zdobądź klienta linii poleceń, jeśli jesteś na macu.
‫O dziwo instalator brew, który jeśli nie wiesz o brew, brakuje ci najlepszego instalatora
‫dla Maca i Brew install Docker tak naprawdę nie instaluje pełnego silnika Docker lub pulpitu Docker.
‫Instaluje tylko klienta, bo są.
‫Nie ma silnika Docker dla Maca.
‫Jądra Mac nie obsługują kontenerów, więc instalacja o dziwo instaluje tylko linię poleceń, co w tym przypadku jest
‫tym, czego chcemy.
‫Jeśli twoja lokalna maszyna to Linux, możesz użyć pakietu instalacyjnego Linux z dokumentacji Dockers,
‫a następnie, gdy masz ten pakiet ustawiony jako repozytorium, możesz następnie apt zainstalować pakiet Docker CCI
‫z tego repozytorium.
‫I na koniec, jeśli jesteście na Windowsie, to być może słyszeliście o Chocolaty.
‫To jeden z menedżerów pakietów dla systemu Windows w dzisiejszych czasach.
‫I możesz zrobić chocolatey install, aby zainstalować tylko klienta linii poleceń.
‫Ale Docker ma również wszystko to wyjaśnione w ich dokumentacji, gdzie mówią ci, jak możesz uzyskać biblioteki
‫klienckie dla twojego systemu operacyjnego i po prostu bibliotekę klienta.
‫Ok.
‫Chwila prawdy.
‫Zainstalowałeś silnik Docker na serwerze Linux.
‫Niezależnie od tego, do czego zamierzasz go użyć, czy to tylko do praktyki, czy do prawdziwej
‫produkcji, masz Dockera na serwerze, masz teraz klienta na Southern, twojej lokalnej maszynie.
‫Powinienem przypomnieć, że wszystkie te rzeczy, które właśnie mówię o instalacji klienta, jeśli masz
‫już zainstalowany pulpit Docker, nie musisz tego robić.
‫Docker desktop jest dostarczany z klientem, ale możemy powiedzieć klientowi, gdzie ma wskazywać, aby rozmawiać z
‫silnikiem serwera i to właśnie teraz zrobimy.
‫Więc wyobraź sobie, że mogę powiedzieć do serwera z czymś takim jak to polecenie tutaj, ssh route na adres IP lub nazwę
‫hosta.
‫I powiedzmy, że mam certyfikat SSH.
‫Więc to wszystko zakłada, że rozumiesz podstawy SSH, że wiesz jak uzyskać certyfikat na serwerze,
‫abyś mógł się zdalnie zalogować.
‫Jest tam mnóstwo tutoriali na ten temat i ta wiedza jest zakładana.
‫Ponownie, podstawowa wiedza o Linuksie jest zakładana przed zaangażowaniem się w Dockera.
‫Więc zakładając, że możemy to zrobić, jeśli mam ten dostęp, wtedy wszystko, co musiałbym zrobić, to stworzyć zmienną środowiskową.
‫Zmienna środowiskowa Docker underscore host mówi linii poleceń Docker, z którym serwerem rozmawiać
‫domyślnie.
‫Jeśli po prostu zainstalujesz Dockera na czymś i zaczniesz używać linii poleceń, zakłada on lokalne gniazdo
‫lub lokalny host.
‫I tak nie ma nawet tej zmiennej środowiskowej.
‫I domyślnie, jeśli jest pusta, ta zmienna środowiskowa, nawet jeśli Docker próbuje
‫ją wyszukać i nie znajduje, powie, ok, musisz założyć, że muszę rozmawiać z lokalnym hostem
‫i zrobi to po prostu dobrze.
‫Ale jeśli zmienimy to, dodając export docker host equals ssh colon slash slash tak jak używałbyś
‫w https URL.
‫Więc jeśli zastąpimy to ssh colon's slash username at hostname, wtedy mogę wskoczyć do dockera, po prostu wpisując zwykłe
‫polecenia dockera.
‫Więc zauważ, że wpisuję tutaj wersję docker, ale nie mam Dockera uruchomionego na mojej lokalnej maszynie.
‫Po prostu mam tego klienta Dockera i on już SSH bezpośrednio przez internet do tej zdalnej instancji chmury,
‫którą przed chwilą skonfigurowałem i zwraca wersję serwera jak i wersję klienta.
‫Gdybyś zaczął grzebać, to faktycznie zobaczyłbyś, że jestem na Darwinie, czyli Mac OS dla
‫mojego klienta, a gdybyśmy przewinęli serwer w dół, to pokazałby się Linux, bo tam właśnie
‫działa silnik serwera i tyle.
‫To wszystko, co musisz zrobić.
‫Jeśli chcesz wyłączyć tę zmienną środowiskową Docker underscore host, wtedy twój wiersz poleceń Docker powróciłby do twojej
‫lokalnej maszyny, zakładając, że masz silnik uruchomiony lokalnie i możesz przełączać się
‫tam i z powrotem.
‫W rzeczywistości możesz mieć kilka różnych serwerów i po prostu zmienić zmienną środowiskową w każdej używanej
‫powłoce, aby powiedzieć jej, z którym serwerem rozmawiać.
‫Istnieje polecenie kontekstu Docker, które również może to zrobić.
‫Na razie nie będziemy o tym mówić.
‫To jest bardziej zaawansowane na późniejszy kurs, ale technicznie istnieje wbudowane polecenie
‫o nazwie Docker context, które pozwala zapisać te ustawienia i zarządzać listą różnych silników, z którymi chcesz rozmawiać.
‫Ale ten jest świetny na początek, a ostatnim krokiem jest sklonowanie repozytorium dla tego kursu lokalnie, ten,
‫który jest wspomniany kilka wykładów wstecz w pisemnych wykładach, gdzie jest repo kursu, który można
‫pobrać, chcesz umieścić go na swojej lokalnej maszynie wraz z edytorem kodu i wszystko
‫inne i klienta Docker.
‫Jedyną rzeczą, która będzie na serwerze jest silnik, który zainstalowaliśmy i nie będziemy musieli
‫ciągle do niego ssh, ponieważ wszystkie polecenia Dockera, które uruchamiamy lokalnie, będą po prostu wykonywane przeciwko temu zdalnemu
‫serwerowi.
‫Ten zdalny serwer.
‫Przy okazji, pamiętaj, że zawsze, gdy wpisuję local host w przeglądarce, aby przetestować rzeczy w Dockerze, na przykład stronę
‫internetową lub coś, co uruchamiamy w Dockerze, nie będziesz wpisywał local host, będziesz wpisywał
‫nazwę hosta serwera lub adres IP, na którym zainstalowałeś Dockera.
‫To jest maszyna, która uruchamia silnik, uruchamiając twoje kontenery, i że będziesz musiał wpisać
‫w przeglądarce.
‫Lub jeśli uruchamiasz jakiekolwiek inne lokalne polecenia, takie jak curl lub ping, będziesz musiał
‫wykonać je na tym IP serwera I to wszystko.
‫Masz teraz silnik działający na serwerze Linux gdzieś na świecie.
‫Działasz na swoim lokalnym systemie ze swoim kodem i swoim repo i wszystkim innym, i jesteś gotowy do rozpoczęcia
‫pracy.