‫Nesta palestra, vamos falar sobre a ligação de montagem e dados persistentes nessas montagens. Os requisitos são realmente que você apenas
‫conhece o gerenciamento de contêineres e como executar contêineres.
‫Vamos entrar. Vamos falar sobre montagens de ligação. Eles são realmente muito legais.
‫Quando eu aprendi sobre eles, meio que me deu uma boa maneira de usar o Docker facilmente para o
‫desenvolvimento local.
‫Realmente, uma montagem de ligação é apenas um mapeamento dos arquivos do host, ou diretórios, em um arquivo de contêiner
‫ou diretório. Você pode fazer exatamente isso.
‫Você pode especificar um diretório ou apenas um único arquivo. mesmas
‫localizações físicas no disco.
‫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
‫não vá destruir o local do seu host quando você excluir o contêiner.
‫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
‫arquivos no contêiner que ele sobrecarregou porque não está realmente substituindo nada
‫no contêiner.
‫Está lá enquanto a montagem de ligação existe.
‫você re-executar o recipiente sem ele, você realmente veria os
‫dados subjacentes que estavam lá antes. No instante em que você não precisa mais do bind e Como as montagens
‫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.
‫Não é possível especificá-los em um Dockerfile.
‫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
‫aqui.
‫É realmente o -v que usamos antes, apenas no lado esquerdo do cólon, estamos
‫realmente colocando um caminho completo em vez de apenas um nome.
‫tempo, e a montagem do bind, é que o
‫bind mount começa com uma barra inclinada para a frente.
‫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,
‫em seguida, o caminho.
‫Enquanto você tiver o cólon esquerdo e os lados direitos, você pode realmente mapear qualquer coisa que você deseja
‫do host no recipiente, e você também pode especificar coisas como somente leitura.
‫Onde isso realmente vem a brilhar é com o desenvolvimento e a execução de serviços dentro do seu
‫contêiner que estão acessando arquivos que você está usando no seu host ou mudando.
‫Vamos fazer isso com o Nginx.
‫Se você for na raiz do nosso repositório para este curso, e então vamos para o diretório Dockerfile
‫sample 2. Agora estávamos aqui antes.
‫Se você lembrar, há dois arquivos. Isto é para Nginx, certo?
‫Se olharmos para o Dockerfile muito rápido, é bastante simples. É apenas especificar um diretório de trabalho e, em seguida, copiar um
‫arquivo de índice para esse diretório.
‫Não há volumes aqui.
‫Uma montagem de encadernação não exige que um volume funcione, embora possa certamente estar lá.
‫nomear nginx. O anfitrião sempre ganha,
‫lembre-se? um contêiner docker, então nós fazemos um -d.
‫Vamos dar a porta 8080 como antes.
‫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
‫será realmente montado nesse diretório de trabalho no recipiente. Como meu arquivo de índice está aqui nesta
‫pasta, eu quero
‫que ele esteja no recipiente para que eu possa editá-lo aqui, e é visto ao vivo no contêiner.
‫Então, ele terá sentido em um segundo.
‫Aqui está uma pequena dica rápida. Em vez de ter que descobrir
‫todo o meu caminho e digitar o todo, você pode usar o pwd aqui, assim.
‫substitua este comando por esse caminho.
‫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
‫então vamos especificar a imagem Nginx.
‫O que vou fazer, muito rápido, é que, na verdade, vou abrir outra janela de terminal, para que possamos fazer duas
‫coisas de uma só vez.
‫Você realmente não precisa fazer isso.
‫Basicamente, vamos editar o arquivo no nosso host, e então vou estar no recipiente e ver o que
‫está acontecendo.
‫Então, apenas para ter certeza de que
‫está funcionando, vamos ao localhost.
‫OK, então este não é o arquivo HTML Nginx padrão.
‫E usamos a imagem regular do Nginx.
‫Na verdade, não utilizamos o personalizado deste diretório.
‫Nós apenas usamos uma imagem de estoque. Para provar esse ponto, podemos realmente fazer o mesmo,
‫comando exato novamente, mas tirar o -v, e eu vou executá-lo na porta 8080 em vez disso. E eu chamarei esse nginx2.
‫Se eu passar para o meu navegador e ir para o localhost 8080, esse é o índice nginx padrão. html.
‫arquivo Este é o personalizado que vivemos neste diretório.
‫É -al, e você Então, já podemos ver que ele mapeou corretamente.
‫verá Se eu abrir uma outra guia aqui e obter uma linha de comando no contêiner.
‫apenas continue isso em seu arquivo.
‫Espero que você entenda o que está acontecendo aqui, que ambos esses locais estão no mesmo local.
‫Em seguida, vá para esse
‫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
‫testme, e então.
‫está.
‫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
‫nós realmente arquivos estão no host.
‫fizemos um novo arquivo e eu só posso usar esse comando de toque do Linux aqui para criar um novo arquivo.
‫Então, à direita.
‫host porque é o mesmo arquivo.
‫É quando eu costumo convencer um desenvolvedor a pensar em todos os ambientes de desenvolvimento
‫que eles possuem nessa configuração complicada. Talvez eles estejam usando Vagrant, ou algum outro
‫método manual de configurar seu ambiente perfeito, e eles podem começar a ver como isso poderia tornar isso muito mais simples.
‫Porque eu não tinha que fazer qualquer configuração complicada no meu Mac, eu apenas corri um recipiente.
‫Usei o comando -v com o suporte, e agora meu código, no meu host, pode ser editado no meu host.
‫E eu realmente nunca preciso entrar na concha do recipiente.
‫e observar seus logs para ver se há algum erro enquanto você está
‫codificando.
‫Geralmente, você pode simplesmente executar o contêiner Claro, este é um exemplo simples com o Nginx. Mais tarde, na verdade, teremos exemplos
‫específicos de diferentes ambientes de desenvolvimento para desenvolvimento local e contêineres.