﻿1
00:00:04,670 --> 00:00:09,710
‫In regula. Volumele par destul de simple în față, dar de fapt există multe.

2
00:00:09,710 --> 00:00:16,480
‫Primul mod în care puteți spune unui container care trebuie să-și facă griji pentru un volum este într-un fișier Docker.

3
00:00:16,480 --> 00:00:18,540
‫Hai să verificăm câteva dintre ele.

4
00:00:18,590 --> 00:00:21,040
‫Am de gând să fac ceea ce fac foarte mult.

5
00:00:21,170 --> 00:00:24,110
‫Voi căuta MySQL.

6
00:00:24,320 --> 00:00:30,320
‫Acesta este modul în care am învățat atât de mult despre Dockerfiles și cum să le folosesc în mod corect, că depozitele oficiale

7
00:00:30,380 --> 00:00:34,040
‫sunt cu adevărat defecte implicite și cele mai bune practici integrate în ele.

8
00:00:34,040 --> 00:00:40,250
‫Când mă duc aici la MySQL, o să dau click pe ultimul fișier Docker. Pariez că ești o bază

9
00:00:40,250 --> 00:00:45,040
‫de date, probabil că ai o comandă de volum.

10
00:00:45,200 --> 00:00:45,950
‫Vom merge acolo.

11
00:00:45,950 --> 00:00:52,640
‫Aceasta este locația implicită a bazelor de date MySQL. Această imagine este programată astfel încât să spună

12
00:00:52,640 --> 00:00:58,670
‫Docker că, atunci când începem un nou container din ea, să creăm de fapt o nouă locație

13
00:00:58,670 --> 00:01:05,450
‫de volum și să o atribuim acestui director în container. Ceea ce înseamnă că toate fișierele pe care le punem acolo, în

14
00:01:05,450 --> 00:01:08,600
‫container, vor depăși containerul până când vom șterge manual volumul.

15
00:01:08,660 --> 00:01:13,250
‫Și ar trebui să subliniem aici că volumele necesită ștergerea manuală.

16
00:01:13,280 --> 00:01:15,900
‫Nu puteți să le curățați doar prin eliminarea unui recipient.

17
00:01:15,930 --> 00:01:21,350
‫Sunt un pas suplimentar. Asta e doar pentru asigurare, pentru că întregul punct al

18
00:01:21,380 --> 00:01:26,990
‫unei comenzi de volum este de a spune că aceste date sunt deosebit de importante, cel puțin mult mai importante decât containerul însuși.

19
00:01:26,990 --> 00:01:29,930
‫Dacă facem un draw de pe serverul MySQL și

20
00:01:33,500 --> 00:01:40,360
‫apoi facem o inspectare a imaginilor de docker pe MySQL, nu putem vedea dosarul Docker, deoarece fișierul Docker nu este de

21
00:01:40,370 --> 00:01:46,340
‫fapt o parte a metadatelor de imagine, lucru pe care îl vei observa în această config, că a

22
00:01:46,340 --> 00:01:47,680
‫specificat volumul acolo.

23
00:01:47,810 --> 00:01:53,600
‫Pot să spun întotdeauna că configul, care a venit de la Dockerfile când a fost construit, a atribuit un volum

24
00:01:53,600 --> 00:01:54,460
‫acelei căi.

25
00:01:54,470 --> 00:01:57,150
‫Să conducem un container de la el.

26
00:02:00,990 --> 00:02:05,640
‫Deci, containerul de andocare rulează -d --name mysql.

27
00:02:05,730 --> 00:02:09,120
‫Dacă vă amintiți mai devreme, MySQL este puțin special.

28
00:02:09,230 --> 00:02:11,390
‫Acum este nevoie de o variabilă de

29
00:02:11,400 --> 00:02:13,450
‫mediu înainte ca aceasta să funcționeze.

30
00:02:13,530 --> 00:02:19,090
‫Este MYSQL_ALLOW_EMPTY_PASSWORD.

31
00:02:19,180 --> 00:02:19,430
‫O.K.

32
00:02:22,810 --> 00:02:29,020
‫Ceea ce vedeți este funcționarea MySQL. Dacă facem un container de docker inspecta

33
00:02:29,170 --> 00:02:37,200
‫mysql, ar trebui să vedem același lucru în cazul în care ne spune în config că există un volum.

34
00:02:38,360 --> 00:02:39,370
‫Aici.

35
00:02:39,450 --> 00:02:47,400
‫Putem să vedem, de asemenea, aici, sub munte. Ce este acest lucru este faptul că acesta este, de fapt, containerul

36
00:02:47,400 --> 00:02:55,770
‫care rulează, obținându-și propria locație unică pe gazdă, pentru a stoca acele date și apoi este în fundal, cartografiat sau montat, în acea locație din container,

37
00:02:55,770 --> 00:02:59,730
‫astfel încât locația în container de fapt crede doar că scrie în

38
00:02:59,730 --> 00:03:02,040
‫/ var / lib / mysql.

39
00:03:02,310 --> 00:03:08,570
‫În acest caz, putem vedea că datele de fapt locuiesc în acea locație pe gazdă. Deci, hai să facem un volum de

40
00:03:08,570 --> 00:03:10,790
‫docare și putem

41
00:03:10,860 --> 00:03:16,760
‫vedea că acum avem un volum. Acum observăm că asta are ID-ul unic, că nu vom ști niciodată

42
00:03:16,760 --> 00:03:18,190
‫ce naiba se întâmplă, nu-i

43
00:03:18,200 --> 00:03:18,560
‫așa?

44
00:03:18,560 --> 00:03:21,090
‫Deci, hai să facem o inspecție.

45
00:03:21,150 --> 00:03:22,310
‫Nu trebuie să tastați întregul lucru.

46
00:03:22,310 --> 00:03:26,270
‫Puteți să introduceți doar primele două caractere și să le apăsați pe Tab pentru a le completa. Veți obține acele informații

47
00:03:26,270 --> 00:03:28,390
‫similare despre volumul în sine.

48
00:03:29,440 --> 00:03:35,050
‫Dacă de fapt faceți acest lucru pe o mașină Linux, puteți naviga la acea locație pe hard

49
00:03:35,050 --> 00:03:36,790
‫disk și a vedea datele.

50
00:03:37,090 --> 00:03:38,530
‫De fapt, vor exista câteva baze de date acolo.

51
00:03:38,560 --> 00:03:43,870
‫Dacă sunteți pe un Mac sau pe Windows, amintiți-vă că Docker pentru Windows și Docker for Mac

52
00:03:43,870 --> 00:03:49,620
‫fac într-adevăr un pic în fundalul care este ascuns de noi unde se creează de fapt un Linux VM.

53
00:03:49,750 --> 00:03:55,420
‫Deci, aceste date sunt din punct de vedere tehnic în interiorul Linux VM. Nu veți putea să mergeți la acea cale pe mașina dvs.

54
00:03:55,450 --> 00:03:59,530
‫Windows sau Mac și să vedeți datele. Este de fapt în interiorul acelui VM.

55
00:03:59,530 --> 00:04:04,210
‫Vom vedea într-un pic, cu volume voluminoase, cum putem obține în jurul valorii de această limitare, de asemenea.

56
00:04:04,210 --> 00:04:10,810
‫Privind la acest lucru, observați că nu este foarte prietenos în ceea ce privește faptul că ne spuneți ce se află

57
00:04:11,140 --> 00:04:14,250
‫în el sau la ce este alocat acest volum.

58
00:04:14,260 --> 00:04:20,260
‫Putem vedea din perspectiva containerului volumul pe care îl folosește, dar nu putem vedea din perspectiva volumului

59
00:04:20,410 --> 00:04:22,150
‫la ce este conectat.

60
00:04:22,150 --> 00:04:22,910
‫Dreapta?

61
00:04:23,230 --> 00:04:28,910
‫Dacă aș fi vrut doar să lovesc săgeata sus și, să vedem, să creez un mysql2.

62
00:04:29,170 --> 00:04:32,190
‫Asta a creat un alt server MySQL care rulează în fundal.

63
00:04:32,200 --> 00:04:36,430
‫Dacă fac un alt volum de docare, veți vedea două dintre ele.

64
00:04:36,430 --> 00:04:37,770
‫Începeți să vedeți problema, nu?

65
00:04:37,790 --> 00:04:41,630
‫Nu există nici o cale ușoară aici de a spune unul de celălalt.

66
00:04:41,740 --> 00:04:53,500
‫Dacă tocmai, pentru a dovedi un punct, face un container docker stop mysql, și un docer un container

67
00:04:53,590 --> 00:04:54,930
‫stop mysql2.

68
00:04:55,190 --> 00:05:01,180
‫Facem un container pentru docuri, nu vom vedea niciun container care rulează. Dacă facem un ls-a, vom ajunge să

69
00:05:01,180 --> 00:05:06,900
‫le vedem pe toate. Și observați că sunt opriți. Și apoi facem un volum de docare, observați

70
00:05:06,910 --> 00:05:08,580
‫că avem încă cele două volume.

71
00:05:08,590 --> 00:05:16,390
‫Dacă fac un container docker rm mysql și apoi mysql2, pentru că pot să le fac pe amândoi

72
00:05:16,390 --> 00:05:23,590
‫într-o singură comandă, acesta va elimina ambele containere. Dacă acum fac un volum de docare, volumele mele

73
00:05:23,590 --> 00:05:26,560
‫sunt încă acolo. Datele mele sunt încă în siguranță.

74
00:05:26,560 --> 00:05:28,510
‫Deci, am rezolvat o problemă.

75
00:05:28,510 --> 00:05:31,660
‫Bazele de date depășesc executabilul.

76
00:05:31,660 --> 00:05:34,180
‫Cum facem acest lucru un pic mai ușor de utilizat?

77
00:05:35,090 --> 00:05:40,010
‫Aici intră volumele numite și abilitatea de a specifica lucrurile pe comanda de derulare

78
00:05:40,010 --> 00:05:40,850
‫a docker-ului.

79
00:05:41,120 --> 00:05:47,810
‫Dacă l-am lovit pe săgeata de sus de câteva ori până ajung la containerul de docker alergat, nu contează cu adevărat pe care

80
00:05:47,810 --> 00:05:49,600
‫o să mai alergi din nou.

81
00:05:50,820 --> 00:05:59,340
‫În acest caz, vom arunca într-adevăr o comandă -v. A -v ne permite să specificăm fie un volum nou pe

82
00:05:59,370 --> 00:06:06,660
‫care dorim să-l creăm pentru acest container pe care urmează să fie rulat, fie ne permite două alte

83
00:06:06,660 --> 00:06:07,500
‫opțiuni.

84
00:06:07,500 --> 00:06:10,320
‫Unul dintre ei este de a crea un volum numit.

85
00:06:10,320 --> 00:06:17,660
‫Dacă tocmai am făcut -v, și apoi var lib mysql, care ar face același lucru este ceea ce a

86
00:06:17,670 --> 00:06:20,040
‫comandat volumul nostru în Dockerfile.

87
00:06:20,040 --> 00:06:24,970
‫Nu avem nevoie să facem asta aici. Dar putem face un nume în fața lui

88
00:06:26,810 --> 00:06:29,930
‫cu un colon. Este cunoscut ca un volum numit. "Când fac

89
00:06:30,080 --> 00:06:38,000
‫asta și apoi fac un volum de docare, vei vedea că noul meu container folosește un volum nou și folosește

90
00:06:38,180 --> 00:06:39,300
‫un nume prietenos.

91
00:06:39,320 --> 00:06:45,980
‫Dacă facem un volum de docere să inspectăm acel mysql, veți vedea că acest lucru este mai ușor de utilizat aici.

92
00:06:46,010 --> 00:06:49,550
‫Dacă mi-am șters din nou containerul și trebuie să introducem un fișier pentru

93
00:06:52,470 --> 00:06:59,040
‫că este încă în desfășurare și apoi am executat un altul. Și de data asta, îi voi

94
00:06:59,040 --> 00:07:04,280
‫da un nume diferit. Și apoi vom face un alt volum de docare, veți vedea

95
00:07:04,280 --> 00:07:09,420
‫că se pare că nu am creat un volum nou. Încă mai are același volum.

96
00:07:09,420 --> 00:07:17,680
‫Să facem un container de docker inspectați pe mysql3. Apoi, ceea ce vedem aici este, da, asta

97
00:07:18,990 --> 00:07:22,860
‫a fost configurat, dar ce facem?

98
00:07:22,880 --> 00:07:24,300
‫Asta se întâmplă aici.

99
00:07:24,560 --> 00:07:29,510
‫Vom vedea aici că nu numai numele este mai prietenos, dar, de fapt, a schimbat locația sursă pentru

100
00:07:29,510 --> 00:07:30,980
‫a fi și mai prietenă.

101
00:07:31,280 --> 00:07:38,480
‫Pentru mine, un mic sfat aici este ca atunci cand rulez zile sau saptamani intr-o anumita perioada, o anumita baza de date, intr-un anumit container

102
00:07:38,540 --> 00:07:43,460
‫pe care trebuie sa-l folosesc mereu si peste si nu vreau un server de baze de

103
00:07:43,460 --> 00:07:50,930
‫date goale, am "În sfârșit, voi crea containerele mele în acest fel și le voi numi pentru proiect, astfel încât să știu ce este volumul

104
00:07:50,930 --> 00:07:52,250
‫pentru el și că

105
00:07:52,370 --> 00:07:53,900
‫trebuie să rămână în jur.

106
00:07:57,840 --> 00:07:59,200
‫Un ultim lucru aici.

107
00:08:00,130 --> 00:08:06,390
‫De ce doriți să creați volumul docului?

108
00:08:06,550 --> 00:08:13,750
‫Dacă le putem crea dintr-o comanda de rulare a containerelor docker la timpul de execuție și le putem crea, specificându-le în Dockerfile, există doar câteva

109
00:08:13,750 --> 00:08:18,670
‫cazuri în care doriți să le creați înainte. Și puteți să vă gândiți la

110
00:08:18,670 --> 00:08:21,320
‫asta destul de repede, utilizând comanda de ajutor.

111
00:08:22,210 --> 00:08:26,580
‫Pentru că aici este singura modalitate prin care putem specifica un driver diferit.

112
00:08:26,590 --> 00:08:28,890
‫Amintiți-vă de lucrurile despre plug-in despre care voi vorbi mai târziu?

113
00:08:29,020 --> 00:08:33,370
‫Apoi, toate opțiunile driverului pe care vrem să le folosim.

114
00:08:33,370 --> 00:08:37,090
‫Apoi, dacă vrem să introducem etichete, despre care vom vorbi mai târziu în secțiunea de producție.

115
00:08:37,090 --> 00:08:42,530
‫Uneori, în cazuri speciale, trebuie să creați volumul Docker înainte, dar de obicei pentru scopurile dvs. de

116
00:08:42,540 --> 00:08:46,610
‫dezvoltare locală, specificându-l într-un Dockerfile sau pe comanda de rulare este bine.

