﻿1
00:00:02,530 --> 00:00:10,610
‫In deze lezing gaan we het hebben over bind-mounting en persistente data in die mounts. De vereisten zijn eigenlijk dat u alleen

2
00:00:10,610 --> 00:00:15,300
‫weet over containerbeheer en hoe u containers moet uitvoeren.

3
00:00:15,320 --> 00:00:20,230
‫Laten we erin springen. Laten we het hebben over bind-mounts. Ze zijn eigenlijk best cool.

4
00:00:20,240 --> 00:00:25,550
‫Toen ik er voor het eerst over hoorde, kreeg ik een soort aha van hoe ik Docker gemakkelijk kon gebruiken voor

5
00:00:25,550 --> 00:00:26,180
‫lokale ontwikkeling.

6
00:00:26,180 --> 00:00:33,380
‫Echt, een bind-mount is slechts een toewijzing van de hostbestanden, of mappen, in een containerbestand

7
00:00:33,380 --> 00:00:35,330
‫of map. Dat kan je gewoon doen.

8
00:00:35,330 --> 00:00:39,040
‫U kunt een map opgeven of slechts een enkel bestand. Op de achtergrond is het

9
00:00:39,050 --> 00:00:43,780
‫eigenlijk gewoon dat de twee locaties naar dezelfde fysieke locaties op schijf wijzen.

10
00:00:43,910 --> 00:00:49,730
‫Nogmaals, dit slaat de UFS eigenlijk over zoals de andere volumes doen, zodat uw hostlocatie niet

11
00:00:49,730 --> 00:00:52,620
‫wordt gewist wanneer u de container verwijdert.

12
00:00:52,640 --> 00:00:58,550
‫Als er zich bestanden in de container bevinden waaraan u de hostbestanden toewijst, winnen de hostbestanden. Het verwijdert niet echt de bestanden in

13
00:00:58,550 --> 00:01:03,650
‫de container die het heeft overschreven, omdat het niet echt iets in de

14
00:01:03,680 --> 00:01:04,770
‫container overschrijft.

15
00:01:04,910 --> 00:01:07,100
‫Het is er gewoon terwijl de bind mount bestaat.

16
00:01:07,100 --> 00:01:11,570
‫Op het moment dat je de bind-mount niet meer nodig hebt en je de container opnieuw uitvoert zonder

17
00:01:11,570 --> 00:01:17,650
‫deze, zou je de onderliggende gegevens zien die er eerder waren. Omdat bind-mounts meestal hostspecifiek zijn, hebben ze specifieke

18
00:01:17,660 --> 00:01:21,870
‫gegevens op de harde schijf van de host nodig om te kunnen werken.

19
00:01:21,890 --> 00:01:23,500
‫Je kunt ze niet specificeren in een Dockerfile.

20
00:01:23,510 --> 00:01:28,490
‫U moet ze tijdens runtime gebruiken wanneer u de opdracht docker container run gebruikt. Je kunt het formaat hier

21
00:01:28,490 --> 00:01:29,080
‫bekijken.

22
00:01:29,090 --> 00:01:33,980
‫Het is echt de -v die we eerder gebruikten, alleen aan de linkerkant van de dubbele

23
00:01:34,100 --> 00:01:38,360
‫punt, we plaatsen eigenlijk een volledig pad in plaats van alleen een naam.

24
00:01:38,360 --> 00:01:42,260
‫En de manier waarop de Docker het verschil kan zien tussen het genoemde volume, zoals

25
00:01:42,410 --> 00:01:46,490
‫we een tijdje geleden deden, en de bind-mount, is dat de bind-mount begint met een schuine streep.

26
00:01:46,490 --> 00:01:51,470
‫In Windows zul je merken dat het twee schuine strepen naar voren zijn en dan de stationsletter en dan

27
00:01:51,470 --> 00:01:52,120
‫je pad.

28
00:01:52,130 --> 00:01:57,620
‫Zolang je de linker dubbele punt en rechterkant hebt, kun je echt alles wat je wilt van de

29
00:01:57,620 --> 00:02:01,860
‫host in de container indelen, en je kunt ook dingen specificeren zoals alleen-lezen.

30
00:02:01,880 --> 00:02:07,910
‫Waar dit echt tot uiting komt, is bij het ontwikkelen en uitvoeren van services in uw container

31
00:02:07,910 --> 00:02:12,940
‫die toegang hebben tot bestanden die u op uw host gebruikt of wijzigt.

32
00:02:12,950 --> 00:02:14,720
‫Laten we dat doen met Nginx.

33
00:02:14,930 --> 00:02:22,370
‫Als je naar de root van onze repository voor deze cursus gaat, en dan gaan we naar de Dockerfile

34
00:02:22,370 --> 00:02:24,750
‫sample 2-directory. Nu waren we hier eerder.

35
00:02:24,770 --> 00:02:28,580
‫Als je het je herinnert, zijn er twee bestanden. Dit is voor Nginx, toch?

36
00:02:28,580 --> 00:02:36,530
‫Als we heel snel naar de Dockerfile kijken, is het vrij eenvoudig. Het is gewoon een werkmap specificeren en vervolgens een

37
00:02:36,560 --> 00:02:39,050
‫indexbestand naar die map kopiëren.

38
00:02:39,050 --> 00:02:40,490
‫Er zijn hier geen volumes.

39
00:02:40,490 --> 00:02:45,290
‫Een bind mount vereist geen volume om te werken, hoewel er zeker een zou kunnen zijn.

40
00:02:45,530 --> 00:02:52,590
‫De gastheer wint altijd, weet je nog? Dus als we een docker-containerrun doen, dan doen

41
00:02:52,630 --> 00:02:56,330
‫we een -d... laten we het nginx noemen.

42
00:02:56,390 --> 00:03:00,420
‫Laten we het de poort 8080 geven zoals voorheen.

43
00:03:00,770 --> 00:03:06,470
‫Dan gaan we het deze keer het volume geven. En ik moet het vertellen dat mijn huidige werkdirectory daadwerkelijk

44
00:03:06,650 --> 00:03:12,230
‫in die werkdirectory in de container wordt gemount. Omdat mijn indexbestand hier in deze map staat, wil

45
00:03:12,230 --> 00:03:13,390
‫ik dat het

46
00:03:13,430 --> 00:03:19,040
‫in de container staat, zodat ik het hier kan bewerken en het live in de container te zien is.

47
00:03:19,040 --> 00:03:20,320
‫Dus het zal logisch zijn in een seconde.

48
00:03:20,540 --> 00:03:24,280
‫Hier is een snelle kleine tip. In plaats van dat ik mijn

49
00:03:24,290 --> 00:03:28,370
‫hele pad moet uitzoeken en het hele ding moet typen, kun je pwd hier zo gebruiken.

50
00:03:28,460 --> 00:03:36,210
‫Dat is een shell-snelkoppeling die zegt: 'print de werkmap af en vervang deze opdracht door dat pad.

51
00:03:36,380 --> 00:03:43,460
‫' Dan gaan we gewoon dezelfde werkdirectory gebruiken uit de Dockerfile daar, en dan gaan

52
00:03:43,460 --> 00:03:45,360
‫we de Nginx-afbeelding specificeren.

53
00:03:47,590 --> 00:03:52,930
‫Wat ik ga doen, heel snel, is dat ik een ander terminalvenster ga openen, zodat we twee

54
00:03:52,930 --> 00:03:54,480
‫dingen tegelijk kunnen doen.

55
00:03:54,590 --> 00:03:56,010
‫Je hoeft dit niet echt te doen.

56
00:03:56,050 --> 00:04:01,840
‫Kortom, we gaan gewoon het bestand op onze host bewerken, en dan ga ik in de container zitten en kijken

57
00:04:01,840 --> 00:04:02,780
‫wat er gebeurt.

58
00:04:02,920 --> 00:04:04,730
‫Dus om er zeker van te zijn dat

59
00:04:04,780 --> 00:04:06,350
‫het werkt, gaan we naar localhost.

60
00:04:06,700 --> 00:04:10,000
‫OK, dit is dus niet het standaard Nginx HTML-bestand.

61
00:04:10,030 --> 00:04:13,080
‫En we gebruikten de gewone Nginx-afbeelding.

62
00:04:13,090 --> 00:04:16,580
‫We hebben de aangepaste uit deze map niet echt gebruikt.

63
00:04:16,690 --> 00:04:24,270
‫We hebben zojuist een stockfoto gebruikt. Om dat punt te bewijzen, kunnen we datzelfde, exacte commando

64
00:04:24,280 --> 00:04:37,390
‫opnieuw doen, maar de -v eruit halen, en ik zal het in plaats daarvan op poort 8080 uitvoeren. En ik noem deze nginx2.

65
00:04:37,420 --> 00:04:47,930
‫Als ik naar mijn browser ga en naar localhost 8080 ga, is dat de standaard nginx-index. html-bestand.

66
00:04:48,010 --> 00:04:52,130
‫Dit is de aangepaste die we in deze map hebben.

67
00:04:52,780 --> 00:04:56,380
‫We kunnen dus al zien dat het het correct in kaart heeft gebracht.

68
00:04:56,560 --> 00:05:03,010
‫Als ik hier een ander tabblad open en een opdrachtregel in de container krijg.

69
00:05:08,800 --> 00:05:10,130
‫Ga dan naar die map.

70
00:05:17,710 --> 00:05:21,580
‫U zult merken dat we het Dockerbestand daadwerkelijk kunnen zien omdat we de hele map in kaart brengen.

71
00:05:21,620 --> 00:05:27,460
‫Als we aan de linkerkant een nieuw bestand hebben gemaakt en ik kan dat Linux-aanraakcommando hier gewoon gebruiken om een

72
00:05:30,440 --> 00:05:37,010
‫nieuw bestand te maken. Dan rechts... oeps... vergeet dat maar steeds... ls -al, en je zult dat

73
00:05:37,010 --> 00:05:37,900
‫in je bestand zien.

74
00:05:37,970 --> 00:05:43,350
‫Hopelijk begrijp je wat hier aan de hand is, dat beide locaties dezelfde locatie zijn.

75
00:05:43,370 --> 00:05:47,350
‫En als ik iets in dat testme-bestand echode, en

76
00:05:57,430 --> 00:05:58,420
‫dan...

77
00:06:01,620 --> 00:06:02,410
‫daar ga je.

78
00:06:02,410 --> 00:06:06,670
‫Onze nginx kan de wijzigingen zien omdat het gewoon een normaal bestandspad in de container is en

79
00:06:06,670 --> 00:06:08,720
‫die bestanden zich op de host bevinden.

80
00:06:08,830 --> 00:06:12,670
‫Als ik ze in de container zou verwijderen, zouden ze op de host worden verwijderd omdat het hetzelfde

81
00:06:12,670 --> 00:06:13,210
‫bestand is.

82
00:06:13,210 --> 00:06:19,090
‫Dit is wanneer ik meestal een ontwikkelaar laat nadenken over al hun ontwikkelomgevingen die

83
00:06:19,090 --> 00:06:24,670
‫ze hebben met deze gecompliceerde installatie. Misschien gebruiken ze Vagrant of een andere handmatige

84
00:06:24,670 --> 00:06:30,880
‫methode om hun perfecte omgeving in te stellen, en kunnen ze beginnen te zien hoe dit dat zoveel eenvoudiger kan maken.

85
00:06:31,330 --> 00:06:35,920
‫Omdat ik geen ingewikkelde installatie op mijn Mac hoefde te doen, heb ik gewoon een container uitgevoerd.

86
00:06:35,920 --> 00:06:43,670
‫Ik gebruikte het -v commando met de mount, en nu kan mijn code, op mijn host, worden bewerkt op mijn host.

87
00:06:43,840 --> 00:06:47,890
‫En ik hoef echt nooit in de schaal van de container te gaan.

88
00:06:47,890 --> 00:06:52,570
‫Gewoonlijk kunt u de container gewoon uitvoeren en de logboeken bekijken om te zien of er fouten zijn tijdens

89
00:06:52,570 --> 00:06:53,260
‫het coderen.

90
00:06:53,500 --> 00:06:58,750
‫Dit is natuurlijk een eenvoudig voorbeeld met Nginx. Later zullen we specifieke voorbeelden

91
00:06:58,750 --> 00:07:03,160
‫hebben van verschillende ontwikkelomgevingen voor lokale ontwikkeling en containers.

