﻿1
00:00:04,670 --> 00:00:09,710
‫W porządku. Wydaje się, że woluminy są dość proste, ale w rzeczywistości jest ich wiele.

2
00:00:09,710 --> 00:00:16,480
‫Pierwszy sposób, w jaki można powiedzieć kontenerowi, że musi martwić się o wolumin, znajduje się w pliku Dockerfile.

3
00:00:16,480 --> 00:00:18,540
‫Sprawdźmy niektóre z nich.

4
00:00:18,590 --> 00:00:21,040
‫Po prostu zrobię to, co robię.

5
00:00:21,170 --> 00:00:24,110
‫Zamierzam wyszukać MySQL.

6
00:00:24,320 --> 00:00:30,320
‫W ten sposób dowiedziałem się bardzo dużo o Dockerfiles i jak poprawnie z nich korzystać, to oficjalne repozytoria mają

7
00:00:30,380 --> 00:00:34,040
‫naprawdę dobre domyślne ustawienia i najlepsze praktyki wbudowane w nie.

8
00:00:34,040 --> 00:00:40,250
‫Kiedy przejdę do MySQL, po prostu kliknę tutaj na najnowszy plik Docker. Założę się o ciebie, ponieważ

9
00:00:40,250 --> 00:00:45,040
‫jest to baza danych, prawdopodobnie zawiera ona polecenie głośności.

10
00:00:45,200 --> 00:00:45,950
‫No to jedziemy.

11
00:00:45,950 --> 00:00:52,640
‫Jest to domyślna lokalizacja baz danych MySQL. Ten obraz jest zaprogramowany w taki sposób,

12
00:00:52,640 --> 00:00:58,670
‫aby powiedzieć Dockerowi, że kiedy rozpoczynamy od niego nowy kontener, faktycznie utworzyć nową lokalizację woluminu

13
00:00:58,670 --> 00:01:05,450
‫i przypisać ją do tego katalogu w kontenerze. Oznacza to, że wszystkie pliki, które tam umieścimy w

14
00:01:05,450 --> 00:01:08,600
‫pojemniku, przeżyją kontener, dopóki ręcznie nie usuniemy woluminu.

15
00:01:08,660 --> 00:01:13,250
‫I jest to coś, o czym powinniśmy tutaj wspomnieć, że woluminy wymagają ręcznego usuwania.

16
00:01:13,280 --> 00:01:15,900
‫Nie możesz ich wyczyścić, usuwając pojemnik.

17
00:01:15,930 --> 00:01:21,350
‫To dodatkowy krok. To tylko dla ubezpieczenia naprawdę, ponieważ cały

18
00:01:21,380 --> 00:01:26,990
‫punkt polecenia objętości mówi, że te dane są szczególnie ważne, co najmniej ważniejsze niż sam pojemnik.

19
00:01:26,990 --> 00:01:29,930
‫Jeśli zrobimy docking na MySQL, a

20
00:01:33,500 --> 00:01:40,360
‫potem zrobię inspekcję obrazu docker na MySQL, nie zobaczymy Dockerfile, ponieważ plik Docker nie

21
00:01:40,370 --> 00:01:46,340
‫jest częścią metadanych obrazu, który zauważysz w tym obszar konfiguracji, który określił

22
00:01:46,340 --> 00:01:47,680
‫tamtą objętość.

23
00:01:47,810 --> 00:01:53,600
‫Zawsze mogę powiedzieć, że konfiguracja, która pochodziła z pliku Dockerfile, kiedy została zbudowana, przypisała woluminowi

24
00:01:53,600 --> 00:01:54,460
‫tę ścieżkę.

25
00:01:54,470 --> 00:01:57,150
‫Z tego powodu uruchommy kontener.

26
00:02:00,990 --> 00:02:05,640
‫Więc kontener dokera uruchom -d --name mysql.

27
00:02:05,730 --> 00:02:09,120
‫Jeśli pamiętasz z wcześniejszych, MySQL jest trochę wyjątkowy.

28
00:02:09,230 --> 00:02:11,390
‫Wymaga on teraz zmiennej

29
00:02:11,400 --> 00:02:13,450
‫środowiskowej, zanim zadziała.

30
00:02:13,530 --> 00:02:19,090
‫To MYSQL_ALLOW_EMPTY_PASSWORD.

31
00:02:19,180 --> 00:02:19,430
‫DOBRZE.

32
00:02:22,810 --> 00:02:29,020
‫To, co widzisz, działa w MySQL. Jeśli zrobimy kontener dokujcy do

33
00:02:29,170 --> 00:02:37,200
‫kontrolki mysql, powinniśmy zobaczyć to samo, co w konfiguracji mówi nam, że jest wolumin.

34
00:02:38,360 --> 00:02:39,370
‫Tutaj.

35
00:02:39,450 --> 00:02:47,400
‫Możemy go również zobaczyć tutaj pod wierzchowcami. Co to jest, jest to fakt, że działający kontener uzyskuje swoją

36
00:02:47,400 --> 00:02:55,770
‫własną unikalną lokalizację na hoście, do przechowywania tych danych, a następnie jest w tle, mapowany lub montowany, do tej lokalizacji w kontenerze, tak

37
00:02:55,770 --> 00:02:59,730
‫aby lokalizacja w kontenerze tak naprawdę myśli, że pisze do /

38
00:02:59,730 --> 00:03:02,040
‫var / lib / mysql.

39
00:03:02,310 --> 00:03:08,570
‫W tym przypadku widzimy, że dane faktycznie znajdują się w tej lokalizacji na hoście. Zróbmy więc głośność dokowania ls,

40
00:03:08,570 --> 00:03:10,790
‫a widzimy, że

41
00:03:10,860 --> 00:03:16,760
‫mamy teraz jeden tom. Teraz zauważamy, że ma ten unikalny identyfikator, że nigdy nie

42
00:03:16,760 --> 00:03:18,190
‫dowiemy się, do czego zmierza,

43
00:03:18,200 --> 00:03:18,560
‫prawda?

44
00:03:18,560 --> 00:03:21,090
‫Więc, zróbmy inspekcję na ten temat.

45
00:03:21,150 --> 00:03:22,310
‫Nie musisz wpisywać wszystkiego.

46
00:03:22,310 --> 00:03:26,270
‫Możesz po prostu wpisać kilka pierwszych znaków i nacisnąć klawisz Tab, aby je ukończyć. Dostaniesz podobne

47
00:03:26,270 --> 00:03:28,390
‫informacje o samym woluminie.

48
00:03:29,440 --> 00:03:35,050
‫Jeśli faktycznie robisz to na komputerze z systemem Linux, możesz przejść do tej lokalizacji na dysku

49
00:03:35,050 --> 00:03:36,790
‫twardym i zobaczyć dane.

50
00:03:37,090 --> 00:03:38,530
‫W rzeczywistości będą tam niektóre bazy danych.

51
00:03:38,560 --> 00:03:43,870
‫Jeśli używasz komputera Mac lub systemu Windows, pamiętaj, że Docker dla systemu Windows i Docker dla

52
00:03:43,870 --> 00:03:49,620
‫komputerów Mac naprawdę robią coś w tle, które jest ukryte przed nami, gdzie faktycznie tworzy maszynę wirtualną Linux.

53
00:03:49,750 --> 00:03:55,420
‫Więc te dane są technicznie wewnątrz tej maszyny wirtualnej Linux. Nie będzie można przejść do tej ścieżki na komputerze z

54
00:03:55,450 --> 00:03:59,530
‫systemem Windows lub Mac i wyświetlić danych. W rzeczywistości jest w tej VM.

55
00:03:59,530 --> 00:04:04,210
‫Zobaczymy też, z zamontowanymi woluminami, jak możemy obejść to ograniczenie.

56
00:04:04,210 --> 00:04:10,810
‫Patrząc na to, zauważasz, że nie jest to zbyt przyjazne dla użytkownika, jeśli chodzi o informowanie nas o tym, co się w

57
00:04:11,140 --> 00:04:14,250
‫nim znajduje lub do którego jest przypisany ten wolumin.

58
00:04:14,260 --> 00:04:20,260
‫Z perspektywy kontenera widzimy, z jakiego woluminu korzysta, ale z perspektywy wolumenu nie widzimy,

59
00:04:20,410 --> 00:04:22,150
‫z czym jest połączona.

60
00:04:22,150 --> 00:04:22,910
‫Dobrze?

61
00:04:23,230 --> 00:04:28,910
‫Gdybym tylko uderzył w Strzałkę w górę i zobaczmy, utwórz mysql2.

62
00:04:29,170 --> 00:04:32,190
‫W ten sposób powstał kolejny serwer MySQL działający w tle.

63
00:04:32,200 --> 00:04:36,430
‫Jeśli zrobię kolejny wolumin dokowania ls, zobaczysz dwa z nich.

64
00:04:36,430 --> 00:04:37,770
‫Zaczynasz dostrzegać problem, prawda?

65
00:04:37,790 --> 00:04:41,630
‫Nie ma łatwego sposobu, aby powiedzieć jedno od drugiego.

66
00:04:41,740 --> 00:04:53,500
‫Jeśli po prostu, aby udowodnić punkt, wykonaj kontenera dokera zatrzymując mysql, a docker kontenera zatrzymaj

67
00:04:53,590 --> 00:04:54,930
‫mysql2.

68
00:04:55,190 --> 00:05:01,180
‫Wykonujemy kontener dokera. Nie zobaczymy żadnych kontenerów. Jeśli zrobimy ls -a, zobaczymy

69
00:05:01,180 --> 00:05:06,900
‫je wszystkie. I zauważ, że zostały zatrzymane. A potem robimy tomki doków, zauważcie,

70
00:05:06,910 --> 00:05:08,580
‫że nadal mamy dwa tomy.

71
00:05:08,590 --> 00:05:16,390
‫Jeśli wykonuję kontener dokera rm mysql, a następnie mysql2, ponieważ faktycznie mogę wykonać oba z nich w

72
00:05:16,390 --> 00:05:23,590
‫jednym poleceniu, to usunie oba moje kontenery. Jeśli teraz zrobię wolumin dokowania ls, moje woluminy

73
00:05:23,590 --> 00:05:26,560
‫nadal tam są. Moje dane są nadal bezpieczne.

74
00:05:26,560 --> 00:05:28,510
‫Rozwiązaliśmy jeden problem.

75
00:05:28,510 --> 00:05:31,660
‫Bazy danych przeżywają plik wykonywalny.

76
00:05:31,660 --> 00:05:34,180
‫Jak sprawić, by było to trochę bardziej przyjazne dla użytkownika?

77
00:05:35,090 --> 00:05:40,010
‫Właśnie tam pojawiły się nazwane woluminy i zdolność do określania rzeczy w poleceniu

78
00:05:40,010 --> 00:05:40,850
‫uruchomienia dockera.

79
00:05:41,120 --> 00:05:47,810
‫Jeśli kilka razy uderzyłem w Strzałkę w górę, dopóki nie przejdę do kontenera dokera, nie ma to znaczenia, który

80
00:05:47,810 --> 00:05:49,600
‫z nich zamierzasz ponownie uruchomić.

81
00:05:50,820 --> 00:05:59,340
‫W tym przypadku zamierzamy wprowadzić polecenie -v. A -v pozwala nam określić nowy wolumin, który

82
00:05:59,370 --> 00:06:06,660
‫chcemy utworzyć dla tego kontenera, który ma zostać uruchomiony, lub pozwala nam na dwie inne

83
00:06:06,660 --> 00:06:07,500
‫opcje.

84
00:06:07,500 --> 00:06:10,320
‫Jedną z nich jest utworzenie nazwanego tomu.

85
00:06:10,320 --> 00:06:17,660
‫Gdybym po prostu zrobił -v, a następnie var lib mysql, zrobiłoby to to samo, co zrobiła

86
00:06:17,670 --> 00:06:20,040
‫komenda volume w pliku Dockerfile.

87
00:06:20,040 --> 00:06:24,970
‫Tak naprawdę nie musimy tego robić tutaj. Ale co możemy zrobić, to umieścić nazwę przed

88
00:06:26,810 --> 00:06:29,930
‫nim dwukropkiem. To jest znane jako "nazwany tom. "Kiedy

89
00:06:30,080 --> 00:06:38,000
‫to zrobię, a następnie zrobię wolumin dokowania, zobaczysz, że mój nowy kontener używa nowego woluminu i

90
00:06:38,180 --> 00:06:39,300
‫używa przyjaznej nazwy.

91
00:06:39,320 --> 00:06:45,980
‫Jeśli zrobimy inspekcję woluminu dokowania na tym mysql, zobaczycie, że jest to łatwiejsze w użyciu.

92
00:06:46,010 --> 00:06:49,550
‫Jeśli ponownie usunę mój kontener i będziemy musieli wstawić

93
00:06:52,470 --> 00:06:59,040
‫-f, ponieważ nadal działa, a następnie uruchamiam inny. Tym razem nadaję mu

94
00:06:59,040 --> 00:07:04,280
‫inne imię. A potem zrobimy kolejny plik dokowania ls, zobaczysz, że

95
00:07:04,280 --> 00:07:09,420
‫wygląda na to, że nie utworzyliśmy nowego woluminu. Wciąż używa tej samej objętości.

96
00:07:09,420 --> 00:07:17,680
‫Zróbmy kontener dokera, który sprawdzimy na mysql3. To, co zobaczymy tutaj, to: tak, to jest

97
00:07:18,990 --> 00:07:22,860
‫to, co zostało skonfigurowane, ale co robimy?

98
00:07:22,880 --> 00:07:24,300
‫Tu są nasze wierzchowce.

99
00:07:24,560 --> 00:07:29,510
‫Zobaczymy, że nie tylko nazwa jest bardziej przyjazna, ale również zmieniła lokalizację źródła, aby

100
00:07:29,510 --> 00:07:30,980
‫była trochę bardziej przyjazna.

101
00:07:31,280 --> 00:07:38,480
‫Dla mnie małą wskazówką jest to, że gdy uruchamiam na kilka dni lub tygodni, konkretną bazę danych, w konkretnym

102
00:07:38,540 --> 00:07:43,460
‫kontenerze, którego muszę używać w kółko i nie chcę pustego serwera bazy danych,

103
00:07:43,460 --> 00:07:50,930
‫W ten sposób utworzą moje pojemniki i nadają im nazwę dla projektu, dzięki czemu będę wiedział, do czego służy ten

104
00:07:50,930 --> 00:07:52,250
‫tom i

105
00:07:52,370 --> 00:07:53,900
‫który musi się trzymać.

106
00:07:57,840 --> 00:07:59,200
‫Ostatnia rzecz tutaj.

107
00:08:00,130 --> 00:08:06,390
‫Dlaczego chcesz utworzyć tworzenie woluminu docker?

108
00:08:06,550 --> 00:08:13,750
‫Jeśli możemy je utworzyć z kontenera dokera, uruchom komendę w środowisku wykonawczym, a my możemy je utworzyć, podając je w pliku Dockerfiles, jest tylko kilka

109
00:08:13,750 --> 00:08:18,670
‫przypadków, w których chcielibyśmy je utworzyć z wyprzedzeniem. I można to całkiem

110
00:08:18,670 --> 00:08:21,320
‫szybko zrozumieć za pomocą polecenia help.

111
00:08:22,210 --> 00:08:26,580
‫Ponieważ jest to jedyny sposób, w jaki możemy określić inny sterownik.

112
00:08:26,590 --> 00:08:28,890
‫Pamiętasz tę wtyczkę, o której będę mówić później?

113
00:08:29,020 --> 00:08:33,370
‫Następnie wszelkie opcje sterowników, które chcemy użyć -o na.

114
00:08:33,370 --> 00:08:37,090
‫Następnie, jeśli chcemy umieścić na nim etykiety, o czym również porozmawiamy później w dziale produkcji.

115
00:08:37,090 --> 00:08:42,530
‫Czasami, w szczególnych przypadkach, konieczne jest wcześniejsze utworzenie woluminu Docker, ale zwykle w celu lokalnego rozwoju

116
00:08:42,540 --> 00:08:46,610
‫wystarczy, że zostanie określone w pliku Dockerfile lub w poleceniu run.

