‫Esta seção estará cheia de palestras e trabalhos em torno de dados persistentes.
‫Primeiro, vamos discutir os problemas de dados persistentes e como isso mesmo se tornou
‫um problema em primeiro lugar.
‫Os principais conceitos que você precisa entender são a idéia de infra-estrutura imutável.
‫E a idéia em torno de recipientes sendo naturalmente efêmera em design.
‫Vamos abordá-los na primeira palestra. Então vamos mergulhar em volumes de dados e como aqueles
‫solucionam alguns de nossos problemas em torno de dados persistentes. Então, também vamos cavar em montagens de ligação e
‫como isso resolve diferentes problemas com dados persistentes. banco de dados, ao mesmo tempo em que substitui os contêineres para bancos de dados.
‫Então, acabaremos com esta seção com algumas tarefas em torno de como preservar os dados do E, em seguida, também em torno do código
‫de montagem realmente em um recipiente do host enquanto você está editando, para que
‫você possa executar esse código dentro do contêiner ao vivo. Os requisitos para esta primeira palestra são apenas entender como
‫executar contêineres e os conceitos de contêineres e imagens que discutimos até agora.
‫Até agora, você só se preocupou com o que é necessário para executar um contêiner, e não os dados exclusivos que podem ser criados
‫assim que um contêiner está sendo executado.
‫Os recipientes devem ser imutáveis ​​e efêmeros.
‫Essas são apenas buzzwords extravagantes para imutáveis ​​e temporárias, ou descartáveis.
‫A idéia aqui é que podemos simplesmente jogar fora um recipiente e criar um novo a partir de uma
‫imagem, certo?
‫Então, não estamos falando de uma limitação real de contêineres, mas de um objetivo de design, ou
‫de uma melhor prática.
‫Esta é a idéia de infra-estrutura imutável onde não mudamos as coisas uma vez que elas estão sendo executadas.
‫Se uma mudança de configuração precisa acontecer, ou talvez a atualização da versão do contêiner tenha que
‫acontecer, então nós reimplementamos um novo recipiente.
‫Isso nos dá grandes benefícios na confiabilidade e consistência, e torna as mudanças reprodutíveis.
‫Mas há uma compensação.
‫E quanto aos dados exclusivos que seu aplicativo produzirá? Esses bancos de dados, ou um valor chave armazenam, ou qualquer outra
‫coisa que o seu aplicativo escreve em um arquivo?
‫Idealmente, os recipientes não devem conter seus dados exclusivos misturados com os binários do aplicativo. Isso é conhecido como "separação de
‫preocupações" e Docker realmente nos dá um grande benefício aqui.
‫Podemos atualizar nosso aplicativo recriando um novo contêiner, com uma versão atualizada do nosso aplicativo e, idealmente, nossos dados
‫exclusivos ainda são onde ele precisa ser e foi preservado para nós enquanto nosso recipiente foi reciclado.
‫Caso você não tenha notado até agora, os contêineres que usamos, por padrão, eram persistentes.
‫Todas as mudanças neles foram mantidas durante o reinício e reiniciaram até que removemos o contêiner.
‫Só porque nós paramos o recipiente ou reiniciamos o host, não
‫significa que as alterações de arquivo do recipiente se afastem.
‫É somente quando removemos o recipiente que a camada UFS desaparece, mas queremos fazer
‫isso à vontade.
‫Este problema de dados únicos é conhecido na indústria como "dados persistentes" e até contêineres, nós
‫realmente não temos um nome para isso. Porque, bem, a maioria das coisas que construímos foi persistente, como
‫você conhece os servidores antigos que executaram esse antigo aplicativo por cinco ou 10 anos ou mais.
‫Tudo foi persistente por padrão.
‫Agora, no novo mundo dos contêineres e a escala automática de aplicativos, dados persistentes criam um
‫problema único.
‫O Docker possui duas soluções para esse problema,
‫conhecidas como "volumes de dados" e "binds mount". "Os volumes do Docker são uma opção de
‫configuração para um contêiner que cria uma localização especial fora do sistema
‫de arquivos de união do recipiente para armazenar dados exclusivos.
‫Isso preserva isso através de remoções de contêineres e nos permite anexá-lo a qualquer recipiente que desejamos.
‫E o recipiente apenas vê isso como um caminho de arquivo local.
‫Em seguida, há montagens de ligação, que são simplesmente nós compartilhando ou montando um diretório de host, ou arquivo, em um recipiente.
‫Mais uma vez, parecerá um caminho de arquivo local, ou um caminho de diretório, para o contêiner.
‫Na verdade, não saberá que vem do host.