‫Agora você ainda pode estar se perguntando, mesmo depois de aprender alguns dos principais recursos do Docker.
‫Por que o Docker precisa existir?
‫Obviamente, estamos empacotando software há décadas com vários outros gerenciadores de pacotes implantando software em
‫servidores.
‫Então vamos falar sobre isso.
‫Este vídeo vai se concentrar em três coisas sobre o porquê do Docker e por que agora?
‫E no momento em que foi criado, houve atrito.
‫Havia coisas no caminho para irmos para o próximo nível de velocidade e facilidade de uso do ciclo de vida do software, particularmente em torno do
‫empacotamento, distribuição e execução de todo o software que estamos fazendo.
‫E eu gosto de listas de três, eu acho.
‫Então esta lista principal de ambientes de isolamento e velocidade.
‫Essas três áreas são o que eu quero falar como as três razões gerais.
‫Eu sinto que os próprios contêineres tinham que existir e por que eles são tão populares hoje em dia.
‫Em primeiro lugar, o problema do isolamento.
‫E se voltarmos ao início da minha carreira nos anos noventa, podemos começar a falar sobre o
‫que os servidores costumavam ser antes de termos contêineres.
‫Se voltarmos ainda mais longe do que apenas 2013, antes do Docker ser criado e falarmos sobre o início dos anos
‫2000 nos anos noventa, quando mudamos do mainframe para o PC, isso pode ser como um administrador típico seria.
‫Eu tinha um par de servidores por empresa.
‫Você sabe, não seríamos realmente capazes de gerenciar 100 servidores por pessoa.
‫Novamente, isso foi como, você sabe, 2000.
‫E assim teríamos esses grandes servidores muito caros que era raro consumir todos os seus recursos com um
‫único aplicativo.
‫Então você acabaria com todos esses aplicativos apenas todos remendados no mesmo servidor.
‫E o servidor tornou-se frágil.
‫Tornou-se difícil de gerenciar porque você pode precisar alterar uma coisa para um aplicativo e, em seguida, outro aplicativo precisa de
‫uma coisa diferente.
‫E então você teria que gerenciar suas diferentes versões do Python ou suas diferentes versões do Apache
‫em diferentes servidores apenas para equilibrar tudo ao mesmo tempo, você queria colocar mais e mais coisas em cada
‫servidor.
‫Mas nada foi isolado, então todos esses aplicativos estavam compartilhando o mesmo sistema de arquivos.
‫Eles geralmente não poderiam ser várias versões desse aplicativo sem muitos hackers complicados.
‫E isso era um grande problema.
‫Depois vieram as VMs.
‫Assim, quando as VMs se tornaram realmente populares, mesmo antes da nuvem, conseguimos abstrair todos os
‫nossos aplicativos e começar a colocar menos aplicativos em VMs menores, todos gravando no mesmo host grande.
‫Então, pode ser assim e podemos começar com Chef ou Puppet como uma forma de
‫gerenciar todos esses números crescentes de servidores.
‫Na verdade, teríamos tantos servidores nas primeiras 20 dezenas antes da criação do Dockers que estava ficando
‫muito difícil gerenciar todos eles de uma vez.
‫Você era um único administrador, talvez tentando gerenciar dezenas, se não centenas de servidores, mesmo com a nuvem
‫nos ajudando a acelerar as máquinas mais rapidamente, destruindo-as mais rapidamente.
‫Foi muito.
‫Era tanta coisa para administrar que se tornou demais para muitos de nós.
‫E a nuvem, eu acho, melhorou, mas também piorou porque tornou muito mais fácil criar
‫muitos outros.
‫Então, como o Docker pode ajudar com isso?
‫Como isso pode nos ajudar a reduzir a quantidade de infraestrutura a ser gerenciada e, ao mesmo tempo, garantir o isolamento de nossas cargas de trabalho para
‫que as coisas não se tornem frágeis ou difíceis de gerenciar?
‫Bem, se esta foi a nossa configuração há 20 anos, em vez de espalhar todas essas VMs com números desnecessários
‫de sistemas operacionais.
‫O que os contêineres fazem é nos dar o isolamento como uma VM.
‫Não é exatamente a mesma coisa, mas vamos apenas argumentar por enquanto que é uma camada de isolamento onde eles obtêm
‫seu próprio endereço IP, seu próprio sistema de arquivos, seu próprio espaço de processo.
‫E assim parece quase uma VM completa, mas você não precisa de todos os diferentes sistemas operacionais para que
‫possamos reduzir nosso sistema operacional, contar nossa contagem de hosts físicos.
‫Você não precisa mais usar VMs como camada de isolamento, e pode ser assim.
‫Em vez de usar S-H, você usaria um Docker.
‫Seelye Ou se você passar para o Kubernetes, você pode usar o selo Kubernetes AI e seus aplicativos
‫são todos isolados em seus próprios contêineres.
‫Isso permite muitos benefícios, incluindo a execução de várias versões do mesmo aplicativo no mesmo sistema
‫sem nenhum conflito.
‫Em seguida, o problema dos ambientes.
‫E obviamente estávamos criando toneladas de sistemas operacionais como eu falei, mas o número de diferentes tipos de
‫ambientes também estava aumentando.
‫Você já ouviu falar de obras na minha máquina?
‫Foi meio que ficou famoso como uma piada por Jeff Atwood, um dos fundadores do StackOverflow, e um
‫famoso post de blog de antigamente.
‫Mas isso funciona na minha máquina A ideia foi um pouco sarcástica, mas a piada é que muitas vezes é
‫o trabalho do desenvolvedor garantir que o aplicativo funcione corretamente.
‫Mas eles não têm todos os ambientes necessários para que esse aplicativo seja executado.
‫Então, eles apenas executam em sua máquina, testam em sua máquina e, quando não funciona em
‫outro lugar, eles dizem que funciona na minha máquina.
‫É realmente desafiador quando temos todos esses sistemas operacionais diferentes e o Docker cunhou esse The Matrix from
‫Hell, que significa essencialmente para cada parte do seu aplicativo, que está acima de mim,
‫e para cada tipo de ambiente aqui deste lado, você tem um configuração diferente.
‫Talvez você tenha que instalar as dependências de uma maneira diferente.
‫Talvez as dependências sejam um pouco diferentes porque uma tem uma versão diferente na outra.
‫Você tem todos esses diferentes tipos de ambientes e provavelmente teve que ler ou escrever documentação sobre como o aplicativo que
‫o desenvolvedor usa no Mac precisa ser instalado de maneira diferente no Windows, que precisa ser instalado de maneira
‫diferente em um servidor Linux e em e assim por diante.
‫Agora, a imagem do contêiner e o próprio contêiner se tornaram um fundamento.
‫Mental, abstrato, ou um contrato entre onde é executado e o que é executado dentro dele, bem como contêineres físicos no
‫mundo real que nos permitem enviar mercadorias para todo o mundo com design de quase
‫cem anos atrás.
‫O objetivo era que as pessoas que entregavam os contêineres físicos não precisavam saber o que estava dentro
‫dele, e as pessoas que colocavam suas coisas dentro do contêiner não precisavam saber ou se importar como o contêiner
‫chegou fisicamente ao seu destino.
‫Essas eram uma abstração das proporções agora épicas de milhões de contêineres em todo o mundo sendo enviados.
‫E praticamente tudo em sua casa provavelmente esteve em um contêiner em sua vida.
‫A mesma coisa vale para imagens em contêineres do Docker agora.
‫Eles são um formato padrão consistente conhecido agora como padrões OCI.
‫Isso garante que, onde quer que você execute o contêiner, ele será executado da mesma maneira consistente com as mesmas dependências
‫exatas com as quais foi construído.
‫Em seguida, o problema da velocidade.
‫Agora, não me refiro necessariamente aqui à velocidade da CPU ou à velocidade da memória.
‫Essas coisas naturalmente ficam mais rápidas com o tempo.
‫Mas eu estou realmente falando sobre a velocidade dos negócios.
‫E quando falamos de I. T. e software e o ciclo de
‫vida do software, estamos realmente falando sobre a capacidade das empresas e organizações de executar suas ideias, de entregar suas ideias
‫de software ao cliente o mais rápido possível.
‫E isso faz parte do ciclo de vida do software.
‫Bem, acontece que a indústria vem mudando a infraestrutura e a arquitetura desde o início
‫da computação.
‫Por esta razão, fiz este pequeno gráfico porque você pode começar no topo.
‫Nos anos 90, quando eu comecei e tínhamos mainframes migrando para PCs em uma arquitetura distribuída
‫que era em grande parte sobre a velocidade de poder implantar mudanças.
‫Agora você podia instalar o DOS em uma única máquina sem ter que esperar que o mainframe fosse atualizado para
‫qualquer que fosse a próxima versão do Unix.
‫Não podíamos mais nos mover de uma vez.
‫Precisávamos que diferentes partes de nossa organização se movessem em direções diferentes em velocidades diferentes, daí
‫o surgimento da computação distribuída.
‫Então partimos do bare metal, o virtual, porque estávamos cansados de esperar o pedido de hardware e esperar que ele
‫fosse implementado em um data center.
‫Queríamos acelerar as coisas e obter uma melhor utilização de nossos recursos.
‫A virtualização e as máquinas virtuais tornaram-se extremamente populares por esses motivos.
‫Então, o data center para a nuvem foi o próximo passo, porque agora precisávamos implantar ideias ainda mais rápido do que
‫nosso próprio hardware e data centers podiam permitir.
‫Queríamos executar servidores que não temos atualmente em minutos, não em dias ou semanas, e a nuvem
‫nos deu acesso a recursos quase instantâneos, o que obviamente é a razão pela qual a nuvem é tão grande hoje.
‫E então, finalmente, estamos na próxima etapa dessa jornada, saindo da enorme expansão de host que tínhamos,
‫onde tínhamos muitos hosts, kernels e sistemas operacionais.
‫E agora poderemos reduzir o número deles porque agora podemos isolar as cargas de trabalho
‫dentro deles e executá-los com segurança no mesmo kernel.
‫Estou incluindo serverless aqui, a propósito, porque se você realmente se aprofundar na maioria das plataformas serverless, elas
‫estão apenas executando contêineres em segundo plano.
‫Pode ser um contêiner que você enviou como uma imagem ou apenas um contêiner no qual eles estão executando sua
‫função, mas eles ainda estão sendo executados em um contêiner.
‫E é por isso que gosto de falar mais rápido, mais rápido, mais rápido.
‫Essencialmente, o que os Containers e o Docker oferecem é a capacidade de desenvolver mais rapidamente, criar seus
‫aplicativos mais rapidamente, testá-los mais rapidamente e implantá-los em seus servidores mais rapidamente.
‫Agora, você ainda está comigo?
‫Ainda tenho sua atenção.
‫Vamos recapitular isso bem rápido.
‫Portanto, a razão pela qual os contêineres existem são três razões principais, na minha opinião, o melhor isolamento dentro de um
‫único SO economizando tempo e SO e gerenciamento de dependências, mas também nos dando o isolamento que precisamos
‫para proteger nossos aplicativos.
‫Então reduzimos as variações ambientais.
‫Portanto, a diferença entre cada ambiente que ele executa é mínima.
‫Novamente, geralmente apenas suas configurações de conexão para bancos de dados, talvez alguns caminhos de URL, coisas assim, portas
‫e, em seguida, o resto é exatamente o mesmo que você criou e testou.
‫E, finalmente, aumentar nossa velocidade de mudança, não apenas para o software em si, mas para a empresa
‫que deseja implementar esse software.
‫Agora podemos desenvolver mais rápido, construí-lo mais rápido, implantá-lo em servidores mais rapidamente e testá-lo mais rapidamente, tudo
‫porque essas imagens de contêiner e os próprios contêineres são muito fáceis de construir, implantar e reimplantar e reexecutar
‫e tudo isso.
‫Então espero que isso faça sentido.
‫Vejo vocês no próximo vídeo.