[Música] Olá a todos pessoal nesta última aula da semana dois nós vamos falar sobre docker né E por que nós vamos discutir o assunto de docker né nessa disciplina que envolve planejamento e in gestão de dados n que o Dock er uma tecnologia que nos ajuda a a desenvolver soluções né e com base de dados integrados em contêiners né Isso é muito importante Isso facilita movimentação da da dos dados da aplicação eh se torna a aplicação eh independente dos dados né Eh o que casa muito bem com as características dos bancos de dados inclusive eh
não estruturados né e também com com assunto né que já discutimos também em outras disciplinas que é aritur de microsserviço né então a eh a o o o o o ecossistema de dados que nós eh eh lhe damos hoje né envolve Independência de D dados e distribuição dos dados alta disponibilidade né e fraco acoplamento né da inclusive da aplicação com os dados então Eh em muitas soluções os dados são armazenados em grandes centros de dados o a lógica da aplicação em outro centro de dados né E como é que eu faço para eh intercambiar as
informações né como é que eu faço essas conexões tá Então nada mais natural que utilizar uma tecnologia que já é Nativa né para isso né que evoluiu bastante ao longo dos últimos anos então a gente vai discutir o que que vem a ser o docker né e a história dele né o que é um contêiner né eo importante tá as imagens docker né e a diferença entre imagem né e contêiner e um pouco do vocabulário docker tá eh por também eu vou falar de docker né Não só em função da importância de docker pro contexto
da da da do uso e das aplicações hoje mas também porque muitas das soluções que envolvem eh eh os mers para internet das coisas e e Cloud USA eh eh eh docker né Tem versões para docker inclusive especialmente para facilitar eh a utilização tá então uma em particular né como uma ferramenta para eh fazer o controle de dispositivos em em casa né em escritórios em empresas e que é o home assistant ele tem versão para docker né Tem várias formas de você fazer a instalação configuração dessa plataforma né desse midro né mas tem uma versão
que é para docker né que tem todo ambiente já organizado para você eh startar o docker né e sair utilizando eh o o a plataforma tá inclusive ela como eu já comentei tem mecanismo para fazer análise dos dados coletados pelos sensores então por exemplo quando você acende eu apaga uma luz quanto tempo ela ficou ligado quanto ela ficou desligada quem que acendeu como é que você vê a análise disso ao longo do do dia da semana enf enfim né então Eh esses dados precisam ser capturados né armazenados e expostos de alguma forma né que foram
definidos por quem desenvolve a solução bom o docker é uma plataforma de software que permite criação teste implantação de aplicações de forma muito rápida né e empacotando software e unidades padronizadas né chamados containers né Eh o precursor do docker é uma coisa que nós conhecemos no ambiente Linux que chama jaula C Rot né então a ideia você dentro de único sistema operacional você isolar um novo sistema operacional né Principalmente coisas relacionadas ao soft alguns software né de uso né no banco de dados servidor web né mas se aproveitando de toda núcleo do do so né
nativo né então o que você pacota isso dentro de um ambiente isolado né usando núcleo usando dispositivo de entrada e saída nativos do rost né e físico ou virtual inclusive eh o que faz com que a sua solução seja muito pequena né então você consegue movimentar sua solução em em tamanho né muito pequeno sem ter que por exemplo ter um so totalmente instalado e configurado para reproduzir essa aplicação simplesmente você tem que ter o quê um um um uma solução de contêiner instalada num ambiente né e simplesmente você movimenta né a imagem né Entre esses
contêiners que nós vamos ver já já bom um pouco da história de Doc né foi lançado em 2013 né como código aberto né e colaboração entre grandes empresas né grandes e conhecidas né do mundo open source né e Red Hat né Fedora né precursor de Fedora né op shift também que é uma plataforma para nuvem né e em 2014 ele foi o é 34º projeto mais discutido no github né E olha que no github tem muito projeto né de diversas eh eh organizações né e ambientes 2014 também tecnologia mais inovadora né e Enfim então tem
é uma tecnologia que realmente eh eh eh tem se desenvolvido ao longo dos anos e é muito muitíssimo utilizado em qualquer solução eh que você faça uso hoje por exemplo bancos e aplicativos de bancos online né e empresas para transporte de usuários transporte de mercadorias enfim n então qualquer uma dessas soluções certamente a um ambiente de contêiners né pela facilidade dinamicidade que casa com as características do das nuvens computacionais né e de ambientes que exigem grande disponibilidade flexibilidade né bom uma coisa que é importante discutir e mencionar que contêiner não é a mesma coisa que
máquina virtual tá embora a gente já tenha visto isso em outros em outras situações né mas sempre bom frisar isso aqui né Eh então nós temos o que aqui do ponto de vista de máquina virtual né a gente tem um ambiente né que necessita e nós chamamos de um hipervisor né então tem a infraestrutura aqui que é o hardware físico né E a máquina virtual n mais é que um outro sistema operacional né que faz contato com esse esse supervisor né então eu tenho um ex opcional né tem as aplicações tem as bibliotecas né tem
um sistema operacional guest né e o supervisor gerenciando isso né o que acontece Nesse contexto é que a solução né a depender do tamanho da sua solução da complexidade né você tem que ter além da solução toda a estrutura do sistema operacional né O que faz com que esse esse essa solução do ponto de vista de tamanho fique muito grande isso impacta na movimentação dos dados né além de você ter uma coisa que eh eh um aspecto né que vai um pouco contra a ideia de eh microsserviço né que é ser mais eh eh separado
possível né então a gente acaba tendo aqui uma solução acaba tendo solução um pouco mais fortemente acoplada se comparável com a ideia de contêiner pro outro lado do contêiner nós vamos ter a ideia de docker nós vamos ter aqui prin especialmente eh O que a aplicação necessita né então eu tenho aplicação e as bibliotecas dela né um ambiente de contêiner né que tem relação direta aqui com o host tá então Diferentemente do do da da VM né Eu não tenho necessidade de ter um sistema operacional né gest aqui né e um hipervisor tá então o
que faz o docker uma solução digamos assim é mais simples e menos custosa em relação a tamanho né é que você consegue movimentar toda essa estrutura aqui né é desde que você tenha um ambiente docker já instalado né no rost né que compartilha né tudo que o so tem inclusive você consegue fazer o contêiner conversar com aplicação do host e vice-versa tá eh desde que você libere eh as essas ações né Por padrão como ele é um ambiente totalmente isolado você não consegue às vezes nem fazer acesso e nativamente né você não consegue por exemplo
dar um ping né Eh para um determinado e site né a menos que você instale aí uma uma aplicação para pingar um um site ou pingar um IP tá bom o contêiner el é uma uma embalagem padronizada para software e dependência né então imag contêiner assim é uma caixa de fósforo e dentro dessa caixa de fósforo tem vários Palitos né Vamos imaginar que esses Palitos dentro da caixa de fósforo são as imagens associadas a esse contêiner Então você empacota isso tudo né e leva para onde você desejar já então migro isso de uma nuvem para
outra então posso desenvolver um contêiner local com uma imagem de uma sistema operacional com uma aplicação né uma plataforma como o o home assistant por exemplo né mider para IOT né e eu não quero mais que ele fique na Amazon eu quero pegar essa imagem e e jogá-la PR PR para ure eu consigo sem sem nenhuma modificação na imagem né que eu vou ter que fazer ajustes nas configurações de como que a er por exemplo vai receber essa imagem né E vai executar no ambiente de contêiners que a própria a fornece tá eh uma outra
característica é isolamento né como eu já comentei das aplicações tá Compartilha o mesmo núcleo de sistema operacional né e funciona para todas as distribuições Linux e também no Windows então eu posso desenvolver uma imagem né no ambiente de contêiner no Windows e portar essa imagem migrar isso pro Linux desde que eu tenha o o ambiente de docker devidamente instalado tá então nós temos aqui um contêiner que necessita de o Engine docker né para funcionar e o resto do centro operacional aqui com servidor com né com o hardware né e o host né completa bom qual
o papel da Imagem e dos contêiners nesse ambiente né bom a imagem docker né então vamos ter dar como exemplo aqui eh um sistema operacional comun Deb né com nodejs né e o código de aplicação podia ser um servidor web ou podia ser um um ambiente para desenvolvimento web aí como por exemplo laravel né Eh com frontend né com backend integrado enfim tá E e um contêiner docker né que é criado usando imagem que nós temos aqui né então é intercâmbio entre as duas coisas né o contêiner el empacota as imagens né eu posso em
geral que que nós O que é feito né Eh se desenvolve uma imagem padrão com algumas características se disponibiliza essa imagem que nós chamamos de registro de contêiners né um mais conhecido os mais conhecidos embora haja vários outros é o docker Hub né que alguém vai lá desenvolve uma imagem com alguma solução você obtém essa imagem você pode customizar essa imagem né então você pode fazer comite nessa imagem fazer as alterações ter sua própria imagem então novas imagens são são criadas a partir de outras já existentes tá isso não não impede não e impede Nenhuma
forma de você eh gerar a sua própria imagem né com contêiner Doc e disponibilizar essa imagem também no Dock errando tá então tem um ponto importante nisso né Eh que é sempre eh bom frisar né que é a questão da segurança dessas imagens né então Eh procurem utilizar imagens que são disponibilizadas em locais que façam inspeção dessas imagens docker Hub é um exemplo né para verificar se algum problema né modo geral né que pode viabilizar o ambiente depois on que onde ela vai ser implantada né porque a gente tá falando de software na verdade empacotado
né bom algumas palavras né que fazem parte do vocabulário docker né para fazer uma breve revisão então nós temos aqui a imagem docker coner docker motor e o serviço de registro tá basicamente isso que faz parte de todo ambiente doc a imagem é a base de um contêiner tá então representa uma aplicação qualquer tá uma aplicação independente do tamanho e da complexidade dela o contêiner é a unidade padrão no qual essa aplicação fica e executada Tá então vamos lembrar lá da caixinha de fóssil você tem a caixinha de fóssil que carrega todos os palitos de
fóssil para onde você quiser então você vai fazer uma pescaria em algum lugar você vai levar uma caixa de fóssil passend uma fogueira tem lá vários palitos de fóssil você sai de um um ambiente de um rio você vai para outro Leva a caixa de fóssil e acende a fogueira em outro lugar basicamente Essa é a ideia pessoal né então a caixa de fósforo né empacota os palitos aqui o P empacota as imagens tá essas imagens que que pode ser essas imagens professor pode ser um servidor web pode ser um banco de dados né como
a gente já viu anteriormente count DB pode ser n4j pode ser o Cassandra Enfim pode ser uma solução completa né uma solução completa integrado tudo dentro de uma imagem essa imagem ela pode ter sei lá diversos tamanhos então a imagem de distribuição Linux que tem 20 30 40 100 m a imagem tem 5 GB né 30 G enfim a quantidade o tamanho varia em função do que você vai colocando na imagem né E aí logicamente quanto maior imagem maior a dificuldade de transportar essa imagem menor o maior o tempo de transporte entre a rede de
comunicação enfim né por isso que a ideia de microsserviço preconiza que essas imagens sejam imagens eh pequenas de tamanhos pequenos que tenham aplicações que executam uma determinada funcionalidade e que conversam com outras imagens com outras aplicações estão nessas imagens por meio de uma Red de comunicação usando apis padronizadas que por exemplo uma delas é api rest e usando mecanismo de comunicação né de troca de mensagens como é o Public publ publish subscribe tá o motor docker que tem objetivo criar enviar exitar esses contêiners dockers né implantáveis aonde no roste físico pode ser no seu desktop
pode ser num data center e de uma empresa pode ser num na nuvem Né desde que esses ambientes forneçam Esse motor de processamento para executar essas imagens tá e o serviço de registro né como eu já comentei anteriormente docker Hub é um deles né Eh que é responsável por armazenar essas imagens o docker Hub nada mais é como se fosse um banco de dados de imagem de contêiner é isso tá então fazendo uma alusão à nossa caixa de fóssil imaginar que o docker Hub ele armazena várias caixinhas de fóssil lá né dentro dessas caixas de
fóssil tem lá várias aplicações né cada palitinho ali seja uma aplicação pode ter um banco de dados só pode ter um banco de dados com servidor web Enfim pode ter várias outras coisas tá E aí o que que é comum fazermos né como já vale a pena eh penas vale a pena reforçar né é que nós obtermos conseguimos obter essas imagens mu Muitas delas prontas já isso vale paraas soluções que nós vamos discutir depois né como o h assistem ou Open remote open com elas já prontas para serem executadas né e a aplicação e ser
disponibilizada para outos muito rápido bom então o docker um dentro do vocabulário docker também há um um um uma palavra né um arquivo é muito importante né que ajuda a criação de novas imagens né E que facilita o desenvolvimento né de soluções eh baseado em script Então nesse tocker file você é como se fosse uma uma uma um mecanismo que você cria regras né e determina eh Quais são as regras que vão ser executadas né para criar essa imagem então eu vou criar uma imagem do tipo bunto que tenha tanto de memória que tenha tanto
de disco que tenha tanto de v usar tantos processadores eh que vai eh ter acesso à internet que vai liberar porta 80 que vai ter um banco de dados mais k funcionar na porta 3306 enfim você cria define as regras ens docker file para que quando você for Executar a imagem né ela tem que executar em função disso tá então é assim que muitas imagens São criadas disponibilizadas Então você define em software como é que vai ser o seu a sua sua imagem né então ela pode ser versionada em um sistema de controle de versão
como Git né junto com todas as dependências então é muito comum criar esses arquivos no Git né usar outas entas que pegam esses docker file né do faz acesso ao docker file do Git e gera né a imagem local né então é muito comum e também é o padrão né quando você vai executar um contêiner uma imagem no no local né no seu no seu ambiente né no notebook ou no no desktop no servidor né se essa imagem não ela primeira coisa que faz o ambiente docker faz é procurar uma imagem localmente se não existe
ela vai fazer download dessa imagem né considerando que por padrão O O docker ele busca essas imagens no docker Hub tá embora isso pode ser mudado também então ele o dockerhub inclusive ele faz isso né ele constrói imagens automaticamente de de docker files que tão públicos no github bom era isso então pessoal para para esta esta aula né discutir um pouco sobre docker né a importância dele no contexto de de eh armazenamento de dados armazenamento de soluções né recuperação de informações né então o que e eh e complementa o que a gente tem visto até
agora né do ambiente de nuvem do ambiente de IOT de geração de dados de como que eu armazeno isso de como eu estruturo né e de como por exemplo eu eh faço a gestão dessas soluções com uma tecnologia né que é baseada no isolamento né Eh e facilita o transporte de dados e o desenvolvimento de novas soluções tá então a recomendação mais uma vez que vocês façam atividade avaliativa e sugiro fortemente participem dos fóruns né e discutam o desafio da [Música] [Música] semana a [Música]