‫Co mamy zrobić z tym plikiem?
‫Cóż, wyjdźmy. W tym katalogu zobaczymy, że mamy tylko ten jeden plik.
‫Ma zaledwie kilogram.
‫Oczywiście nie ma w nim nic poza tekstem, ale instrukcje, jak budować
‫nasz wizerunek.
‫Polecenie od, podczas budowania tego obrazu, faktycznie przeniesie ten debianowy obraz jessie z Docker Hub do
‫mojej lokalnej pamięci podręcznej. A potem będzie wykonywał linię po
‫linii każdej z tych zwrotek w moim silniku dokowania i buforował każdą
‫z tych warstw.
‫Wpiszmy obrazek w docker, a my go otagujemy.
‫Pamiętaj, to jest nazwa, którą zamierzamy nadać obrazowi.
‫Ponieważ mam zamiar używać tego obrazu lokalnie, nie muszę używać mojej nazwy konta Docker Hub. Mogę to nazwać, co
‫chcę.
‫Zamierzam nazywać to niestandardowym nginxem, i zamierzam umieścić tutaj kropkę, która zasadniczo mówi, zbudować plik
‫docker w tym katalogu. Zobaczysz, jak przechodzi przez
‫to, że każdy krok jest linią w pliku dokowanym, który wykonuje wewnątrz tego obrazu podczas jego budowania.
‫A na końcu jest trochę skrótu, który jest tak naprawdę hashem, który zachowuje
‫w pamięci podręcznej kompilacji, aby następnym razem, gdy to zbudowaliśmy, jeśli ta linia nie zmieniła
‫się w pliku dockerfile, nie powtórzy tego.
‫Jest to jedna z magicznych cech tego, dlaczego Docker sprawia, że wdrażanie i tworzenie oprogramowania jest tak szybkie,
‫że faktycznie jest wystarczająco inteligentne, aby buforować kroki w kompilacji.
‫Często zdarza się, że po tym, jak po raz pierwszy stworzyłeś obraz, a Ty po prostu
‫zmieniasz swój niestandardowy kod źródłowy i niekoniecznie zmieniając samą aplikację, wszystkie
‫te instalacje już się wydarzyły.
‫Będziesz miał bardzo krótkie czasy budowy.
‫Okay, więc teraz skończyliśmy budować. To zajęło około minuty.
‫Ale co jeśli wrócę do tego pliku? Zamierzam dodać dodatkowy odsłonięty port.
‫Na przykład zamierzam zrobić 8080.
‫To nie znaczy, że nginx jest na tyle sprytny, by wiedzieć, że otwieram ten port, lub że
‫w jakikolwiek sposób komunikuje się z nginx.
‫To tylko ja pozwalając kontenerowi na odbieranie pakietów na tym porcie.
‫Dla pewności, zróbmy obrazek dokowania. Zobaczymy na samej górze, że jest automatycznie oznaczony jako
‫najnowszy, prawda?
‫Ponieważ nazwaliśmy go tylko nazwą repozytorium.
‫W rzeczywistości nie nadaliśmy jej nazwy znacznika dwukropka, gdy oznaczyliśmy ją tagiem.
‫Zbudujmy to ponownie.
‫Wow, to było szybkie, prawda?
‫To zajęło nam tylko kilka sekund. Zauważysz, że na każdym kroku będzie to oznaczać użycie pamięci podręcznej. Począwszy od kroku 2, będzie to powiedzieć,
‫używając pamięci
‫podręcznej, używając pamięci podręcznej na 3, przy użyciu pamięci podręcznej na 4. Na 5, rozpoznaje w kroku 5, że ta
‫linia jest inna.
‫Więc faktycznie wykonuje to w kontenerze. Następnie, w kroku 6, musi ponownie uruchomić tę
‫linię, ponieważ z chwilą zmiany linii, każda kolejna linia musi zostać ponownie przebudowana.
‫Podnosi to punkt dotyczący porządkowania linii w pliku Dockerfile. Ponieważ, jeśli masz problemy z zamówieniem,
‫na przykład,
‫jeśli skopiowałeś kod ... załóżmy, że budujesz stronę internetową. Jeśli kopiujesz kod
‫oprogramowania, który tworzysz na samym początku pliku, to za każdym razem, gdy zmienisz plik
‫źródłowy i przebudujesz, będzie musiał ponownie skompilować cały plik Dockerfile.
‫Jest więc niezwykle ważne dla twojego rozsądku i czasu, że zwykle trzymasz rzeczy na górze pliku
‫Docker, które zmieniają najmniej, a następnie rzeczy, które zmieniają się najbardziej na dole twojego
‫Dockerfile.