‫Wymagania dla tego wykładu są takie, że widziałeś poprzednie wykłady sieciowe i rozumiesz kluczowe pojęcia
‫dla sieci Docker i związane z nimi polecenia.
‫W porządku.
‫W tym wykładzie nauczysz się i bawisz z DNS i jak wpływa on na kontenery w
‫sieciach niestandardowych i domyślnych.
‫Omówimy szybko,
‫jak ważne jest, abyśmy mieli dobry DNS, ponieważ nie można polegać na adresach IP wewnątrz
‫kontenerów, ponieważ rzeczy są tak dynamiczne. Przyjrzymy się różnicom między sieciami domyślnymi i niestandardowymi pod względem
‫sposobu, w jaki radzą sobie z DNS.
‫A potem sprawdzimy opcję --link dla uruchomienia kontenera w celu włączenia DNS w domyślnej sieci
‫mostowej.
‫Jest jeszcze jedna rzecz, która jest kluczowa dla wszystkich tych kontenerów i sieci wirtualnych i
‫że rozmawiają ze sobą; i to jest nazywanie. Ponieważ w świecie kontenerów ciągle uruchamiających się i
‫znikających oraz przemieszczających się, rozszerzających się i kurczących, a cała cudowność tych mikrousług, które
‫widzimy wszędzie, pojawia się, to, że nie możemy dłużej polegać na adresach IP jako sposobie rozmowy od
‫jednej rzeczy do drugiej. Ponieważ z minuty na minutę nie możemy zakładać, że
‫adresy IP będą takie same.
‫Pojemnik może odejść lub może ulec awarii, a następnie Docker przyniesie go gdzie indziej.
‫Jest to po prostu zbyt dynamiczne i zbyt skomplikowane, aby sobie z tym poradzić.
‫Okazuje się, że jest na to wbudowane rozwiązanie, a mianowicie nazewnictwo DNS. Docker używa nazw kontenerów jako
‫odpowiednika nazwy hosta dla kontenerów rozmawiających ze sobą.
‫Jeśli pamiętasz, właśnie uruchomiliśmy dwa kontenery ...
‫jeśli pamiętasz, Nginx był w nowej sieci o nazwie my_app_net.
‫Dobrze.
‫I ma na sobie tylko jeden pojemnik. Ponieważ utworzyłem tę nową sieć,
‫która nie jest domyślną
‫siecią pomostową, w rzeczywistości uzyskuje specjalną nową funkcję, czyli automatyczne rozpoznawanie DNS dla wszystkich kontenerów w tej sieci
‫wirtualnej ze wszystkich innych kontenerów w tej sieci wirtualnej przy użyciu ich nazw.
‫Gdybym miał utworzyć drugi kontener w tej sieci wirtualnej, będą mogli się znaleźć, bez względu
‫na adres IP, z nazwami swoich kontenerów.
‫Spróbujmy więc: nazwa uruchomienia kontenera dokera ... i nazwiemy to moim nginx ... i określimy sieć jako
‫moją aplikację netto z
‫obrazu nginx.
‫Teraz, jeśli spojrzymy na tę sieć, powinniśmy zobaczyć 2 kontenery; a jeśli wykonam exec
‫kontenera dokującego, z nowo utworzonego właśnie kontenera - oops, potrzebujemy tam również
‫IT - i wykonujemy polecenie ping do nowego nginx, zauważysz,
‫że rozdzielczość DNS po prostu działa. To sprawia, że bardzo łatwo jest mieć jeden kontener
‫i musisz ustawić w nim plik konfiguracyjny, aby porozmawiać, może powiedzmy, że serwer
‫PHP będzie rozmawiał z backendem MySQL. Ctrl-c z tego, a zobaczysz, że działa również w drugą stronę.
‫Jeśli wskoczę do nowego kontenera nginx i spróbuję pingować mój ngnix, zobaczysz, że rozdzielczość działa w obie
‫strony.
‫I to rozwiązuje ogromny problem, gdy spinujesz kontenery, ponieważ nie możesz przewidzieć, jak długo
‫będą trwać i gdzie mogą być za minutę w projekcie produkcyjnym, w
‫którym masz klaster Serwery Docker Swarm.
‫Może więc nie zmienić się bardzo na komputerze lokalnym, ale jeśli zatrzymasz 3 lub 4 kontenery, a
‫następnie uruchomisz te same kontenery i uruchomisz je w innej kolejności,
‫mogą one nie mieć tego samego adresu IP. Ale nazwy hostów lub nazwy kontenerów zawsze będą
‫takie same.
‫Możesz więc na nich polegać.
‫Teraz powinienem zauważyć, że jeśli zrobimy listę sieci dokerów, domyślna sieć mostów ma tutaj jedną wadę.
‫Domyślnie nie ma wbudowanego serwera DNS.
‫Możesz więc użyć opcji --link.
‫Kiedy tworzysz kontener, zauważysz, że istnieje opcja linku i możesz faktycznie określić ręczne linki między
‫kontenerami w tej domyślnej sieci mostów.
‫Ale tak naprawdę jest o wiele łatwiej stworzyć nową sieć dla swoich aplikacji, abyś nie musiał tego
‫robić za każdym razem.
‫A w przyszłej sekcji, gdy mówimy o Docker Compose, zobaczysz, jak wiele z tego staje
‫się jeszcze łatwiejsze, ponieważ Compose automatycznie utworzy nowe sieci wirtualne za każdym razem, gdy uruchomisz z nią aplikację.
‫Dzięki temu komunikacja między kontenerami staje się jeszcze łatwiejsza.
‫W skrócie omówiliśmy w tym wykładzie, w jaki sposób kontenery tak naprawdę nie mogą lub nie powinny polegać na adresach IP,
‫aby ze sobą rozmawiać, ponieważ po prostu nie można na nich polegać.
‫I że DNS jest tutaj naprawdę standardem w tym, jak wykonujemy komunikację między kontenerami na
‫tym samym hoście i między hostami.
‫Dlatego zalecałem, aby zawsze tworzyć niestandardowe sieci, ponieważ jest to po prostu łatwiejsze niż
‫robienie --link cały czas.
‫A potem dałem wam zwiastun na temat Docker Compose i tego, jak to wszystko
‫ułatwi, szczególnie w sieci.