﻿1
00:00:02,530 --> 00:00:10,610
‫Nesta palestra, vamos falar sobre a ligação de montagem e dados persistentes nessas montagens. Os requisitos são realmente que você apenas

2
00:00:10,610 --> 00:00:15,300
‫conhece o gerenciamento de contêineres e como executar contêineres.

3
00:00:15,320 --> 00:00:20,230
‫Vamos entrar. Vamos falar sobre montagens de ligação. Eles são realmente muito legais.

4
00:00:20,240 --> 00:00:25,550
‫Quando eu aprendi sobre eles, meio que me deu uma boa maneira de usar o Docker facilmente para o

5
00:00:25,550 --> 00:00:26,180
‫desenvolvimento local.

6
00:00:26,180 --> 00:00:33,380
‫Realmente, uma montagem de ligação é apenas um mapeamento dos arquivos do host, ou diretórios, em um arquivo de contêiner

7
00:00:33,380 --> 00:00:35,330
‫ou diretório. Você pode fazer exatamente isso.

8
00:00:35,330 --> 00:00:39,040
‫Você pode especificar um diretório ou apenas um único arquivo. mesmas

9
00:00:39,050 --> 00:00:43,780
‫localizações físicas no disco.

10
00:00:43,910 --> 00:00:49,730
‫No fundo, é basicamente apenas ter os dois locais apontam para as Mais uma vez, isso realmente ignora o UFS como os outros volumes, de modo a que

11
00:00:49,730 --> 00:00:52,620
‫não vá destruir o local do seu host quando você excluir o contêiner.

12
00:00:52,640 --> 00:00:58,550
‫Se houver algum arquivo no recipiente ao qual você mapeia os arquivos do host, os arquivos do host ganham. Na verdade, ele não exclui os

13
00:00:58,550 --> 00:01:03,650
‫arquivos no contêiner que ele sobrecarregou porque não está realmente substituindo nada

14
00:01:03,680 --> 00:01:04,770
‫no contêiner.

15
00:01:04,910 --> 00:01:07,100
‫Está lá enquanto a montagem de ligação existe.

16
00:01:07,100 --> 00:01:11,570
‫você re-executar o recipiente sem ele, você realmente veria os

17
00:01:11,570 --> 00:01:17,650
‫dados subjacentes que estavam lá antes. No instante em que você não precisa mais do bind e Como as montagens

18
00:01:17,660 --> 00:01:21,870
‫de ligação geralmente são específicas do host, elas precisam de dados específicos para estar no disco rígido do host para funcionar.

19
00:01:21,890 --> 00:01:23,500
‫Não é possível especificá-los em um Dockerfile.

20
00:01:23,510 --> 00:01:28,490
‫Você precisa usá-los em tempo de execução quando você usa o comando de encaminhamento do contêiner docker. Você pode ver o formato

21
00:01:28,490 --> 00:01:29,080
‫aqui.

22
00:01:29,090 --> 00:01:33,980
‫É realmente o -v que usamos antes, apenas no lado esquerdo do cólon, estamos

23
00:01:34,100 --> 00:01:38,360
‫realmente colocando um caminho completo em vez de apenas um nome.

24
00:01:38,360 --> 00:01:42,260
‫tempo, e a montagem do bind, é que o

25
00:01:42,410 --> 00:01:46,490
‫bind mount começa com uma barra inclinada para a frente.

26
00:01:46,490 --> 00:01:51,470
‫E a forma como o Docker realmente pode dizer a diferença entre o volume nomeado, como fizemos há algum No Windows, você notará que são duas barras laterais e, em seguida, a letra da unidade e,

27
00:01:51,470 --> 00:01:52,120
‫em seguida, o caminho.

28
00:01:52,130 --> 00:01:57,620
‫Enquanto você tiver o cólon esquerdo e os lados direitos, você pode realmente mapear qualquer coisa que você deseja

29
00:01:57,620 --> 00:02:01,860
‫do host no recipiente, e você também pode especificar coisas como somente leitura.

30
00:02:01,880 --> 00:02:07,910
‫Onde isso realmente vem a brilhar é com o desenvolvimento e a execução de serviços dentro do seu

31
00:02:07,910 --> 00:02:12,940
‫contêiner que estão acessando arquivos que você está usando no seu host ou mudando.

32
00:02:12,950 --> 00:02:14,720
‫Vamos fazer isso com o Nginx.

33
00:02:14,930 --> 00:02:22,370
‫Se você for na raiz do nosso repositório para este curso, e então vamos para o diretório Dockerfile

34
00:02:22,370 --> 00:02:24,750
‫sample 2. Agora estávamos aqui antes.

35
00:02:24,770 --> 00:02:28,580
‫Se você lembrar, há dois arquivos. Isto é para Nginx, certo?

36
00:02:28,580 --> 00:02:36,530
‫Se olharmos para o Dockerfile muito rápido, é bastante simples. É apenas especificar um diretório de trabalho e, em seguida, copiar um

37
00:02:36,560 --> 00:02:39,050
‫arquivo de índice para esse diretório.

38
00:02:39,050 --> 00:02:40,490
‫Não há volumes aqui.

39
00:02:40,490 --> 00:02:45,290
‫Uma montagem de encadernação não exige que um volume funcione, embora possa certamente estar lá.

40
00:02:45,530 --> 00:02:52,590
‫nomear nginx. O anfitrião sempre ganha,

41
00:02:52,630 --> 00:02:56,330
‫lembre-se? um contêiner docker, então nós fazemos um -d.

42
00:02:56,390 --> 00:03:00,420
‫Vamos dar a porta 8080 como antes.

43
00:03:00,770 --> 00:03:06,470
‫Então, quando estamos fazendo Vamos Então, vamos dar o volume desta vez. E eu preciso dizer que meu diretório de trabalho atual

44
00:03:06,650 --> 00:03:12,230
‫será realmente montado nesse diretório de trabalho no recipiente. Como meu arquivo de índice está aqui nesta

45
00:03:12,230 --> 00:03:13,390
‫pasta, eu quero

46
00:03:13,430 --> 00:03:19,040
‫que ele esteja no recipiente para que eu possa editá-lo aqui, e é visto ao vivo no contêiner.

47
00:03:19,040 --> 00:03:20,320
‫Então, ele terá sentido em um segundo.

48
00:03:20,540 --> 00:03:24,280
‫Aqui está uma pequena dica rápida. Em vez de ter que descobrir

49
00:03:24,290 --> 00:03:28,370
‫todo o meu caminho e digitar o todo, você pode usar o pwd aqui, assim.

50
00:03:28,460 --> 00:03:36,210
‫substitua este comando por esse caminho.

51
00:03:36,380 --> 00:03:43,460
‫Qual é um atalho de shell que diz: "imprima o diretório de trabalho e "Então, vamos usar o mesmo diretório de trabalho do Dockerfile, e

52
00:03:43,460 --> 00:03:45,360
‫então vamos especificar a imagem Nginx.

53
00:03:47,590 --> 00:03:52,930
‫O que vou fazer, muito rápido, é que, na verdade, vou abrir outra janela de terminal, para que possamos fazer duas

54
00:03:52,930 --> 00:03:54,480
‫coisas de uma só vez.

55
00:03:54,590 --> 00:03:56,010
‫Você realmente não precisa fazer isso.

56
00:03:56,050 --> 00:04:01,840
‫Basicamente, vamos editar o arquivo no nosso host, e então vou estar no recipiente e ver o que

57
00:04:01,840 --> 00:04:02,780
‫está acontecendo.

58
00:04:02,920 --> 00:04:04,730
‫Então, apenas para ter certeza de que

59
00:04:04,780 --> 00:04:06,350
‫está funcionando, vamos ao localhost.

60
00:04:06,700 --> 00:04:10,000
‫OK, então este não é o arquivo HTML Nginx padrão.

61
00:04:10,030 --> 00:04:13,080
‫E usamos a imagem regular do Nginx.

62
00:04:13,090 --> 00:04:16,580
‫Na verdade, não utilizamos o personalizado deste diretório.

63
00:04:16,690 --> 00:04:24,270
‫Nós apenas usamos uma imagem de estoque. Para provar esse ponto, podemos realmente fazer o mesmo,

64
00:04:24,280 --> 00:04:37,390
‫comando exato novamente, mas tirar o -v, e eu vou executá-lo na porta 8080 em vez disso. E eu chamarei esse nginx2.

65
00:04:37,420 --> 00:04:47,930
‫Se eu passar para o meu navegador e ir para o localhost 8080, esse é o índice nginx padrão. html.

66
00:04:48,010 --> 00:04:52,130
‫arquivo Este é o personalizado que vivemos neste diretório.

67
00:04:52,780 --> 00:04:56,380
‫É -al, e você Então, já podemos ver que ele mapeou corretamente.

68
00:04:56,560 --> 00:05:03,010
‫verá Se eu abrir uma outra guia aqui e obter uma linha de comando no contêiner.

69
00:05:08,800 --> 00:05:10,130
‫apenas continue isso em seu arquivo.

70
00:05:17,710 --> 00:05:21,580
‫Espero que você entenda o que está acontecendo aqui, que ambos esses locais estão no mesmo local.

71
00:05:21,620 --> 00:05:27,460
‫Em seguida, vá para esse

72
00:05:30,440 --> 00:05:37,010
‫diretório. E se eu fiz ai Você notará que podemos realmente ver o Dockerfile porque mapeamos todo o diretório. oops. esquecendo isso. eco em algo nesse arquivo

73
00:05:37,010 --> 00:05:37,900
‫testme, e então.

74
00:05:37,970 --> 00:05:43,350
‫está.

75
00:05:43,370 --> 00:05:47,350
‫Nosso nginx é capaz de ver as mudanças porque é apenas um caminho de arquivo normal no contêiner, e esses Se sobre a esquerda, se

76
00:05:57,430 --> 00:05:58,420
‫nós realmente arquivos estão no host.

77
00:06:01,620 --> 00:06:02,410
‫fizemos um novo arquivo e eu só posso usar esse comando de toque do Linux aqui para criar um novo arquivo.

78
00:06:02,410 --> 00:06:08,720
‫Então, à direita.

79
00:06:08,830 --> 00:06:13,210
‫host porque é o mesmo arquivo.

80
00:06:13,210 --> 00:06:19,090
‫É quando eu costumo convencer um desenvolvedor a pensar em todos os ambientes de desenvolvimento

81
00:06:19,090 --> 00:06:24,670
‫que eles possuem nessa configuração complicada. Talvez eles estejam usando Vagrant, ou algum outro

82
00:06:24,670 --> 00:06:30,880
‫método manual de configurar seu ambiente perfeito, e eles podem começar a ver como isso poderia tornar isso muito mais simples.

83
00:06:31,330 --> 00:06:35,920
‫Porque eu não tinha que fazer qualquer configuração complicada no meu Mac, eu apenas corri um recipiente.

84
00:06:35,920 --> 00:06:43,670
‫Usei o comando -v com o suporte, e agora meu código, no meu host, pode ser editado no meu host.

85
00:06:43,840 --> 00:06:47,890
‫E eu realmente nunca preciso entrar na concha do recipiente.

86
00:06:47,890 --> 00:06:52,570
‫e observar seus logs para ver se há algum erro enquanto você está

87
00:06:52,570 --> 00:06:53,260
‫codificando.

88
00:06:53,500 --> 00:06:58,750
‫Geralmente, você pode simplesmente executar o contêiner Claro, este é um exemplo simples com o Nginx. Mais tarde, na verdade, teremos exemplos

89
00:06:58,750 --> 00:07:03,160
‫específicos de diferentes ambientes de desenvolvimento para desenvolvimento local e contêineres.

