﻿1
00:00:02,530 --> 00:00:10,610
‫In dieser Vorlesung werden wir über das Binden von Bindungen und persistente Daten in diesen Mounts sprechen. Die Anforderungen sind wirklich, dass Sie nur

2
00:00:10,610 --> 00:00:15,300
‫über die Containerverwaltung und das Ausführen von Containern Bescheid wissen.

3
00:00:15,320 --> 00:00:20,230
‫Lass uns reinspringen. Lassen Sie uns über Bindungshalterungen sprechen. Sie sind eigentlich ziemlich cool.

4
00:00:20,240 --> 00:00:25,550
‫Als ich zum ersten Mal davon erfuhr, gab es mir eine Art Aha, wie ich Docker einfach für die lokale Entwicklung

5
00:00:25,550 --> 00:00:26,180
‫verwenden kann.

6
00:00:26,180 --> 00:00:33,380
‫In Wirklichkeit ist ein Bind Mount nur eine Zuordnung der Hostdateien oder Verzeichnisse zu einer Containerdatei oder

7
00:00:33,380 --> 00:00:35,330
‫einem Verzeichnis. Sie können genau das tun.

8
00:00:35,330 --> 00:00:39,040
‫Sie können entweder ein Verzeichnis oder nur eine einzelne Datei angeben. Im Hintergrund zeigen die

9
00:00:39,050 --> 00:00:43,780
‫beiden Speicherorte im Grunde nur auf dieselben physischen Speicherorte auf der Festplatte.

10
00:00:43,910 --> 00:00:49,730
‫Auch hier wird das UFS wie bei den anderen Volumes übersprungen, sodass Ihr Hostspeicherort beim

11
00:00:49,730 --> 00:00:52,620
‫Löschen des Containers nicht gelöscht wird.

12
00:00:52,640 --> 00:00:58,550
‫Wenn sich im Container Dateien befinden, denen Sie die Hostdateien zuordnen, gewinnen die Hostdateien. Die Dateien in dem Container, die

13
00:00:58,550 --> 00:01:03,650
‫überschrieben wurden, werden nicht gelöscht, da nichts im Container wirklich überschrieben

14
00:01:03,680 --> 00:01:04,770
‫wird.

15
00:01:04,910 --> 00:01:07,100
‫Es ist nur da, während das Bind-Mount existiert.

16
00:01:07,100 --> 00:01:11,570
‫Sobald Sie den Bind-Mount nicht mehr benötigen und den Container ohne ihn erneut ausführen, werden

17
00:01:11,570 --> 00:01:17,650
‫die zugrunde liegenden Daten angezeigt, die zuvor vorhanden waren. Da Bindungs-Mounts normalerweise hostspezifisch sind, müssen sich

18
00:01:17,660 --> 00:01:21,870
‫bestimmte Daten auf der Festplatte des Hosts befinden, damit sie funktionieren.

19
00:01:21,890 --> 00:01:23,500
‫Sie können sie nicht in einer Docker-Datei angeben.

20
00:01:23,510 --> 00:01:28,490
‫Sie müssen sie zur Laufzeit verwenden, wenn Sie den Befehl docker container run verwenden. Sie können das Format hier

21
00:01:28,490 --> 00:01:29,080
‫sehen.

22
00:01:29,090 --> 00:01:33,980
‫Es ist wirklich das -v, das wir zuvor verwendet haben, nur auf der linken Seite des

23
00:01:34,100 --> 00:01:38,360
‫Doppelpunkts, wir geben tatsächlich einen vollständigen Pfad ein und nicht nur einen Namen.

24
00:01:38,360 --> 00:01:42,260
‫Und die Art und Weise, wie der Docker tatsächlich den Unterschied zwischen dem benannten Volume, wie wir

25
00:01:42,410 --> 00:01:46,490
‫es vor einiger Zeit getan haben, und dem Bind-Mount erkennen kann, ist, dass das Bind-Mount mit einem Schrägstrich beginnt.

26
00:01:46,490 --> 00:01:51,470
‫Unter Windows werden Sie feststellen, dass es sich um zwei Schrägstriche und dann um den Laufwerksbuchstaben und dann um Ihren

27
00:01:51,470 --> 00:01:52,120
‫Pfad handelt.

28
00:01:52,130 --> 00:01:57,620
‫Solange Sie den linken Doppelpunkt und die rechte Seite haben, können Sie wirklich alles, was Sie vom Host

29
00:01:57,620 --> 00:02:01,860
‫wollen, in den Container abbilden, und Sie können auch Dinge wie schreibgeschützt angeben.

30
00:02:01,880 --> 00:02:07,910
‫Dies kommt wirklich zum Tragen, wenn Sie Dienste in Ihrem Container entwickeln und ausführen, die

31
00:02:07,910 --> 00:02:12,940
‫auf Dateien zugreifen, die Sie auf Ihrem Host verwenden oder ändern.

32
00:02:12,950 --> 00:02:14,720
‫Machen wir das mit Nginx.

33
00:02:14,930 --> 00:02:22,370
‫Wenn Sie für diesen Kurs zum Stammverzeichnis unseres Repositorys gehen, gehen wir in

34
00:02:22,370 --> 00:02:24,750
‫das Dockerfile-Beispiel-2-Verzeichnis. Jetzt waren wir früher hier.

35
00:02:24,770 --> 00:02:28,580
‫Wenn Sie sich erinnern, gibt es zwei Dateien. Das ist für Nginx, oder?

36
00:02:28,580 --> 00:02:36,530
‫Wenn wir uns das Dockerfile ganz schnell ansehen, ist es ziemlich einfach. Es wird lediglich ein Arbeitsverzeichnis angegeben und anschließend eine

37
00:02:36,560 --> 00:02:39,050
‫Indexdatei in dieses Verzeichnis kopiert.

38
00:02:39,050 --> 00:02:40,490
‫Hier gibt es keine Bände.

39
00:02:40,490 --> 00:02:45,290
‫Für ein Bind-Mount ist kein Volume erforderlich, obwohl es durchaus vorhanden sein könnte.

40
00:02:45,530 --> 00:02:52,590
‫Der Gastgeber gewinnt immer, erinnerst du dich? Wenn wir also einen Docker-Container-Lauf ausführen, führen wir

41
00:02:52,630 --> 00:02:56,330
‫einen -d ... Nennen wir es Nginx.

42
00:02:56,390 --> 00:03:00,420
‫Geben wir ihm den Port 8080 wie zuvor.

43
00:03:00,770 --> 00:03:06,470
‫Dann geben wir ihm diesmal die Lautstärke. Und ich muss sagen, dass mein aktuelles Arbeitsverzeichnis tatsächlich

44
00:03:06,650 --> 00:03:12,230
‫in dieses Arbeitsverzeichnis im Container eingebunden wird. Da sich meine Indexdatei hier in diesem Ordner

45
00:03:12,230 --> 00:03:13,390
‫befindet, soll sie

46
00:03:13,430 --> 00:03:19,040
‫sich im Container befinden, damit ich sie hier bearbeiten kann, und sie wird live im Container angezeigt.

47
00:03:19,040 --> 00:03:20,320
‫Es wird also in einer Sekunde Sinn machen.

48
00:03:20,540 --> 00:03:24,280
‫Hier ist ein kurzer kleiner Tipp. Anstatt dass ich meinen gesamten

49
00:03:24,290 --> 00:03:28,370
‫Pfad herausfinden und das Ganze eingeben muss, können Sie pwd hier so verwenden.

50
00:03:28,460 --> 00:03:36,210
‫Dies ist eine Shell-Verknüpfung, die besagt: 'Drucken Sie das Arbeitsverzeichnis aus und ersetzen Sie diesen Befehl durch diesen Pfad.

51
00:03:36,380 --> 00:03:43,460
‫„Dann verwenden wir dort nur dasselbe Arbeitsverzeichnis aus der Docker-Datei und geben dann

52
00:03:43,460 --> 00:03:45,360
‫das Nginx-Image an.

53
00:03:47,590 --> 00:03:52,930
‫Was ich ganz schnell tun werde, ist, dass ich tatsächlich ein anderes Terminalfenster öffne, damit wir zwei

54
00:03:52,930 --> 00:03:54,480
‫Dinge gleichzeitig tun können.

55
00:03:54,590 --> 00:03:56,010
‫Sie müssen das nicht wirklich tun.

56
00:03:56,050 --> 00:04:01,840
‫Grundsätzlich werden wir nur die Datei auf unserem Host bearbeiten, und dann werde ich im Container sein und sehen,

57
00:04:01,840 --> 00:04:02,780
‫was passiert.

58
00:04:02,920 --> 00:04:04,730
‫Um sicherzugehen, dass es funktioniert,

59
00:04:04,780 --> 00:04:06,350
‫gehen wir zu localhost.

60
00:04:06,700 --> 00:04:10,000
‫OK, dies ist also nicht die Standard-Nginx-HTML-Datei.

61
00:04:10,030 --> 00:04:13,080
‫Und wir haben das reguläre Nginx-Bild verwendet.

62
00:04:13,090 --> 00:04:16,580
‫Wir haben die benutzerdefinierte aus diesem Verzeichnis nicht verwendet.

63
00:04:16,690 --> 00:04:24,270
‫Wir haben gerade ein Archivbild verwendet. Um diesen Punkt zu beweisen, können wir tatsächlich denselben

64
00:04:24,280 --> 00:04:37,390
‫exakten Befehl erneut ausführen, aber das -v entfernen, und ich werde es stattdessen auf Port 8080 ausführen. Und ich werde dies nginx2 nennen.

65
00:04:37,420 --> 00:04:47,930
‫Wenn ich zu meinem Browser gehe und zu localhost 8080 gehe, ist dies der Standard-Nginx-Index. HTML-Datei.

66
00:04:48,010 --> 00:04:52,130
‫Dieser ist der benutzerdefinierte, den wir in diesem Verzeichnis haben.

67
00:04:52,780 --> 00:04:56,380
‫Wir können also bereits sehen, dass es richtig zugeordnet wurde.

68
00:04:56,560 --> 00:05:03,010
‫Wenn ich hier eine andere Registerkarte öffne und eine Befehlszeile im Container erhalte.

69
00:05:08,800 --> 00:05:10,130
‫Dann gehen Sie in dieses Verzeichnis.

70
00:05:17,710 --> 00:05:21,580
‫Sie werden feststellen, dass wir die Docker-Datei tatsächlich sehen können, da wir das gesamte Verzeichnis zuordnen.

71
00:05:21,620 --> 00:05:27,460
‫Wenn links drüben, wenn wir tatsächlich eine neue Datei erstellt haben und ich diesen Linux-Touch-Befehl hier verwenden kann, um eine

72
00:05:30,440 --> 00:05:37,010
‫neue Datei zu erstellen. Dann rechts rüber ... Hoppla... Vergiss einfach immer wieder, dass ... ls -al, und das sehen Sie

73
00:05:37,010 --> 00:05:37,900
‫in Ihrer Datei.

74
00:05:37,970 --> 00:05:43,350
‫Hoffentlich verstehen Sie, was hier vor sich geht, dass beide Standorte derselbe sind.

75
00:05:43,370 --> 00:05:47,350
‫Und wenn ich etwas in diese Testdatei zurückgesendet habe und

76
00:05:57,430 --> 00:05:58,420
‫dann ...

77
00:06:01,620 --> 00:06:02,410
‫los geht's

78
00:06:02,410 --> 00:06:06,670
‫Unser Nginx kann die Änderungen sehen, da es sich nur um einen normalen Dateipfad im Container handelt

79
00:06:06,670 --> 00:06:08,720
‫und sich diese Dateien auf dem Host befinden.

80
00:06:08,830 --> 00:06:12,670
‫Wenn ich sie im Container löschen würde, würden sie auf dem Host gelöscht, da es sich um dieselbe

81
00:06:12,670 --> 00:06:13,210
‫Datei handelt.

82
00:06:13,210 --> 00:06:19,090
‫Dies ist der Zeitpunkt, an dem ich normalerweise einen Entwickler dazu bringe, über all seine

83
00:06:19,090 --> 00:06:24,670
‫Entwicklungsumgebungen nachzudenken, die dieses komplizierte Setup darstellen. Vielleicht verwenden sie Vagrant oder eine andere manuelle

84
00:06:24,670 --> 00:06:30,880
‫Methode, um ihre perfekte Umgebung einzurichten, und sie können sehen, wie dies das so viel einfacher machen könnte.

85
00:06:31,330 --> 00:06:35,920
‫Da ich auf meinem Mac keine komplizierten Einstellungen vornehmen musste, habe ich nur einen Container ausgeführt.

86
00:06:35,920 --> 00:06:43,670
‫Ich habe den Befehl -v mit dem Mount verwendet, und jetzt kann mein Code auf meinem Host auf meinem Host bearbeitet werden.

87
00:06:43,840 --> 00:06:47,890
‫Und ich muss wirklich nie in die Hülle des Containers gehen.

88
00:06:47,890 --> 00:06:52,570
‫Normalerweise können Sie den Container einfach ausführen und seine Protokolle überprüfen, um festzustellen, ob beim Codieren

89
00:06:52,570 --> 00:06:53,260
‫Fehler auftreten.

90
00:06:53,500 --> 00:06:58,750
‫Dies ist natürlich ein einfaches Beispiel für Nginx. Später werden wir tatsächlich spezifische

91
00:06:58,750 --> 00:07:03,160
‫Beispiele für verschiedene Entwicklungsumgebungen für die lokale Entwicklung und Container haben.

