﻿1
00:00:04,670 --> 00:00:09,710
‫D'accord. Les volumes semblent assez simples au début, mais en réalité, il y a beaucoup à faire.

2
00:00:09,710 --> 00:00:16,480
‫La première façon de dire à un conteneur qu'il doit s'inquiéter d'un volume est d'utiliser un fichier Docker.

3
00:00:16,480 --> 00:00:18,540
‫Allons vérifier certaines de celles-ci.

4
00:00:18,590 --> 00:00:21,040
‫Je vais juste faire ce que je fais beaucoup.

5
00:00:21,170 --> 00:00:24,110
‫Je vais chercher MySQL.

6
00:00:24,320 --> 00:00:30,320
‫C’est ainsi que j’ai tant appris sur Dockerfiles, et comment les utiliser correctement, est que les référentiels officiels contiennent

7
00:00:30,380 --> 00:00:34,040
‫de véritables valeurs par défaut et des meilleures pratiques intégrées.

8
00:00:34,040 --> 00:00:40,250
‫Quand je vais ici à MySQL, je vais simplement cliquer sur le dernier fichier Docker ici. Je vous parie que c'est une

9
00:00:40,250 --> 00:00:45,040
‫base de données, elle contient probablement une commande de volume.

10
00:00:45,200 --> 00:00:45,950
‫Nous y voilà.

11
00:00:45,950 --> 00:00:52,640
‫C'est l'emplacement par défaut des bases de données MySQL. Cette image est programmée de manière à indiquer à

12
00:00:52,640 --> 00:00:58,670
‫Docker que, lorsque nous démarrons un nouveau conteneur à partir de celui-ci, il faut créer un nouvel emplacement

13
00:00:58,670 --> 00:01:05,450
‫de volume et l'affecter à ce répertoire dans le conteneur. Ce qui signifie que tous les fichiers que nous avons placés dans

14
00:01:05,450 --> 00:01:08,600
‫le conteneur survivront jusqu'à ce que nous supprimions manuellement le volume.

15
00:01:08,660 --> 00:01:13,250
‫Et c’est quelque chose que nous devrions souligner ici, c’est que les volumes doivent être supprimés manuellement.

16
00:01:13,280 --> 00:01:15,900
‫Vous ne pouvez pas les nettoyer simplement en enlevant un conteneur.

17
00:01:15,930 --> 00:01:21,350
‫Ils sont une étape supplémentaire. En réalité, c’est juste pour l’assurance, car l’intérêt d’une

18
00:01:21,380 --> 00:01:26,990
‫commande de volume est de dire que ces données sont particulièrement importantes, du moins beaucoup plus importantes que le conteneur lui-même.

19
00:01:26,990 --> 00:01:29,930
‫Si nous tirons un menu fixe sur MySQL, puis

20
00:01:33,500 --> 00:01:40,360
‫que je vérifie son image, nous ne verrons pas le fichier Docker, car le fichier Docker ne fait pas partie

21
00:01:40,370 --> 00:01:46,340
‫des métadonnées de l'image, comme vous le remarquerez dans cette section. zone de configuration, qu'il a spécifié

22
00:01:46,340 --> 00:01:47,680
‫ce volume là.

23
00:01:47,810 --> 00:01:53,600
‫Je peux toujours dire que la configuration, qui provenait du fichier Docker lors de sa construction, attribuait un volume à

24
00:01:53,600 --> 00:01:54,460
‫ce chemin.

25
00:01:54,470 --> 00:01:57,150
‫Lançons un conteneur à partir de celui-ci.

26
00:02:00,990 --> 00:02:05,640
‫Donc conteneur docker exécuter -d --name mysql.

27
00:02:05,730 --> 00:02:09,120
‫Si vous vous en souvenez, celui de MySQL est un peu spécial.

28
00:02:09,230 --> 00:02:11,390
‫Il nécessite maintenant une variable d'environnement

29
00:02:11,400 --> 00:02:13,450
‫avant de pouvoir fonctionner.

30
00:02:13,530 --> 00:02:19,090
‫C'est MYSQL_ALLOW_EMPTY_PASSWORD.

31
00:02:19,180 --> 00:02:19,430
‫D'ACCORD.

32
00:02:22,810 --> 00:02:29,020
‫Ce que vous voyez est MySQL en cours d'exécution. Si nous faisons un conteneur docker inspecter

33
00:02:29,170 --> 00:02:37,200
‫mysql, nous devrions voir la même chose quand il nous dit dans la config qu'il y a un volume.

34
00:02:38,360 --> 00:02:39,370
‫Ici.

35
00:02:39,450 --> 00:02:47,400
‫Nous pouvons également le voir ici sous les montures. C’est en fait le conteneur en cours d’exécution qui reçoit

36
00:02:47,400 --> 00:02:55,770
‫son propre emplacement unique sur l’hôte, pour stocker ces données, puis en arrière-plan, mappé ou monté, sur cet emplacement du conteneur, de

37
00:02:55,770 --> 00:02:59,730
‫sorte que celui-ci pense en fait qu’il écrit dans /

38
00:02:59,730 --> 00:03:02,040
‫var / lib / mysql.

39
00:03:02,310 --> 00:03:08,570
‫Dans ce cas, nous pouvons voir que les données résident réellement à cet emplacement sur l'hôte. Faisons donc un volume de docker ls,

40
00:03:08,570 --> 00:03:10,790
‫et nous pouvons voir

41
00:03:10,860 --> 00:03:16,760
‫que nous avons maintenant un volume. Maintenant, nous remarquons que cet identifiant unique nous permet de ne jamais

42
00:03:16,760 --> 00:03:18,190
‫savoir à quoi il sert,

43
00:03:18,200 --> 00:03:18,560
‫non?

44
00:03:18,560 --> 00:03:21,090
‫Alors, faisons une inspection à ce sujet.

45
00:03:21,150 --> 00:03:22,310
‫Vous n'avez pas à taper le texte entier.

46
00:03:22,310 --> 00:03:26,270
‫Vous pouvez simplement taper les deux premiers caractères et cliquer sur Tab pour le compléter. Vous obtiendrez des informations

47
00:03:26,270 --> 00:03:28,390
‫similaires sur le volume lui-même.

48
00:03:29,440 --> 00:03:35,050
‫Si vous effectuez cette opération sur une machine Linux, vous pouvez accéder à cet emplacement sur votre disque

49
00:03:35,050 --> 00:03:36,790
‫dur et voir les données.

50
00:03:37,090 --> 00:03:38,530
‫Il y aura effectivement des bases de données là-bas.

51
00:03:38,560 --> 00:03:43,870
‫Si vous êtes sur un Mac ou Windows, rappelez-vous que Docker pour Windows et Docker pour

52
00:03:43,870 --> 00:03:49,620
‫Mac font un peu en arrière-plan, ce qui nous est caché alors qu'il crée une machine virtuelle Linux.

53
00:03:49,750 --> 00:03:55,420
‫Donc, ces données sont techniquement à l'intérieur de cette machine virtuelle Linux. Vous ne pourrez pas accéder à ce chemin sur votre ordinateur

54
00:03:55,450 --> 00:03:59,530
‫Windows ou Mac et consulter les données. C'est en fait à l'intérieur de cette VM.

55
00:03:59,530 --> 00:04:04,210
‫Nous verrons dans quelques instants, avec les volumes montés, comment nous pouvons également contourner cette limitation.

56
00:04:04,210 --> 00:04:10,810
‫En regardant cela, vous remarquerez que ce n’est pas très convivial de nous dire ce qu’il contient

57
00:04:11,140 --> 00:04:14,250
‫ou à quoi ce volume est assigné.

58
00:04:14,260 --> 00:04:20,260
‫Du point de vue du conteneur, nous pouvons voir quel volume il utilise, mais nous ne pouvons pas voir du volume

59
00:04:20,410 --> 00:04:22,150
‫à quoi il est connecté.

60
00:04:22,150 --> 00:04:22,910
‫Droite?

61
00:04:23,230 --> 00:04:28,910
‫Si je devais juste appuyer sur la flèche du haut et, voyons, créer un mysql2.

62
00:04:29,170 --> 00:04:32,190
‫Cela a maintenant créé un autre serveur MySQL fonctionnant en arrière-plan.

63
00:04:32,200 --> 00:04:36,430
‫Si je fais un autre volume de docker ls, vous en verrez deux.

64
00:04:36,430 --> 00:04:37,770
‫Vous commencez à voir le problème, non?

65
00:04:37,790 --> 00:04:41,630
‫Il n'y a pas vraiment de moyen facile de distinguer l'un de l'autre.

66
00:04:41,740 --> 00:04:53,500
‫Si nous voulons simplement prouver un point, faisons un conteneur docker arrêter mysql, et un menu fixe un conteneur

67
00:04:53,590 --> 00:04:54,930
‫arrêter mysql2.

68
00:04:55,190 --> 00:05:01,180
‫Nous faisons un conteneur docker ls, nous ne verrons aucun conteneur en cours d'exécution. Si nous faisons un ls -a, nous

69
00:05:01,180 --> 00:05:06,900
‫pouvons les voir tous. Et remarquez qu'ils sont arrêtés. Et puis nous faisons un volume de docker ls, vous

70
00:05:06,910 --> 00:05:08,580
‫remarquez que nous avons toujours les deux volumes.

71
00:05:08,590 --> 00:05:16,390
‫Si je fais un conteneur docker rm mysql, puis mysql2, parce que je peux réellement faire les deux en

72
00:05:16,390 --> 00:05:23,590
‫une seule commande, les deux conteneurs seront supprimés. Si je fais maintenant un volume de docker ls, mes

73
00:05:23,590 --> 00:05:26,560
‫volumes sont toujours là. Mes données sont toujours en sécurité.

74
00:05:26,560 --> 00:05:28,510
‫Nous avons donc résolu un problème.

75
00:05:28,510 --> 00:05:31,660
‫Les bases de données survivent à l'exécutable.

76
00:05:31,660 --> 00:05:34,180
‫Comment pouvons-nous rendre cela un peu plus convivial?

77
00:05:35,090 --> 00:05:40,010
‫C'est là qu'interviennent les volumes nommés et la possibilité, pour nous, de spécifier des éléments dans la commande d'exécution

78
00:05:40,010 --> 00:05:40,850
‫du menu fixe.

79
00:05:41,120 --> 00:05:47,810
‫Si j'appuie sur la flèche du haut plusieurs fois jusqu'à ce que j'arrive à l'exécution du conteneur docker, peu importe celui que

80
00:05:47,810 --> 00:05:49,600
‫vous allez exécuter à nouveau.

81
00:05:50,820 --> 00:05:59,340
‫Dans ce cas, nous allons réellement lancer une commande -v. Un -v nous permet de spécifier un nouveau volume

82
00:05:59,370 --> 00:06:06,660
‫que nous voulons créer pour ce conteneur sur le point d'être exécuté ou deux autres

83
00:06:06,660 --> 00:06:07,500
‫options.

84
00:06:07,500 --> 00:06:10,320
‫L'un d'eux est de créer un volume nommé.

85
00:06:10,320 --> 00:06:17,660
‫Si je ne faisais que -v, puis var var mysql, cela ferait la même chose, c'est ce que faisait notre commande

86
00:06:17,670 --> 00:06:20,040
‫de volume dans le fichier Docker.

87
00:06:20,040 --> 00:06:24,970
‫Nous n'avons pas vraiment besoin de faire cela ici. Mais ce que nous pouvons faire, c'est que je puisse mettre un nom

88
00:06:26,810 --> 00:06:29,930
‫devant lui avec deux points. C'est ce qu'on appelle un "volume nommé". "Lorsque je

89
00:06:30,080 --> 00:06:38,000
‫fais cela, puis un volume de menu fixe ls, vous verrez que mon nouveau conteneur utilise un nouveau volume et qu’il utilise

90
00:06:38,180 --> 00:06:39,300
‫un nom convivial.

91
00:06:39,320 --> 00:06:45,980
‫Si nous effectuons une inspection du volume de menu fixe sur ce mysql, vous verrez que cela est plus facile à utiliser ici.

92
00:06:46,010 --> 00:06:49,550
‫Si je supprime à nouveau mon conteneur et que nous devons insérer un

93
00:06:52,470 --> 00:06:59,040
‫-f car il est toujours en cours d'exécution, j'en exécute un autre. Et cette fois, je lui donnerai

94
00:06:59,040 --> 00:07:04,280
‫un nom différent. Et puis nous faisons un autre volume docker ls, vous verrez

95
00:07:04,280 --> 00:07:09,420
‫qu’il semble que nous n’ayons pas créé de nouveau volume. Il utilise toujours le même volume.

96
00:07:09,420 --> 00:07:17,680
‫Faisons un conteneur docker inspecter sur le mysql3. Ensuite, ce que nous verrons ici, c’est oui, c’est

97
00:07:18,990 --> 00:07:22,860
‫ce qui a été configuré, mais que courons-nous?

98
00:07:22,880 --> 00:07:24,300
‫Ceci est notre monte ici.

99
00:07:24,560 --> 00:07:29,510
‫Nous verrons ici que non seulement le nom est plus convivial, mais que l'emplacement source a été modifié pour devenir

100
00:07:29,510 --> 00:07:30,980
‫également un peu plus convivial.

101
00:07:31,280 --> 00:07:38,480
‫Pour moi, un petit conseil ici est que lorsque je cours plusieurs jours ou plusieurs semaines à la fois, une base de données particulière, dans

102
00:07:38,540 --> 00:07:43,460
‫un conteneur particulier que je dois continuer à utiliser régulièrement, et je ne veux pas de

103
00:07:43,460 --> 00:07:50,930
‫serveur de base de données vierge, Je vais créer mes conteneurs de cette façon et les nommer pour le projet afin que je sache à quoi

104
00:07:50,930 --> 00:07:52,250
‫sert ce volume et

105
00:07:52,370 --> 00:07:53,900
‫qu’il doit rester en place.

106
00:07:57,840 --> 00:07:59,200
‫Une dernière chose ici.

107
00:08:00,130 --> 00:08:06,390
‫Pourquoi voudriez-vous créer un volume de docker?

108
00:08:06,550 --> 00:08:13,750
‫Si nous pouvons les créer à partir d'une commande d'exécution du conteneur docker au moment de l'exécution, et que nous pouvons les créer en les spécifiant dans le fichier Docker,

109
00:08:13,750 --> 00:08:18,670
‫il est rare que vous souhaitiez le créer à l'avance. Et vous pouvez réellement comprendre cela

110
00:08:18,670 --> 00:08:21,320
‫assez rapidement en utilisant la commande help.

111
00:08:22,210 --> 00:08:26,580
‫Car c’est la seule façon de spécifier un pilote différent.

112
00:08:26,590 --> 00:08:28,890
‫Tu te souviens de ce plug-in dont je parlerai plus tard?

113
00:08:29,020 --> 00:08:33,370
‫Ensuite, toutes les options de pilote sur lesquelles nous souhaitons utiliser le -o.

114
00:08:33,370 --> 00:08:37,090
‫Ensuite, si nous voulons mettre des étiquettes dessus, nous en reparlerons plus tard dans la section production.

115
00:08:37,090 --> 00:08:42,530
‫Parfois, dans des cas particuliers, vous devez créer le volume Docker à l'avance, mais généralement à des fins de développement local, il

116
00:08:42,540 --> 00:08:46,610
‫suffit de le spécifier dans un fichier Dockerfile ou à l'aide de la commande d'exécution.

