﻿1
00:00:04,670 --> 00:00:09,710
‫Tutto ok. I volumi sembrano piuttosto semplici, ma in realtà c'è molto da fare.

2
00:00:09,710 --> 00:00:16,480
‫Il primo modo in cui puoi dire a un contenitore che deve preoccuparsi di un volume è in un Dockerfile.

3
00:00:16,480 --> 00:00:18,540
‫Andiamo a controllare alcuni di quelli fuori.

4
00:00:18,590 --> 00:00:21,040
‫Farò solo quello che faccio molto.

5
00:00:21,170 --> 00:00:24,110
‫Sto andando a cercare MySQL.

6
00:00:24,320 --> 00:00:30,320
‫Questo è il modo in cui ho imparato tanto sui Dockerfiles e su come usarli correttamente,

7
00:00:30,380 --> 00:00:34,040
‫i repository ufficiali hanno impostazioni predefinite e procedure ottimali incorporate.

8
00:00:34,040 --> 00:00:40,250
‫Quando vado qui su MySQL, farò semplicemente clic sull'ultimo Dockerfile qui. un comando di volume.

9
00:00:40,250 --> 00:00:45,040
‫Scommetto perché è un database, probabilmente ha

10
00:00:45,200 --> 00:00:45,950
‫Eccoci.

11
00:00:45,950 --> 00:00:52,640
‫Questa è la posizione predefinita dei database MySQL. Questa immagine è programmata in modo da dire a

12
00:00:52,640 --> 00:00:58,670
‫Docker che quando iniziamo un nuovo contenitore da esso, per creare effettivamente un nuovo percorso di

13
00:00:58,670 --> 00:01:05,450
‫volume e assegnarlo a questa directory nel contenitore. Il che significa che tutti i file che inseriamo nel

14
00:01:05,450 --> 00:01:08,600
‫contenitore, sopravviveranno al contenitore finché non elimineremo manualmente il volume.

15
00:01:08,660 --> 00:01:13,250
‫E questo è qualcosa che dovremmo sottolineare qui è che i volumi hanno bisogno di eliminazione manuale.

16
00:01:13,280 --> 00:01:15,900
‫Non puoi pulirli semplicemente rimuovendo un contenitore.

17
00:01:15,930 --> 00:01:21,350
‫Sono un passo in più. Questo è solo per l'assicurazione, perché l'intero punto di

18
00:01:21,380 --> 00:01:26,990
‫un comando del volume è dire che questi dati sono particolarmente importanti, almeno molto più importanti del contenitore stesso.

19
00:01:26,990 --> 00:01:29,930
‫Se facciamo un docker su MySQL, e

20
00:01:33,500 --> 00:01:40,360
‫poi faccio un controllo immagine docker su MySQL, non vediamo il Dockerfile perché il file Docker non

21
00:01:40,370 --> 00:01:46,340
‫fa parte dei metadati dell'immagine, che noterete in questo area di configurazione, che ha specificato

22
00:01:46,340 --> 00:01:47,680
‫quel volume lì.

23
00:01:47,810 --> 00:01:53,600
‫Posso sempre dire che la configurazione, proveniente dal Dockerfile quando è stata creata, ha assegnato un volume

24
00:01:53,600 --> 00:01:54,460
‫a quel percorso.

25
00:01:54,470 --> 00:01:57,150
‫Facciamo un contenitore da esso.

26
00:02:00,990 --> 00:02:05,640
‫Quindi contenitore docker esegue -d --name mysql.

27
00:02:05,730 --> 00:02:09,120
‫Se ricordi di prima, quello di MySQL è poco speciale.

28
00:02:09,230 --> 00:02:11,390
‫Ora richiede una variabile di

29
00:02:11,400 --> 00:02:13,450
‫ambiente prima che funzioni.

30
00:02:13,530 --> 00:02:19,090
‫È MYSQL_ALLOW_EMPTY_PASSWORD.

31
00:02:19,180 --> 00:02:19,430
‫OK.

32
00:02:22,810 --> 00:02:29,020
‫Quello che vedi è MySQL in esecuzione. nella configurazione che c'è un volume.

33
00:02:29,170 --> 00:02:37,200
‫Se facciamo un container docker ispezionare mysql, dovremmo vedere la stessa cosa dove ci dice

34
00:02:38,360 --> 00:02:39,370
‫Qui.

35
00:02:39,450 --> 00:02:47,400
‫Possiamo anche vederlo qui sotto i monti. Questo è, è in realtà il contenitore in esecuzione che ottiene la

36
00:02:47,400 --> 00:02:55,770
‫propria posizione univoca sull'host, per archiviare tali dati e quindi è in background, mappato o montato, in quella posizione nel contenitore, in modo che

37
00:02:55,770 --> 00:02:59,730
‫la posizione nel contenitore in realtà pensa solo che stia scrivendo

38
00:02:59,730 --> 00:03:02,040
‫in / var / lib / mysql.

39
00:03:02,310 --> 00:03:08,570
‫In questo caso, possiamo vedere che i dati effettivamente vivono in quella posizione sull'host. ls e possiamo vedere che

40
00:03:08,570 --> 00:03:10,790
‫abbiamo ora un volume.

41
00:03:10,860 --> 00:03:16,760
‫Quindi eseguiamo un volume docker Ora notiamo che questo ha un ID univoco che non sapremo

42
00:03:16,760 --> 00:03:18,190
‫mai a cosa diamine va,

43
00:03:18,200 --> 00:03:18,560
‫giusto?

44
00:03:18,560 --> 00:03:21,090
‫Quindi, facciamo un controllo su questo.

45
00:03:21,150 --> 00:03:22,310
‫Non devi digitare tutto.

46
00:03:22,310 --> 00:03:26,270
‫Puoi semplicemente digitare il primo paio di caratteri e premere Tab per completarlo. Riceverai informazioni simili

47
00:03:26,270 --> 00:03:28,390
‫sul volume stesso.

48
00:03:29,440 --> 00:03:35,050
‫una macchina Linux, puoi navigare in quella posizione sul tuo disco fisso e vedere i dati.

49
00:03:35,050 --> 00:03:36,790
‫Se lo stai facendo su

50
00:03:37,090 --> 00:03:38,530
‫Ci saranno in realtà alcuni database lì.

51
00:03:38,560 --> 00:03:43,870
‫Se sei su un Mac o Windows, ricorda che Docker per Windows e Docker per Mac in

52
00:03:43,870 --> 00:03:49,620
‫realtà stanno facendo un po 'sullo sfondo che è nascosto da noi dove sta effettivamente creando una VM Linux.

53
00:03:49,750 --> 00:03:55,420
‫Quindi questi dati sono tecnicamente all'interno di quella VM Linux. Non sarai in grado di andare su quel percorso sul tuo

54
00:03:55,450 --> 00:03:59,530
‫computer Windows o Mac e vedere i dati. In realtà è dentro quella VM.

55
00:03:59,530 --> 00:04:04,210
‫Vedremo tra un po ', con i volumi montati, come possiamo aggirare anche questa limitazione.

56
00:04:04,210 --> 00:04:10,810
‫molto user-friendly in termini di dirci cosa c'è dentro o a cosa è assegnato questo volume.

57
00:04:11,140 --> 00:04:14,250
‫Guardando questo, si nota che non è

58
00:04:14,260 --> 00:04:20,260
‫Possiamo vedere dalla prospettiva del contenitore quale volume sta usando, ma non possiamo vedere dalla prospettiva del volume

59
00:04:20,410 --> 00:04:22,150
‫a che cosa è connesso.

60
00:04:22,150 --> 00:04:22,910
‫Destra?

61
00:04:23,230 --> 00:04:28,910
‫Se dovessi solo colpire la freccia su e, vediamo, creare un mysql2.

62
00:04:29,170 --> 00:04:32,190
‫Ora viene creato un altro server MySQL in esecuzione in background.

63
00:04:32,200 --> 00:04:36,430
‫Se eseguo un altro volume della finestra mobile ls, ne vedrai due.

64
00:04:36,430 --> 00:04:37,770
‫Inizi a vedere il problema, giusto?

65
00:04:37,790 --> 00:04:41,630
‫Non c'è un vero e proprio modo qui per distinguere l'uno dall'altro.

66
00:04:41,740 --> 00:04:53,500
‫Se solo, per dimostrare un punto, un container mobile smette di mysql, e una finestra mobile un container

67
00:04:53,590 --> 00:04:54,930
‫interrompe mysql2.

68
00:04:55,190 --> 00:05:01,180
‫Facciamo una finestra mobile container ls, non vedremo alcun contenitore in esecuzione. Se facciamo un ls -a,

69
00:05:01,180 --> 00:05:06,900
‫possiamo vederli tutti. E noti che sono fermati. E poi facciamo un volume docker ls, si

70
00:05:06,910 --> 00:05:08,580
‫nota che abbiamo ancora i due volumi.

71
00:05:08,590 --> 00:05:16,390
‫Se eseguo un contenitore docker rm mysql e quindi mysql2, poiché in effetti posso eseguire entrambe le operazioni

72
00:05:16,390 --> 00:05:23,590
‫in un unico comando, rimuoverà entrambi i miei contenitori. volume docker ls, i miei volumi sono ancora lì.

73
00:05:23,590 --> 00:05:26,560
‫Se ora eseguo un I miei dati sono ancora al sicuro.

74
00:05:26,560 --> 00:05:28,510
‫Quindi, abbiamo risolto un problema.

75
00:05:28,510 --> 00:05:31,660
‫I database sopravvivono all'eseguibile.

76
00:05:31,660 --> 00:05:34,180
‫Come rendere questo un po 'più user friendly?

77
00:05:35,090 --> 00:05:40,010
‫Ecco dove arrivano i volumi denominati e la possibilità per noi di specificare le cose sul comando di esecuzione

78
00:05:40,010 --> 00:05:40,850
‫della finestra mobile.

79
00:05:41,120 --> 00:05:47,810
‫Se colpisco la freccia verso l'alto un paio di volte fino a quando esco sul contenitore della finestra mobile, non importa quale

80
00:05:47,810 --> 00:05:49,600
‫sarà la tua esecuzione di nuovo.

81
00:05:50,820 --> 00:05:59,340
‫In questo caso, inseriremo effettivamente un comando -v. A -v ci consente di specificare un nuovo volume

82
00:05:59,370 --> 00:06:06,660
‫che vogliamo creare per questo contenitore che sta per essere eseguito, o ci consente altre

83
00:06:06,660 --> 00:06:07,500
‫due opzioni.

84
00:06:07,500 --> 00:06:10,320
‫Uno di questi è quello di creare un volume con nome.

85
00:06:10,320 --> 00:06:17,660
‫Se ho appena fatto -v, e poi var lib mysql, farei la stessa cosa è ciò che ha fatto

86
00:06:17,670 --> 00:06:20,040
‫il nostro comando volume nel Dockerfile.

87
00:06:20,040 --> 00:06:24,970
‫Non abbiamo davvero bisogno di farlo qui. Ma quello che possiamo fare è che posso mettere un nome

88
00:06:26,810 --> 00:06:29,930
‫di fronte a due punti. Questo è noto come "volume chiamato". un nome descrittivo.

89
00:06:30,080 --> 00:06:38,000
‫"Quando lo faccio, e poi faccio un volume di docker ls, vedrai che il mio nuovo contenitore sta usando un nuovo volume

90
00:06:38,180 --> 00:06:39,300
‫e sta usando

91
00:06:39,320 --> 00:06:45,980
‫Se eseguiamo un controllo del volume di docker su tale mysql, vedrai che questo è più facile da usare qui.

92
00:06:46,010 --> 00:06:49,550
‫Se ho cancellato di nuovo il mio contenitore, e dobbiamo inserire un

93
00:06:52,470 --> 00:06:59,040
‫-f perché è ancora in esecuzione, e poi ne eseguo un altro. E questa volta, gli

94
00:06:59,040 --> 00:07:04,280
‫darò un nome diverso. E poi facciamo un altro volume di docker ls, vedrai

95
00:07:04,280 --> 00:07:09,420
‫che sembra che non abbiamo creato un nuovo volume. Sta ancora usando lo stesso volume.

96
00:07:09,420 --> 00:07:17,680
‫Facciamo ispezionare un container docker su mysql3. ciò che è stato configurato ma cosa stiamo correndo?

97
00:07:18,990 --> 00:07:22,860
‫Quindi quello che vedremo qui è, sì, questo è

98
00:07:22,880 --> 00:07:24,300
‫Questa è la nostra cavalcatura qui.

99
00:07:24,560 --> 00:07:29,510
‫Vedremo qui che non solo il nome è più amichevole, ma in realtà ha cambiato la posizione della sorgente

100
00:07:29,510 --> 00:07:30,980
‫per essere un po 'più amichevole.

101
00:07:31,280 --> 00:07:38,480
‫è che quando sono in esecuzione per giorni o settimane alla volta, un particolare database, in un particolare contenitore che devo continuare a

102
00:07:38,540 --> 00:07:43,460
‫utilizzare più e più volte e non voglio un server di database vuoto, I Finirò creando

103
00:07:43,460 --> 00:07:50,930
‫i miei contenitori in questo modo e nominandoli per il progetto in modo che io sappia per cosa è destinato quel volume, e che

104
00:07:50,930 --> 00:07:52,250
‫deve restare fermo.

105
00:07:52,370 --> 00:07:53,900
‫Per me, un piccolo consiglio

106
00:07:57,840 --> 00:07:59,200
‫Un'ultima cosa qui.

107
00:08:00,130 --> 00:08:06,390
‫Perché dovresti creare un volume docker?

108
00:08:06,550 --> 00:08:13,750
‫Se siamo in grado di crearli da un contenitore docker eseguire il comando in fase di runtime, e possiamo crearli specificandoli nel Dockerfile, ci sono solo

109
00:08:13,750 --> 00:08:18,670
‫alcuni casi in cui vorresti crearlo prima del tempo. E in realtà puoi capirlo

110
00:08:18,670 --> 00:08:21,320
‫abbastanza velocemente usando il comando help.

111
00:08:22,210 --> 00:08:26,580
‫Perché qui è l'unico modo in cui possiamo effettivamente specificare un driver diverso.

112
00:08:26,590 --> 00:08:28,890
‫Ricorda quella roba plug-in di cui parlerò in seguito?

113
00:08:29,020 --> 00:08:33,370
‫Quindi tutte le opzioni del driver che vogliamo usare -o on.

114
00:08:33,370 --> 00:08:37,090
‫Quindi se vogliamo inserire delle etichette, di cui parleremo più avanti nella sezione di produzione.

115
00:08:37,090 --> 00:08:42,530
‫A volte, in casi particolari, è necessario creare il volume Docker in anticipo, ma in genere per

116
00:08:42,540 --> 00:08:46,610
‫scopi di sviluppo locale, è sufficiente specificare solo un comando Dockerfile o Run.

