﻿1
00:00:02,530 --> 00:00:10,610
‫W tym wykładzie porozmawiamy o montowaniu bindów i trwałych danych w tych mountach. Wymagania są tak naprawdę, że wiesz

2
00:00:10,610 --> 00:00:15,300
‫tylko o zarządzaniu pojemnikami i jak uruchamiać pojemniki.

3
00:00:15,320 --> 00:00:20,230
‫Wskakujmy. Porozmawiajmy o mocowaniu bindów. W rzeczywistości są całkiem fajne.

4
00:00:20,240 --> 00:00:25,550
‫Kiedy po raz pierwszy się o nich dowiedziałem, dał mi aha, jak mogę łatwo użyć Dockera do

5
00:00:25,550 --> 00:00:26,180
‫lokalnego rozwoju.

6
00:00:26,180 --> 00:00:33,380
‫Naprawdę, mocowanie bind jest po prostu mapowaniem plików hosta lub katalogów do pliku lub katalogu

7
00:00:33,380 --> 00:00:35,330
‫kontenera. Możesz to zrobić.

8
00:00:35,330 --> 00:00:39,040
‫Możesz podać katalog lub pojedynczy plik. W tle jest to

9
00:00:39,050 --> 00:00:43,780
‫po prostu, że dwie lokalizacje wskazują te same fizyczne lokalizacje na dysku.

10
00:00:43,910 --> 00:00:49,730
‫Ponownie, to faktycznie pomija UFS, podobnie jak inne woluminy, tak aby nie zniszczyć

11
00:00:49,730 --> 00:00:52,620
‫lokalizacji hosta po usunięciu kontenera.

12
00:00:52,640 --> 00:00:58,550
‫Jeśli w kontenerze znajdują się pliki, które mapujesz pliki hosta, wygrywają pliki hosta. W rzeczywistości nie usuwa plików w

13
00:00:58,550 --> 00:01:03,650
‫kontenerze, które zostały nadpisane, ponieważ nie nadpisuje niczego w

14
00:01:03,680 --> 00:01:04,770
‫kontenerze.

15
00:01:04,910 --> 00:01:07,100
‫Jest tam, gdy istnieje moc wiązania.

16
00:01:07,100 --> 00:01:11,570
‫Z chwilą, gdy nie potrzebujesz już montowania wiązania i ponownie uruchomisz kontener bez

17
00:01:11,570 --> 00:01:17,650
‫niego, zobaczysz podstawowe dane, które były tam wcześniej. Ponieważ mocowanie bindów jest zwykle specyficzne dla hosta,

18
00:01:17,660 --> 00:01:21,870
‫muszą one posiadać określone dane na dysku twardym hosta, aby mogło działać.

19
00:01:21,890 --> 00:01:23,500
‫Nie można ich określić w pliku Dockerfile.

20
00:01:23,510 --> 00:01:29,080
‫Trzeba ich używać w środowisku wykonawczym, gdy używana jest komenda uruchomienia kontenera dokowanego. Możesz zobaczyć format tutaj.

21
00:01:29,090 --> 00:01:33,980
‫To jest naprawdę-v, którego używaliśmy wcześniej, tylko po lewej stronie dwukropka,

22
00:01:34,100 --> 00:01:38,360
‫w rzeczywistości wprowadzamy pełną ścieżkę, a nie tylko nazwę.

23
00:01:38,360 --> 00:01:42,260
‫Sposób, w jaki Docker rzeczywiście odróżnia podaną objętość, tak jak zrobiliśmy to

24
00:01:42,410 --> 00:01:46,490
‫chwilę temu, i mocowanie bindów, to mocowanie bind zaczyna się od przedniego ukośnika.

25
00:01:46,490 --> 00:01:51,470
‫W systemie Windows zauważysz, że są to dwa ukośniki, a następnie litera dysku, a następnie

26
00:01:51,470 --> 00:01:52,120
‫ścieżka.

27
00:01:52,130 --> 00:01:57,620
‫Tak długo, jak masz lewy dwukropek i prawą stronę, możesz naprawdę mapować wszystko, co chcesz od hosta

28
00:01:57,620 --> 00:02:01,860
‫do kontenera, a także możesz określać takie rzeczy jak tylko do odczytu.

29
00:02:01,880 --> 00:02:07,910
‫Tam, gdzie to naprawdę ożywa, jest rozwijanie i uruchamianie usług wewnątrz kontenera, które

30
00:02:07,910 --> 00:02:12,940
‫uzyskują dostęp do plików używanych przez hosta lub zmieniających się.

31
00:02:12,950 --> 00:02:14,720
‫Zróbmy to za pomocą Nginx.

32
00:02:14,930 --> 00:02:22,370
‫Jeśli przejdziesz do katalogu głównego naszego repozytorium dla tego kursu, a następnie przejdziemy do katalogu 2

33
00:02:22,370 --> 00:02:24,750
‫przykładowego Dockerfile. Teraz byliśmy tu wcześniej.

34
00:02:24,770 --> 00:02:28,580
‫Jeśli pamiętasz, są dwa pliki. To jest dla Nginx, prawda?

35
00:02:28,580 --> 00:02:36,530
‫Jeśli spojrzymy na plik Dockerfile naprawdę szybko, to całkiem proste. To tylko określenie katalogu roboczego, a następnie skopiowanie

36
00:02:36,560 --> 00:02:39,050
‫pliku indeksu do tego katalogu.

37
00:02:39,050 --> 00:02:40,490
‫Tu nie ma woluminów.

38
00:02:40,490 --> 00:02:45,290
‫Mocowanie bind nie wymaga woluminu do działania, chociaż można na pewno tam być.

39
00:02:45,530 --> 00:02:52,590
‫Host zawsze wygrywa, pamiętasz? Tak więc, gdy uruchamiamy kontener dokera, wykonujemy

40
00:02:52,630 --> 00:02:56,330
‫a -d ... nazwijmy to nginx.

41
00:02:56,390 --> 00:03:00,420
‫Dajmy mu port 8080 jak wcześniej.

42
00:03:00,770 --> 00:03:06,470
‫A tym razem damy jej wolumen. I muszę powiedzieć, że mój bieżący katalog roboczy zostanie

43
00:03:06,650 --> 00:03:12,230
‫faktycznie zamontowany w tym katalogu roboczym w kontenerze. Ponieważ mój plik indeksu znajduje się tutaj w

44
00:03:12,230 --> 00:03:13,390
‫tym folderze, chcę

45
00:03:13,430 --> 00:03:19,040
‫go umieścić w kontenerze, aby móc go edytować tutaj i jest widoczny na żywo w kontenerze.

46
00:03:19,040 --> 00:03:20,320
‫Więc to ma sens w ciągu sekundy.

47
00:03:20,540 --> 00:03:24,280
‫Oto krótka wskazówka. Zamiast wymyślać całą

48
00:03:24,290 --> 00:03:28,370
‫moją ścieżkę i wpisywać całość, możesz użyć tutaj pwd.

49
00:03:28,460 --> 00:03:36,210
‫Skrót powłoki, który mówi: "wypisz katalog roboczy i zastąp to polecenie tą ścieżką.

50
00:03:36,380 --> 00:03:43,460
‫"Następnie użyjemy tego samego katalogu roboczego z pliku Docker, a następnie określimy

51
00:03:43,460 --> 00:03:45,360
‫obraz Nginx.

52
00:03:47,590 --> 00:03:52,930
‫Co mam zamiar zrobić naprawdę szybko, to zamierzam otworzyć kolejne okno terminala, abyśmy mogli

53
00:03:52,930 --> 00:03:54,480
‫zrobić dwie rzeczy naraz.

54
00:03:54,590 --> 00:03:56,010
‫Naprawdę nie musisz tego robić.

55
00:03:56,050 --> 00:04:01,840
‫Zasadniczo, zamierzamy tylko edytować plik na naszym hoście, a potem znajdę się w kontenerze i zobaczę, co

56
00:04:01,840 --> 00:04:02,780
‫się dzieje.

57
00:04:02,920 --> 00:04:04,730
‫Aby upewnić się, że działa,

58
00:04:04,780 --> 00:04:06,350
‫przejdźmy do localhost.

59
00:04:06,700 --> 00:04:10,000
‫OK, więc nie jest to domyślny plik HTML Nginx.

60
00:04:10,030 --> 00:04:13,080
‫I użyliśmy zwykłego obrazu Nginx.

61
00:04:13,090 --> 00:04:16,580
‫Właściwie nie używaliśmy niestandardowego z tego katalogu.

62
00:04:16,690 --> 00:04:24,270
‫Właśnie użyliśmy obrazu giełdowego. Aby to udowodnić, możemy wykonać dokładnie to

63
00:04:24,280 --> 00:04:37,390
‫samo, dokładnie polecenie, ale wyjmij -v, a zamiast tego uruchomię go na porcie 8080. I nazam ten jeden nginx2.

64
00:04:37,420 --> 00:04:47,930
‫Jeśli przejdę do przeglądarki i przejdę do localhost 8080, jest to domyślny indeks nginx. plik html.

65
00:04:48,010 --> 00:04:52,130
‫Ten jest niestandardowy, że żyjemy w tym katalogu.

66
00:04:52,780 --> 00:04:56,380
‫Więc już widzimy, że poprawnie to zmapowało.

67
00:04:56,560 --> 00:05:03,010
‫Jeśli otworzę tutaj kolejną kartę i otrzymam wiersz poleceń w kontenerze.

68
00:05:08,800 --> 00:05:10,130
‫Następnie przejdź do tego katalogu.

69
00:05:17,710 --> 00:05:21,580
‫Zauważysz, że faktycznie możemy zobaczyć plik Docker, ponieważ mapujemy cały katalog.

70
00:05:21,620 --> 00:05:27,460
‫Jeśli po lewej stronie, jeśli faktycznie utworzyliśmy nowy plik i mogę po prostu użyć tego polecenia dotykowego Linux tutaj,

71
00:05:30,440 --> 00:05:37,010
‫aby utworzyć nowy plik. Następnie po prawej ... oops ... po prostu zapominaj, że ... ls -al, a zobaczysz to

72
00:05:37,010 --> 00:05:37,900
‫w swoim pliku.

73
00:05:37,970 --> 00:05:43,350
‫Mam nadzieję, że rozumiesz, co się tutaj dzieje, że obie te lokalizacje są w tej samej lokalizacji.

74
00:05:43,370 --> 00:05:47,350
‫I jeśli powtórzyłem coś w tym pliku testowym, a

75
00:05:57,430 --> 00:05:58,420
‫potem ...

76
00:06:01,620 --> 00:06:02,410
‫proszę bardzo.

77
00:06:02,410 --> 00:06:06,670
‫Nasz nginx może zobaczyć zmiany, ponieważ jest to zwykła ścieżka do pliku w kontenerze, a

78
00:06:06,670 --> 00:06:08,720
‫te pliki znajdują się na hoście.

79
00:06:08,830 --> 00:06:12,670
‫Jeśli mam je usunąć w kontenerze, zostaną usunięte na hoście, ponieważ jest to ten sam

80
00:06:12,670 --> 00:06:13,210
‫plik.

81
00:06:13,210 --> 00:06:19,090
‫Wtedy zwykle prowokuję programistę, aby zastanowił się nad wszystkimi swoimi środowiskami programistycznymi,

82
00:06:19,090 --> 00:06:24,670
‫które mają tak skomplikowaną konfiguracją. Być może używają Vagrant lub innej

83
00:06:24,670 --> 00:06:30,880
‫ręcznej metody ustawienia swojego doskonałego środowiska i mogą zacząć widzieć, jak to może znacznie uprościć.

84
00:06:31,330 --> 00:06:35,920
‫Ponieważ nie musiałem wykonywać żadnych skomplikowanych ustawień na moim Macu, po prostu uruchomiłem kontener.

85
00:06:35,920 --> 00:06:43,670
‫Użyłem polecenia -v z mountem, a teraz mój kod na moim hoście można edytować na moim hoście.

86
00:06:43,840 --> 00:06:47,890
‫I naprawdę nigdy nie muszę wchodzić w skorupę kontenera.

87
00:06:47,890 --> 00:06:52,570
‫Zazwyczaj można po prostu uruchomić kontener i sprawdzić jego logi, aby sprawdzić, czy podczas kodowania

88
00:06:52,570 --> 00:06:53,260
‫występują błędy.

89
00:06:53,500 --> 00:06:58,750
‫Oczywiście jest to prosty przykład z Nginx. Później będziemy mieli konkretne

90
00:06:58,750 --> 00:07:03,160
‫przykłady różnych środowisk programistycznych dla lokalnego rozwoju i kontenerów.

