﻿1
00:00:04,670 --> 00:00:09,710
‫Gut. Die Volumes scheinen von vornherein ziemlich einfach zu sein, aber es steckt tatsächlich viel dahinter.

2
00:00:09,710 --> 00:00:16,480
‫Die erste Möglichkeit, einem Container mitzuteilen, dass er sich über ein Volume Gedanken machen muss, besteht in einer Docker-Datei.

3
00:00:16,480 --> 00:00:18,540
‫Schauen wir uns einige davon an.

4
00:00:18,590 --> 00:00:21,040
‫Ich werde einfach tun, was ich viel tue.

5
00:00:21,170 --> 00:00:24,110
‫Ich werde nach MySQL suchen.

6
00:00:24,320 --> 00:00:30,320
‫Auf diese Weise habe ich so viel über Dockerfiles gelernt und erfahren, wie man sie richtig einsetzt. In den

7
00:00:30,380 --> 00:00:34,040
‫offiziellen Repositorys sind wirklich solide Standardeinstellungen und Best Practices integriert.

8
00:00:34,040 --> 00:00:40,250
‫Wenn ich hier zu MySQL gehe, klicke ich hier einfach auf die neueste Docker-Datei. Ich wette, es ist eine

9
00:00:40,250 --> 00:00:45,040
‫Datenbank, in der wahrscheinlich ein Volume-Befehl enthalten ist.

10
00:00:45,200 --> 00:00:45,950
‫Na, bitte.

11
00:00:45,950 --> 00:00:52,640
‫Dies ist der Standardspeicherort der MySQL-Datenbanken. Dieses Image ist so programmiert, dass

12
00:00:52,640 --> 00:00:58,670
‫Docker weiß, dass beim Starten eines neuen Containers tatsächlich ein neuer Volume-Speicherort erstellt

13
00:00:58,670 --> 00:01:05,450
‫und diesem Verzeichnis im Container zugewiesen wird. Das bedeutet, dass alle Dateien, die wir dort im Container ablegen,

14
00:01:05,450 --> 00:01:08,600
‫den Container überleben, bis wir das Volume manuell löschen.

15
00:01:08,660 --> 00:01:13,250
‫Und das ist etwas, worauf wir hier hinweisen sollten, ist, dass Volumes manuell gelöscht werden müssen.

16
00:01:13,280 --> 00:01:15,900
‫Sie können sie nicht einfach durch Entfernen eines Behälters aufräumen.

17
00:01:15,930 --> 00:01:21,350
‫Sie sind ein zusätzlicher Schritt. Eigentlich nur für Versicherungen, denn der springende

18
00:01:21,380 --> 00:01:26,990
‫Punkt eines Volumenbefehls ist, dass diese Daten besonders wichtig sind, zumindest viel wichtiger als der Container selbst.

19
00:01:26,990 --> 00:01:29,930
‫Wenn wir ein Docker-Pull für MySQL

20
00:01:33,500 --> 00:01:40,360
‫durchführen und dann ein Docker-Image-Inspect für MySQL durchführen, wird die Docker-Datei nicht angezeigt, da

21
00:01:40,370 --> 00:01:46,340
‫die Docker-Datei nicht wirklich Teil der Image-Metadaten ist Konfigurationsbereich, den er dort

22
00:01:46,340 --> 00:01:47,680
‫angegeben hat.

23
00:01:47,810 --> 00:01:53,600
‫Ich kann immer sagen, dass die Konfiguration, die aus der Docker-Datei stammt, als sie erstellt wurde, diesem Pfad ein Volume

24
00:01:53,600 --> 00:01:54,460
‫zugewiesen hat.

25
00:01:54,470 --> 00:01:57,150
‫Lassen Sie uns einen Container davon laufen.

26
00:02:00,990 --> 00:02:05,640
‫Also docker container run -d --name mysql.

27
00:02:05,730 --> 00:02:09,120
‫Wenn Sie sich an früher erinnern, ist MySQL etwas Besonderes.

28
00:02:09,230 --> 00:02:11,390
‫Es erfordert jetzt eine Umgebungsvariable,

29
00:02:11,400 --> 00:02:13,450
‫bevor es funktioniert.

30
00:02:13,530 --> 00:02:19,090
‫Es ist MYSQL_ALLOW_EMPTY_PASSWORD.

31
00:02:19,180 --> 00:02:19,430
‫OKAY.

32
00:02:22,810 --> 00:02:29,020
‫Was Sie sehen, ist MySQL ausgeführt. Wenn wir einen Docker Container machen,

33
00:02:29,170 --> 00:02:37,200
‫der mysql inspiziert, sollten wir dasselbe sehen, wo es uns in der Konfiguration sagt, dass es ein Volume gibt.

34
00:02:38,360 --> 00:02:39,370
‫Hier.

35
00:02:39,450 --> 00:02:47,400
‫Wir können es auch hier oben unter Reittieren sehen. Dies ist, ist dies tatsächlich der ausgeführte Container, der seinen eigenen eindeutigen

36
00:02:47,400 --> 00:02:55,770
‫Speicherort auf dem Host erhält, um diese Daten zu speichern, und dann ist es im Hintergrund, zugeordnet oder bereitgestellt, an diesem Speicherort im Container, so

37
00:02:55,770 --> 00:02:59,730
‫dass der Speicherort im Container denkt eigentlich nur, es schreibt nach

38
00:02:59,730 --> 00:03:02,040
‫/ var / lib / mysql.

39
00:03:02,310 --> 00:03:08,570
‫In diesem Fall können wir sehen, dass sich die Daten tatsächlich an diesem Ort auf dem Host befinden. Machen wir also ein Docker-Volume, und

40
00:03:08,570 --> 00:03:10,790
‫wir können sehen,

41
00:03:10,860 --> 00:03:16,760
‫dass wir jetzt ein Volume haben. Jetzt stellen wir fest, dass dies die eindeutige ID hat, mit der wir nie

42
00:03:16,760 --> 00:03:18,190
‫wissen, was zum Teufel das ist,

43
00:03:18,200 --> 00:03:18,560
‫oder?

44
00:03:18,560 --> 00:03:21,090
‫Lassen Sie uns das überprüfen.

45
00:03:21,150 --> 00:03:22,310
‫Sie müssen nicht alles abtippen.

46
00:03:22,310 --> 00:03:26,270
‫Sie können einfach die ersten Zeichen eingeben und die Tabulatortaste drücken, um den Vorgang abzuschließen. Sie erhalten ähnliche

47
00:03:26,270 --> 00:03:28,390
‫Informationen über das Volume selbst.

48
00:03:29,440 --> 00:03:35,050
‫Wenn Sie dies tatsächlich auf einem Linux-Computer tun, können Sie zu diesem Speicherort auf Ihrer Festplatte navigieren

49
00:03:35,050 --> 00:03:36,790
‫und die Daten anzeigen.

50
00:03:37,090 --> 00:03:38,530
‫Dort wird es tatsächlich einige Datenbanken geben.

51
00:03:38,560 --> 00:03:43,870
‫Wenn Sie auf einem Mac oder Windows arbeiten, denken Sie daran, dass Docker für Windows

52
00:03:43,870 --> 00:03:49,620
‫und Docker für Mac tatsächlich ein bisschen im Hintergrund arbeiten, der uns verborgen ist und eine Linux-VM erstellt.

53
00:03:49,750 --> 00:03:55,420
‫Diese Daten befinden sich also technisch gesehen in dieser Linux-VM. Sie können auf Ihrem Windows- oder Mac-Computer nicht auf diesen

54
00:03:55,450 --> 00:03:59,530
‫Pfad zugreifen und die Daten anzeigen. Es ist eigentlich in dieser VM.

55
00:03:59,530 --> 00:04:04,210
‫Wir werden in Kürze mit bereitgestellten Volumes sehen, wie wir diese Einschränkung ebenfalls umgehen können.

56
00:04:04,210 --> 00:04:10,810
‫Wenn Sie sich das ansehen, werden Sie feststellen, dass es nicht sehr benutzerfreundlich ist, wenn Sie uns sagen, was darin

57
00:04:11,140 --> 00:04:14,250
‫enthalten ist oder wem dieses Volume zugewiesen ist.

58
00:04:14,260 --> 00:04:20,260
‫Wir können aus der Perspektive des Containers sehen, welches Volume verwendet wird, aber wir können aus der Perspektive des Volumes nicht

59
00:04:20,410 --> 00:04:22,150
‫sehen, womit es verbunden ist.

60
00:04:22,150 --> 00:04:22,910
‫Richtig?

61
00:04:23,230 --> 00:04:28,910
‫Wenn ich nur den Aufwärtspfeil drücken und, mal sehen, ein mysql2 erstellen würde.

62
00:04:29,170 --> 00:04:32,190
‫Damit ist nun ein weiterer MySQL-Server angelegt, der im Hintergrund läuft.

63
00:04:32,200 --> 00:04:36,430
‫Wenn ich ein anderes Docker-Volume verwende, werden zwei davon angezeigt.

64
00:04:36,430 --> 00:04:37,770
‫Du beginnst das Problem zu sehen, oder?

65
00:04:37,790 --> 00:04:41,630
‫Es gibt hier keine wirklich einfache Möglichkeit, das eine vom anderen zu unterscheiden.

66
00:04:41,740 --> 00:04:53,500
‫Wenn wir nur einen Punkt beweisen wollen, stoppen ein Docker-Container mysql und ein Docker-Container

67
00:04:53,590 --> 00:04:54,930
‫mysql2.

68
00:04:55,190 --> 00:05:01,180
‫Wir machen einen Docker Container, wir werden keine Container laufen sehen. Wenn wir ein ls -a machen, können

69
00:05:01,180 --> 00:05:06,900
‫wir sie alle sehen. Und beachte, dass sie gestoppt sind. Und dann machen wir ein Docker-Volume. Wie Sie

70
00:05:06,910 --> 00:05:08,580
‫sehen, haben wir immer noch zwei Volumes.

71
00:05:08,590 --> 00:05:16,390
‫Wenn ich einen Docker-Container rm mysql und dann mysql2 mache, werden beide Container entfernt, da ich

72
00:05:16,390 --> 00:05:23,590
‫tatsächlich beide in einem Befehl ausführen kann. Wenn ich jetzt ein Docker-Volume ls mache, sind meine Volumes

73
00:05:23,590 --> 00:05:26,560
‫immer noch da. Meine Daten sind immer noch sicher.

74
00:05:26,560 --> 00:05:28,510
‫Wir haben also ein Problem gelöst.

75
00:05:28,510 --> 00:05:31,660
‫Die Datenbanken überleben die ausführbare Datei.

76
00:05:31,660 --> 00:05:34,180
‫Wie machen wir das ein bisschen benutzerfreundlicher?

77
00:05:35,090 --> 00:05:40,010
‫Hier kommen die benannten Volumes ins Spiel und wir können die Dinge im Docker-Befehl

78
00:05:40,010 --> 00:05:40,850
‫run angeben.

79
00:05:41,120 --> 00:05:47,810
‫Wenn ich ein paar Mal auf den Aufwärtspfeil drücke, bis ich zum Docker-Containerlauf komme, ist es egal,

80
00:05:47,810 --> 00:05:49,600
‫welchen Sie erneut ausführen.

81
00:05:50,820 --> 00:05:59,340
‫In diesem Fall geben wir den Befehl -v ein. Mit -v können wir entweder ein neues Volume

82
00:05:59,370 --> 00:06:06,660
‫angeben, das wir für diesen Container erstellen möchten, der ausgeführt werden soll, oder zwei weitere

83
00:06:06,660 --> 00:06:07,500
‫Optionen.

84
00:06:07,500 --> 00:06:10,320
‫Eine davon ist das Erstellen eines benannten Volumes.

85
00:06:10,320 --> 00:06:17,660
‫Wenn ich nur -v und dann die var lib mysql machen würde, würde das das Gleiche tun, was unser

86
00:06:17,670 --> 00:06:20,040
‫Volume-Befehl in der Docker-Datei getan hat.

87
00:06:20,040 --> 00:06:24,970
‫Das brauchen wir hier nicht wirklich zu tun. Aber was wir tun können, ist, dass ich einen Namen mit

88
00:06:26,810 --> 00:06:29,930
‫einem Doppelpunkt voranstellen kann. Das ist als "benanntes Volume" bekannt. Msgstr ""

89
00:06:30,080 --> 00:06:38,000
‫"Wenn ich das mache und dann ein Docker - Volume ls mache, wirst du sehen, dass mein neuer Container ein neues Volume verwendet und

90
00:06:38,180 --> 00:06:39,300
‫einen benutzerfreundlichen Namen verwendet.

91
00:06:39,320 --> 00:06:45,980
‫Wenn wir ein Docker-Volume in diesem MySQL untersuchen, werden Sie feststellen, dass dies hier einfacher ist.

92
00:06:46,010 --> 00:06:49,550
‫Wenn ich meinen Container wieder lösche, und wir müssen ein -f eingeben,

93
00:06:52,470 --> 00:06:59,040
‫weil er noch läuft, und dann führe ich einen anderen aus. Und dieses Mal werde ich ihm

94
00:06:59,040 --> 00:07:04,280
‫einen anderen Namen geben. Und dann machen wir ein anderes Docker-Volume. Sie werden sehen,

95
00:07:04,280 --> 00:07:09,420
‫dass wir anscheinend kein neues Volume erstellt haben. Es wird immer noch das gleiche Volumen verwendet.

96
00:07:09,420 --> 00:07:17,680
‫Lassen Sie uns einen Docker-Container auf dem mysql3 untersuchen. Dann werden wir hier oben sehen, ja, das ist

97
00:07:18,990 --> 00:07:22,860
‫was konfiguriert wurde, aber was laufen wir?

98
00:07:22,880 --> 00:07:24,300
‫Dies ist unser Reittier hier oben.

99
00:07:24,560 --> 00:07:29,510
‫Wir werden hier sehen, dass nicht nur der Name freundlicher ist, sondern auch der

100
00:07:29,510 --> 00:07:30,980
‫Ursprungsort ein wenig freundlicher.

101
00:07:31,280 --> 00:07:38,480
‫Ein kleiner Tipp für mich ist, dass ich, wenn ich tagelang oder wochenlang eine bestimmte Datenbank in einem bestimmten Container

102
00:07:38,540 --> 00:07:43,460
‫laufen lasse, die ich immer wieder verwenden muss und keinen leeren Datenbankserver möchte

103
00:07:43,460 --> 00:07:50,930
‫Schließlich werden meine Container auf diese Weise erstellt und für das Projekt benannt, damit ich weiß, wofür das Volume ist und

104
00:07:50,930 --> 00:07:52,250
‫dass es in

105
00:07:52,370 --> 00:07:53,900
‫der Nähe bleiben muss.

106
00:07:57,840 --> 00:07:59,200
‫Eine letzte Sache hier.

107
00:08:00,130 --> 00:08:06,390
‫Warum sollten Sie Docker-Volumes erstellen?

108
00:08:06,550 --> 00:08:13,750
‫Wenn wir sie zur Laufzeit aus einem Docker-Container-Ausführungsbefehl erstellen können und indem wir sie in der Docker-Datei angeben, gibt es nur wenige Fälle, in

109
00:08:13,750 --> 00:08:18,670
‫denen Sie sie im Voraus erstellen möchten. Mit dem Befehl help

110
00:08:18,670 --> 00:08:21,320
‫können Sie das schnell herausfinden.

111
00:08:22,210 --> 00:08:26,580
‫Denn nur so können wir tatsächlich einen anderen Treiber angeben.

112
00:08:26,590 --> 00:08:28,890
‫Erinnerst du dich an das Plug-in-Zeug, über das ich später sprechen werde?

113
00:08:29,020 --> 00:08:33,370
‫Dann alle Treiberoptionen, für die wir das -o verwenden möchten.

114
00:08:33,370 --> 00:08:37,090
‫Wenn wir dann Etiketten darauf platzieren möchten, worüber wir später in der Produktion sprechen werden.

115
00:08:37,090 --> 00:08:42,530
‫In bestimmten Fällen müssen Sie das Docker-Volume im Voraus erstellen. In der Regel ist es jedoch für Ihre lokalen

116
00:08:42,540 --> 00:08:46,610
‫Entwicklungszwecke ausreichend, es nur in einer Docker-Datei oder beim Ausführen des Befehls anzugeben.

