﻿1
00:00:04,670 --> 00:00:09,710
‫Oke. Volumes lijken van tevoren vrij eenvoudig, maar er komt veel bij kijken.

2
00:00:09,710 --> 00:00:16,480
‫De eerste manier waarop u een container kunt vertellen dat deze zich zorgen moet maken over een volume, is in een Dockerfile.

3
00:00:16,480 --> 00:00:18,540
‫Laten we er een paar gaan bekijken.

4
00:00:18,590 --> 00:00:21,040
‫Ik ga gewoon doen wat ik veel doe.

5
00:00:21,170 --> 00:00:24,110
‫Ik ga op zoek naar MySQL.

6
00:00:24,320 --> 00:00:30,320
‫Dit is hoe ik zoveel heb geleerd over Dockerfiles, en hoe ik ze correct kan gebruiken, is dat de

7
00:00:30,380 --> 00:00:34,040
‫officiële repositories echt degelijke standaardinstellingen en best practices hebben ingebouwd.

8
00:00:34,040 --> 00:00:40,250
‫Als ik hier naar MySQL één ga, klik ik hier op het nieuwste Dockerbestand. Ik wed dat het een

9
00:00:40,250 --> 00:00:45,040
‫database is, er zit waarschijnlijk een volume-opdracht in.

10
00:00:45,200 --> 00:00:45,950
‫Daar gaan we.

11
00:00:45,950 --> 00:00:52,640
‫Dit is de standaardlocatie van de MySQL-databases. Deze afbeelding is zo geprogrammeerd om Docker te

12
00:00:52,640 --> 00:00:58,670
‫vertellen dat wanneer we er een nieuwe container van starten, om daadwerkelijk een nieuwe volumelocatie te maken en

13
00:00:58,670 --> 00:01:05,450
‫deze toe te wijzen aan deze map in de container. Dat betekent dat alle bestanden die we daar in de container

14
00:01:05,450 --> 00:01:08,600
‫plaatsen, de container overleven totdat we het volume handmatig verwijderen.

15
00:01:08,660 --> 00:01:13,250
‫En dat is iets waar we hier op moeten wijzen, is dat volumes handmatig moeten worden verwijderd.

16
00:01:13,280 --> 00:01:15,900
‫Je kunt ze niet opruimen door alleen een container te verwijderen.

17
00:01:15,930 --> 00:01:21,350
‫Ze zijn een extra stap. Dat is eigenlijk alleen voor verzekeringen, want het hele punt

18
00:01:21,380 --> 00:01:26,990
‫van een volumeopdracht is om te zeggen dat deze gegevens bijzonder belangrijk zijn, in ieder geval veel belangrijker dan de container zelf.

19
00:01:26,990 --> 00:01:29,930
‫Als we een docker-pull op MySQL doen, en dan

20
00:01:33,500 --> 00:01:40,360
‫doe ik een docker-afbeeldingsinspectie op MySQL, krijgen we het Docker-bestand niet te zien omdat het Docker-bestand niet echt deel uitmaakt

21
00:01:40,370 --> 00:01:46,340
‫van de metadata van de afbeelding, wat u in dit zult opmerken config gebied, dat het dat

22
00:01:46,340 --> 00:01:47,680
‫volume daar specificeerde.

23
00:01:47,810 --> 00:01:53,600
‫Ik kan altijd zien dat de configuratie, die uit de Dockerfile kwam toen het werd gebouwd, een volume aan dat

24
00:01:53,600 --> 00:01:54,460
‫pad toewees.

25
00:01:54,470 --> 00:01:57,150
‫Laten we er een container van maken.

26
00:02:00,990 --> 00:02:05,640
‫Dus docker container run -d --name mysql.

27
00:02:05,730 --> 00:02:09,120
‫Als je je eerder herinnert, is de MySQL-versie weinig bijzonders.

28
00:02:09,230 --> 00:02:11,390
‫Het vereist nu een omgevingsvariabele

29
00:02:11,400 --> 00:02:13,450
‫voordat het werkt.

30
00:02:13,530 --> 00:02:19,090
‫Het is MYSQL_ALLOW_EMPTY_PASSWORD.

31
00:02:19,180 --> 00:02:19,430
‫OKE.

32
00:02:22,810 --> 00:02:29,020
‫Wat je ziet is dat MySQL draait. Als we een docker-container mysql inspecteren,

33
00:02:29,170 --> 00:02:37,200
‫zouden we hetzelfde moeten zien waar het ons in de configuratie vertelt dat er een volume is.

34
00:02:38,360 --> 00:02:39,370
‫Hier.

35
00:02:39,450 --> 00:02:47,400
‫We kunnen het ook hier onder bergen zien. Wat dit is, is dat dit eigenlijk de draaiende container is die zijn

36
00:02:47,400 --> 00:02:55,770
‫eigen unieke locatie op de host krijgt, om die gegevens op te slaan, en dan is het op de achtergrond, in kaart gebracht of gemonteerd, naar die

37
00:02:55,770 --> 00:02:59,730
‫locatie in de container, zodat de locatie in de container denkt eigenlijk

38
00:02:59,730 --> 00:03:02,040
‫gewoon dat het naar /var/lib/mysql schrijft.

39
00:03:02,310 --> 00:03:08,570
‫In dit geval kunnen we zien dat de gegevens zich daadwerkelijk op die locatie op de host bevinden. Dus laten we een docker-volume ls doen,

40
00:03:08,570 --> 00:03:10,790
‫en we kunnen zien

41
00:03:10,860 --> 00:03:16,760
‫dat we nu één volume hebben. Nu merken we dat dit die unieke ID heeft waarvan we nooit zullen weten

42
00:03:16,760 --> 00:03:18,190
‫waar dat in godsnaam naar toe gaat,

43
00:03:18,200 --> 00:03:18,560
‫toch?

44
00:03:18,560 --> 00:03:21,090
‫Dus laten we dat eens inspecteren.

45
00:03:21,150 --> 00:03:22,310
‫Je hoeft niet alles uit te typen.

46
00:03:22,310 --> 00:03:26,270
‫Je kunt gewoon de eerste paar tekens typen en op Tab drukken om het te voltooien. U krijgt dezelfde

47
00:03:26,270 --> 00:03:28,390
‫informatie over het volume zelf.

48
00:03:29,440 --> 00:03:35,050
‫Als je dit echt op een Linux-machine doet, kun je naar die locatie op je harde schijf

49
00:03:35,050 --> 00:03:36,790
‫navigeren en de gegevens bekijken.

50
00:03:37,090 --> 00:03:38,530
‫Er zullen daar inderdaad enkele databases zijn.

51
00:03:38,560 --> 00:03:43,870
‫Als je een Mac of Windows gebruikt, onthoud dan dat Docker voor Windows en Docker voor Mac

52
00:03:43,870 --> 00:03:49,620
‫eigenlijk een klein beetje op de achtergrond doen dat voor ons verborgen is, waar het feitelijk een Linux-VM maakt.

53
00:03:49,750 --> 00:03:55,420
‫Dus deze gegevens bevinden zich technisch gezien binnen die Linux-VM. U kunt niet naar dat pad op uw Windows- of

54
00:03:55,450 --> 00:03:59,530
‫Mac-computer gaan en de gegevens bekijken. Het zit eigenlijk in die VM.

55
00:03:59,530 --> 00:04:04,210
‫We zullen straks, met gemonteerde volumes, zien hoe we die beperking ook kunnen omzeilen.

56
00:04:04,210 --> 00:04:10,810
‫Als je hiernaar kijkt, merk je dat het niet erg gebruiksvriendelijk is om ons te vertellen wat

57
00:04:11,140 --> 00:04:14,250
‫erin zit of waaraan dit volume is toegewezen.

58
00:04:14,260 --> 00:04:20,260
‫We kunnen vanuit het perspectief van de container zien welk volume het gebruikt, maar we kunnen niet zien vanuit het perspectief van

59
00:04:20,410 --> 00:04:22,150
‫het volume waarmee het is verbonden.

60
00:04:22,150 --> 00:04:22,910
‫Rechts?

61
00:04:23,230 --> 00:04:28,910
‫Als ik gewoon op de pijl omhoog zou drukken en, laten we eens kijken, een mysql2.

62
00:04:29,170 --> 00:04:32,190
‫Dat heeft nu een andere MySQL-server gemaakt die op de achtergrond draait.

63
00:04:32,200 --> 00:04:36,430
‫Als ik nog een docker-volume ls doe, zie je er twee.

64
00:04:36,430 --> 00:04:37,770
‫Je begint het probleem te zien, toch?

65
00:04:37,790 --> 00:04:41,630
‫Er is hier geen gemakkelijke manier om het een van het ander te onderscheiden.

66
00:04:41,740 --> 00:04:53,500
‫Als we gewoon, om een punt te bewijzen, een docker-container stop mysql doen, en een docker een container-stop

67
00:04:53,590 --> 00:04:54,930
‫mysql2.

68
00:04:55,190 --> 00:05:01,180
‫We doen een docker-container ls, we zien geen containers lopen. Als we een ls -a doen, krijgen we

69
00:05:01,180 --> 00:05:06,900
‫ze allemaal te zien. En merk op dat ze gestopt zijn. En dan doen we een docker-volume ls, je merkt dat

70
00:05:06,910 --> 00:05:08,580
‫we nog steeds de twee volumes hebben.

71
00:05:08,590 --> 00:05:16,390
‫Als ik een docker-container rm mysql en vervolgens mysql2 doe, omdat ik beide in één opdracht

72
00:05:16,390 --> 00:05:23,590
‫kan doen, worden beide containers verwijderd. Als ik nu een docker-volume ls doe, zijn mijn volumes

73
00:05:23,590 --> 00:05:26,560
‫er nog steeds. Mijn gegevens zijn nog steeds veilig.

74
00:05:26,560 --> 00:05:28,510
‫We hebben dus één probleem opgelost.

75
00:05:28,510 --> 00:05:31,660
‫De databases overleven het uitvoerbare bestand.

76
00:05:31,660 --> 00:05:34,180
‫Hoe maken we dit wat gebruiksvriendelijker?

77
00:05:35,090 --> 00:05:40,010
‫Dat is waar benoemde volumes binnenkomen en de mogelijkheid voor ons om dingen te specificeren op de opdracht

78
00:05:40,010 --> 00:05:40,850
‫docker run.

79
00:05:41,120 --> 00:05:47,810
‫Als ik een paar keer de pijl omhoog raak totdat ik bij de docker-containerloop kom, maakt het niet echt uit

80
00:05:47,810 --> 00:05:49,600
‫welke je weer gaat rennen.

81
00:05:50,820 --> 00:05:59,340
‫In dit geval gaan we eigenlijk een -v commando invoeren. Met A -v kunnen we ofwel een nieuw volume specificeren dat

82
00:05:59,370 --> 00:06:06,660
‫we willen maken voor deze container die op het punt staat te worden uitgevoerd, of het geeft ons twee

83
00:06:06,660 --> 00:06:07,500
‫andere opties.

84
00:06:07,500 --> 00:06:10,320
‫Een daarvan is het maken van een benoemd volume.

85
00:06:10,320 --> 00:06:17,660
‫Als ik net -v deed, en dan de var lib mysql, zou dat hetzelfde doen als

86
00:06:17,670 --> 00:06:20,040
‫onze volumeopdracht in de Dockerfile.

87
00:06:20,040 --> 00:06:24,970
‫Dat hoeven we hier niet echt te doen. Maar wat we kunnen doen, is dat ik er een naam voor kan

88
00:06:26,810 --> 00:06:29,930
‫zetten met een dubbele punt. Dat staat bekend als een "genoemd volume. " Als

89
00:06:30,080 --> 00:06:38,000
‫ik dat doe, en dan een docker-volume ls doe, zul je zien dat mijn nieuwe container een nieuw volume gebruikt en een

90
00:06:38,180 --> 00:06:39,300
‫beschrijvende naam gebruikt.

91
00:06:39,320 --> 00:06:45,980
‫Als we een docker-volume-inspectie doen op die mysql, zul je zien dat dit hier gemakkelijker te gebruiken is.

92
00:06:46,010 --> 00:06:49,550
‫Als ik mijn container opnieuw heb verwijderd, en we moeten een -f invoeren omdat

93
00:06:52,470 --> 00:06:59,040
‫deze nog steeds actief is, en dan voer ik een andere uit. En deze keer zal ik het

94
00:06:59,040 --> 00:07:04,280
‫een andere naam geven. En dan doen we nog een docker-volume ls, je zult zien

95
00:07:04,280 --> 00:07:09,420
‫dat het lijkt alsof we geen nieuw volume hebben gemaakt. Hij gebruikt nog steeds hetzelfde volume.

96
00:07:09,420 --> 00:07:17,680
‫Laten we een docker-container inspecteren op de mysql3. Wat we dan hier zullen zien is, ja, dit is

97
00:07:18,990 --> 00:07:22,860
‫wat er is geconfigureerd, maar wat gebruiken we?

98
00:07:22,880 --> 00:07:24,300
‫Dit zijn onze bergen hier.

99
00:07:24,560 --> 00:07:29,510
‫We zullen hier zien dat niet alleen de naam vriendelijker is, maar dat de bronlocatie ook een

100
00:07:29,510 --> 00:07:30,980
‫beetje vriendelijker is geworden.

101
00:07:31,280 --> 00:07:38,480
‫Voor mij is een kleine tip hier dat wanneer ik dagen of weken achter elkaar een bepaalde database, in een bepaalde container

102
00:07:38,540 --> 00:07:43,460
‫die ik steeds opnieuw moet gebruiken en ik geen lege databaseserver wil, ik Ik

103
00:07:43,460 --> 00:07:50,930
‫zal uiteindelijk mijn containers op deze manier maken en ze een naam geven voor het project, zodat ik weet waar dat volume

104
00:07:50,930 --> 00:07:52,250
‫voor is en

105
00:07:52,370 --> 00:07:53,900
‫dat het moet blijven hangen.

106
00:07:57,840 --> 00:07:59,200
‫Een laatste ding hier.

107
00:08:00,130 --> 00:08:06,390
‫Waarom zou je Docker Volume Create willen doen?

108
00:08:06,550 --> 00:08:13,750
‫Als we ze tijdens runtime kunnen maken op basis van een opdracht voor het uitvoeren van een docker-container en we kunnen ze maken door ze op te geven in het Dockerbestand, zijn er

109
00:08:13,750 --> 00:08:18,670
‫maar een paar gevallen waarin je het van tevoren wilt maken. En dat kun je eigenlijk vrij

110
00:08:18,670 --> 00:08:21,320
‫snel achterhalen door het help-commando te gebruiken.

111
00:08:22,210 --> 00:08:26,580
‫Omdat dit de enige manier is waarop we daadwerkelijk een andere driver kunnen specificeren.

112
00:08:26,590 --> 00:08:28,890
‫Weet je nog die plug-in-dingen waar ik het later over ga hebben?

113
00:08:29,020 --> 00:08:33,370
‫Dan alle stuurprogramma-opties waarvoor we de -o willen gebruiken.

114
00:08:33,370 --> 00:08:37,090
‫Als we er dan labels op willen plakken, waar we het later in de productiesectie ook over zullen hebben.

115
00:08:37,090 --> 00:08:42,530
‫Soms, in speciale gevallen, moet u het Docker-volume van tevoren maken, maar meestal voor uw lokale ontwikkelingsdoeleinden is het

116
00:08:42,540 --> 00:08:46,610
‫prima om het gewoon op te geven in een Dockerfile of bij het run-commando.

