﻿1
00:00:04,670 --> 00:00:09,710
‫Tudo bem. Os volumes parecem bastante simples na frente, mas realmente há muito para isso.

2
00:00:09,710 --> 00:00:16,480
‫A primeira maneira que você pode dizer a um recipiente que precisa se preocupar com um volume está em um Dockerfile.

3
00:00:16,480 --> 00:00:18,540
‫Vamos verificar alguns desses.

4
00:00:18,590 --> 00:00:21,040
‫Eu apenas vou fazer o que eu faço muito.

5
00:00:21,170 --> 00:00:24,110
‫Vou procurar o MySQL.

6
00:00:24,320 --> 00:00:30,320
‫É assim que eu aprendi muito sobre o Dockerfiles, e como usá-los corretamente, é que os

7
00:00:30,380 --> 00:00:34,040
‫repositórios oficiais realmente som padrões e melhores práticas incorporados neles.

8
00:00:34,040 --> 00:00:40,250
‫Quando vou aqui para o MySQL, vou clicar no último Dockerfile aqui. obteve um comando de volume nele.

9
00:00:40,250 --> 00:00:45,040
‫Eu aponto você porque é um banco de dados, provavelmente

10
00:00:45,200 --> 00:00:45,950
‫Aqui vamos nós.

11
00:00:45,950 --> 00:00:52,640
‫Esta é a localização padrão dos bancos de dados MySQL. Esta imagem está programada de forma a dizer

12
00:00:52,640 --> 00:00:58,670
‫ao Docker que, quando iniciarmos um novo contêiner, crie um novo local de volume

13
00:00:58,670 --> 00:01:05,450
‫e atribua-o a este diretório no recipiente. O que significa que qualquer arquivo que colocamos lá, no recipiente,

14
00:01:05,450 --> 00:01:08,600
‫irá sobreviver ao contêiner até que possamos excluir manualmente o volume.

15
00:01:08,660 --> 00:01:13,250
‫E é algo que devemos salientar aqui é que os volumes precisam de exclusão manual.

16
00:01:13,280 --> 00:01:15,900
‫Você não pode limpá-los apenas removendo um recipiente.

17
00:01:15,930 --> 00:01:21,350
‫Eles são um passo extra. Isso é apenas para o seguro, porque o ponto inteiro

18
00:01:21,380 --> 00:01:26,990
‫de um comando de volume é dizer que esses dados são particularmente importantes, pelo menos, muito mais importante que o próprio contêiner.

19
00:01:26,990 --> 00:01:29,930
‫Se fizermos um docker puxar no MySQL e,

20
00:01:33,500 --> 00:01:40,360
‫em seguida, eu faço uma imagem docker inspecionar no MySQL, não conseguimos ver o Dockerfile porque o arquivo Docker

21
00:01:40,370 --> 00:01:46,340
‫não é realmente parte dos metadados da imagem, o que você notará neste config area, que

22
00:01:46,340 --> 00:01:47,680
‫especificou esse volume lá.

23
00:01:47,810 --> 00:01:53,600
‫Eu sempre posso dizer que a configuração, que veio do Dockerfile quando foi construída, atribuiu um volume

24
00:01:53,600 --> 00:01:54,460
‫a esse caminho.

25
00:01:54,470 --> 00:01:57,150
‫Vamos executar um container a partir dele.

26
00:02:00,990 --> 00:02:05,640
‫Então o contêiner docker é executado -d -name mysql.

27
00:02:05,730 --> 00:02:09,120
‫Se você se lembrar de mais cedo, o MySQL é um pouco especial.

28
00:02:09,230 --> 00:02:11,390
‫Agora ele requer uma variável

29
00:02:11,400 --> 00:02:13,450
‫de ambiente antes de funcionar.

30
00:02:13,530 --> 00:02:19,090
‫É MYSQL_ALLOW_EMPTY_PASSWORD.

31
00:02:19,180 --> 00:02:19,430
‫ESTÁ BEM.

32
00:02:22,810 --> 00:02:29,020
‫O que você vê é que o MySQL está funcionando. na configuração que existe um volume.

33
00:02:29,170 --> 00:02:37,200
‫Se fizermos um contêiner docker inspecionar mysql, devemos ver o mesmo em que nos diz

34
00:02:38,360 --> 00:02:39,370
‫Aqui.

35
00:02:39,450 --> 00:02:47,400
‫Nós também podemos vê-lo aqui em montagens. O que é isso, é que este é o contêiner em execução

36
00:02:47,400 --> 00:02:55,770
‫que obtém sua própria localização única no host, para armazenar esses dados e, em segundo plano, é mapeado ou montado, nesse local no recipiente, para

37
00:02:55,770 --> 00:02:59,730
‫que a localização no recipiente na verdade, apenas pensa que está escrevendo

38
00:02:59,730 --> 00:03:02,040
‫para / var / lib / mysql.

39
00:03:02,310 --> 00:03:08,570
‫Neste caso, podemos ver que os dados realmente estão vivendo nesse local no host. docker ls, e podemos ver que

40
00:03:08,570 --> 00:03:10,790
‫temos agora um volume.

41
00:03:10,860 --> 00:03:16,760
‫Então, vamos fazer um volume Agora percebemos que isso tem essa identidade única que nunca saberemos

42
00:03:16,760 --> 00:03:18,190
‫o que diabos é isso,

43
00:03:18,200 --> 00:03:18,560
‫certo?

44
00:03:18,560 --> 00:03:21,090
‫Então, vamos fazer uma inspeção sobre isso.

45
00:03:21,150 --> 00:03:22,310
‫Você não precisa digitar tudo.

46
00:03:22,310 --> 00:03:26,270
‫Você pode apenas digitar o primeiro par de caracteres e clicar em Tab para completá-lo. Você obterá informações semelhantes

47
00:03:26,270 --> 00:03:28,390
‫sobre o próprio volume.

48
00:03:29,440 --> 00:03:35,050
‫em uma máquina Linux, você pode navegar até essa localização em seu disco rígido e ver os dados.

49
00:03:35,050 --> 00:03:36,790
‫Se você realmente estiver fazendo isso

50
00:03:37,090 --> 00:03:38,530
‫Na verdade, haverá alguns bancos de dados lá.

51
00:03:38,560 --> 00:03:43,870
‫Se você estiver em um Mac ou Windows, lembre-se de que o Docker para Windows e Docker para

52
00:03:43,870 --> 00:03:49,620
‫Mac está realmente fazendo um pouco no fundo que está escondido de nós, onde realmente está criando uma VM Linux.

53
00:03:49,750 --> 00:03:55,420
‫Então, esses dados estão tecnicamente dentro da VM Linux. Você não poderá acessar esse caminho na sua máquina

54
00:03:55,450 --> 00:03:59,530
‫Windows ou Mac e ver os dados. Na verdade, está dentro dessa VM.

55
00:03:59,530 --> 00:04:04,210
‫Veremos um pouco, com volumes montados, como podemos superar essa limitação também.

56
00:04:04,210 --> 00:04:10,810
‫muito amigável em termos de nos dizer o que está nele ou o que este volume está atribuído.

57
00:04:11,140 --> 00:04:14,250
‫Ao olhar para isso, você percebe que não é

58
00:04:14,260 --> 00:04:20,260
‫Podemos ver do ponto de vista do recipiente o volume que está usando, mas não podemos ver do ponto de vista

59
00:04:20,410 --> 00:04:22,150
‫do volume ao que está conectado.

60
00:04:22,150 --> 00:04:22,910
‫Certo?

61
00:04:23,230 --> 00:04:28,910
‫Se eu estivesse apenas para acertar a Seta para cima e, vejamos, crie um mysql2.

62
00:04:29,170 --> 00:04:32,190
‫Isso agora é criado outro servidor MySQL executado em segundo plano.

63
00:04:32,200 --> 00:04:36,430
‫Se eu fizer outro volume docker, você verá dois deles.

64
00:04:36,430 --> 00:04:37,770
‫Você começa a ver o problema, certo?

65
00:04:37,790 --> 00:04:41,630
‫Não há uma maneira muito fácil de dizer um do outro.

66
00:04:41,740 --> 00:04:53,500
‫Se nós apenas, para provar um ponto, faça um contêiner docker parar mysql, e um docker um recipiente

67
00:04:53,590 --> 00:04:54,930
‫parar mysql2.

68
00:04:55,190 --> 00:05:01,180
‫Nós fazemos um container docker, não veremos nenhum container em execução. Se fizermos um ls -a,

69
00:05:01,180 --> 00:05:06,900
‫nós conseguimos vê-los todos. E note que eles estão parados. E então, fazemos um volume de encaixe ls, você

70
00:05:06,910 --> 00:05:08,580
‫observa que ainda temos os dois volumes.

71
00:05:08,590 --> 00:05:16,390
‫Se eu fizer um container docker rm mysql e, em seguida, mysql2, porque eu posso realmente fazer ambos

72
00:05:16,390 --> 00:05:23,590
‫em um comando, ele irá remover meus dois contêineres. um volume docker ls, meus volumes ainda estão lá.

73
00:05:23,590 --> 00:05:26,560
‫Se eu agora fizer Meus dados ainda estão seguros.

74
00:05:26,560 --> 00:05:28,510
‫Então, solucionamos um problema.

75
00:05:28,510 --> 00:05:31,660
‫As bases de dados ultrapassam o executável.

76
00:05:31,660 --> 00:05:34,180
‫Como tornamos isso um pouco mais amigável?

77
00:05:35,090 --> 00:05:40,010
‫É aí que os volumes nomeados entram e a capacidade de especificar coisas no comando

78
00:05:40,010 --> 00:05:40,850
‫de encadernação.

79
00:05:41,120 --> 00:05:47,810
‫Se eu acertar a Seta para cima um par de vezes até chegar à caixa de contêiner do docker, na verdade não

80
00:05:47,810 --> 00:05:49,600
‫importa qual você vai correr novamente.

81
00:05:50,820 --> 00:05:59,340
‫Neste caso, nós realmente lançaremos um comando -v. A -v nos permite especificar um novo volume que

82
00:05:59,370 --> 00:06:06,660
‫queremos criar para este recipiente que está prestes a ser executado, ou nos permite duas

83
00:06:06,660 --> 00:06:07,500
‫outras opções.

84
00:06:07,500 --> 00:06:10,320
‫Um deles aqui é criar um volume nomeado.

85
00:06:10,320 --> 00:06:17,660
‫Se eu apenas fizesse -v e, em seguida, o var lib mysql, o que faria o mesmo é o que

86
00:06:17,670 --> 00:06:20,040
‫nosso comando de volume no Dockerfile fez.

87
00:06:20,040 --> 00:06:24,970
‫Nós realmente não precisamos fazer isso aqui. Mas o que podemos fazer é que eu posso colocar um nome à

88
00:06:26,810 --> 00:06:29,930
‫sua frente com dois pontos. Isso é conhecido como um "volume nomeado. um nome amigável.

89
00:06:30,080 --> 00:06:38,000
‫"Quando eu faço isso, e depois faço um volume docker ls, você verá que o meu novo recipiente está usando um novo volume

90
00:06:38,180 --> 00:06:39,300
‫e está usando

91
00:06:39,320 --> 00:06:45,980
‫Se fizermos um volume do docker inspecionar esse mysql, você verá que isso é mais fácil de usar aqui.

92
00:06:46,010 --> 00:06:49,550
‫Se eu excluir meu contêiner novamente, e devemos colocar um -f

93
00:06:52,470 --> 00:06:59,040
‫porque ainda está em execução, e então eu executar outro. E desta vez, eu

94
00:06:59,040 --> 00:07:04,280
‫darei um nome diferente. E então, fazemos outro volume do docker, você verá

95
00:07:04,280 --> 00:07:09,420
‫que parece que não criamos um novo volume. Ainda está usando o mesmo volume.

96
00:07:09,420 --> 00:07:17,680
‫Vamos fazer um recipiente docker inspecionar o mysql3. o que foi configurado, mas o que estamos executando?

97
00:07:18,990 --> 00:07:22,860
‫Então, o que veremos aqui é, sim, isso é

98
00:07:22,880 --> 00:07:24,300
‫Esta é a nossa montagem aqui.

99
00:07:24,560 --> 00:07:29,510
‫Veremos aqui que não só o nome é mais amigável, mas também mudou a localização da fonte para

100
00:07:29,510 --> 00:07:30,980
‫ser um pouco mais amigável.

101
00:07:31,280 --> 00:07:38,480
‫aqui é que, quando estou executando por dias ou semanas de cada vez, um banco de dados específico, em um recipiente específico que eu

102
00:07:38,540 --> 00:07:43,460
‫preciso continuar usando uma e outra vez e não quero um servidor de banco de dados em

103
00:07:43,460 --> 00:07:50,930
‫branco, eu Terminarei criando meus contêineres dessa maneira e nomeando-os para o projeto para que eu saiba por que esse volume é necessário e que

104
00:07:50,930 --> 00:07:52,250
‫ele precisa ficar por perto.

105
00:07:52,370 --> 00:07:53,900
‫Para mim, uma pequena dica

106
00:07:57,840 --> 00:07:59,200
‫Um último coisa aqui.

107
00:08:00,130 --> 00:08:06,390
‫Por que você deseja criar o volume do docker?

108
00:08:06,550 --> 00:08:13,750
‫Se pudermos criá-los a partir de um comando de encaminhamento de contêiner docker em tempo de execução, e podemos criá-los, especificando-os no Dockerfile, há apenas alguns

109
00:08:13,750 --> 00:08:18,670
‫casos em que você deseja criá-lo antes do tempo. E você pode realmente descobrir isso

110
00:08:18,670 --> 00:08:21,320
‫muito rapidamente usando o comando de ajuda.

111
00:08:22,210 --> 00:08:26,580
‫Porque aqui está a única maneira de realmente especificar um driver diferente.

112
00:08:26,590 --> 00:08:28,890
‫Lembre-se do plug-in sobre o qual vou falar mais tarde?

113
00:08:29,020 --> 00:08:33,370
‫Então, as opções de driver que queremos usar o -o em.

114
00:08:33,370 --> 00:08:37,090
‫Então, se quisermos colocar rótulos sobre isso, sobre o qual também falaremos mais tarde na seção de produção.

115
00:08:37,090 --> 00:08:42,530
‫Às vezes, em casos especiais, você precisa criar o volume do Docker com antecedência, mas geralmente para fins

116
00:08:42,540 --> 00:08:46,610
‫de desenvolvimento local, apenas especificá-lo em um Dockerfile ou no comando executar está bem.

