Fala aí galera beleza seja bem-vindo seja bem-vinda a mais essa nossa Live aqui no canal hoje né Essa semana na verdade eh vão ser lives vão ser aulas diferentes por quê Porque eu decidi que essa semana pra gente fechar aí o mês de novembro eh nós vamos ter três aulas sobre Dock vai ser o nosso aulão aqui de dock Então hoje a gente vai ter a Live aqui que vai tá começando né Nós já estamos aqui e ao vivo Amanhã nós vamos ter aula aqui também às 7 horas e na quarta-feira também certo e esse
conteúdo ele vai ficar aqui no canal Então você vai poder assistir depois mas é importante você tá aqui ao vivo também para você colocar aqui as suas perguntas para eu poder responder aqui durante a Live e um ponto importante aqui tá galera eh aguardem a Hora das Perguntas não precisa colocar aí direto porque no final eu vou tirar as dúvidas de vocês aí vocês podem colocar e tudo mais então assistam a aula eh se puderem façam o exercício depois caso não consigam façam depois mas é importante também exercitar para colocar aqui em prática o conhecimento
certo e aqui a gente vai falar nós vamos ter essas três aulas sobre doc mas antes da gente começar começar e eu quero saber o seguinte e quem tá aí online tá quem tá aqui ao vivo e da onde é e se e qual área que atua é de desenvolvimento é de infraestrutura é de cloud é de machine learning enfim coloca aí que eu quero saber beleza eu quero ter esse feedback de vocês e eu quero saber também qual é o seu nível de conhecimento em Dock Inclusive eu vou colocar isso na enquete aqui no
YouTube Opa deixa eu colocar até aqui certo vamos lá deixa eu iniciar aqui uma enquete E aí eu vou colocar aqui ó qual op Deixa eu botar aqui ó Qual o nível o seu nível botar aqui ó seu nível de conhecimento em docker certo e aí eu vou botar aqui não sei nada não sei nada sei o básico Ah deixa eu botar aqui intermediário e avançado deixa eu votar aqui avançado Beleza então iniciei aqui a enquete tá aqui no chat e no YouTube e se você tiver vendo a gravação tiver vendo depois e coloca aí
embaixo eu quero saber Coloca aí nos comentários tá e o seu nível de conhecimento em docker eu quero saber aí coloca aí beleza então vamos lá galera vamos falar aqui sobre Dock que eu posso falar para vocês inclusive que docker foi uma das tecnologias que eu aprendi que mudaram a minha carreira que me fez assim evoluir de uma maneira muito mais rápida profissionalmente quando eu aprendi docker ali em 2017 eu tava voltando para minha carreira de de tecnologia na na área de tecnologia para quem não sabe em 2015 eu larguei ati depois eu voltei em
2017 Fiz alguns projetos ali nesse nesse período nada muito grande mas em 2017 eu voltei e fui me atualizar no mercado 2 anos faz uma grande diferença aí em relação ao mercado de tecnologia e uma das tecnologias que eu comecei a estudar tá eu comecei ali a aprender em 2017 junto com outras tecnologias como dnet Core node ângul E por aí vai foi o docker e e o docker eu posso te falar que assim me ajudou no aprendizado de todas essas tecnologias que eu falei aqui mas outras tecnologias também relacionadas como mensageria a parte de
arquitetura Cloud cara eu posso te falar com tranquilidade que que docker é uma tecnologia é uma é um recurso que vira a chave da sua carreira porque você vai ter muito mais eficiência na hora de estudar muito mais eficiência na hora de desenvolver muito mais eficiência na hora de entregar software na hora de entregar os seus projetos e vai fazer com que você vai ser o pontapé inicial para você aprender eh muitas outras coisas certo então cara se você tá aqui eh não sabe nada de docker tá começando com docker intermediário avançado não importa Fica
aqui comigo porque essas três aulas vão ser muito importantes para você aprender sobre Dock para você revisar os seus conhecimentos de dock e na última aula a terceira aula eu posso te garantir cara se você tá aí e é avançado avançada em Dock a terceira aula eu vou mostrar para você que você tem muito mais coisas para aprender em relação a docker então não perde essas aulas estão muito maneiras fica aqui comigo ao vivo assiste depois as gravações e me dá o feedback aí eh na descrição também Ou melhor nos comentários aí também certo então
vamos lá primeira coisa né Vamos falar aqui um pouquinho sobre o docker e o mercado antes da gente falar aqui exatamente sobre docker vamos entender eh Por que que hoje o mercado busca profissionais que conhecem docker profissionais que sabem trabalhar com o docker quando a gente fala hoje no mercado de desenvolvimento de software quando a gente fala eh no mercado de entrega de sistemas operação devops Cloud e machine learning e a tem tem como você utilizar docker junto com ferramentas de a quando você cria ali o seu ambiente local com olama para poder trabalhar AL
dá para você trabalhar com docker também mas quando a gente fala no cenário de desenvolvimento e entrega de software tudo hoje acontece de uma forma muito rápida a gente tem que cada vez mais entregar software numa velocidade maior a gente precisa entregar mais software garantir qualidade e muitas coisas que nós trabalhamos hoje tem alta complexidade por exemplo arquitetura de microsserviço eu tenho vários processos para executar ali a minha aplicação quando a gente fala também em Cloud Cara eu tenho que pegar aqu aquele código que eu desenvolvi aqui na minha máquina para poder executar no ambiente
de cloud eu ten que rodar esse cara no ambiente de Cláudio que eu acabei de desenvolver tem que em algum momento ir pra nuvem eh e quando a gente fala também em ambiente de microsserviço eu tenho também eh tecnologias que precisam se comunicar e nem sempre elas são ali da mesma tecnologia ou da mesma linguagem eu ten que trabalhar com linguagens diferentes na minha solução muitas vezes eu tenho um microsserviço que foi desenvolvido ali em searp Eu tenho um microsserviço que depois foi desenvolvido em go eu tenho um frontend que foi desenvolvido com angula com
react Então são tecnologias diferentes que precisam se comunicar né e num cenário como esse onde eu tenho que entregar cada vez mais mas ao mesmo tempo eu tenho mais complexidade o docker ele cai como uma luva porque ele ajuda justamente isso a você entregar e desenvolver softwares mesmo que num ambiente complexo tendo extrema eficiência porque eh alguns obstáculos que nós temos no processo de desenvolvimento e entrega de software docker vai resolver aqui pra gente eu vou falar daqui a pouquinho sobre isso mas é importante você entender que por conta desse cenário né no mercado docker
é cada vez mais exigido pelas empresas hoje desenvolvedor profissional devops profissional sre profissional de cloud e não importa o nível se você é Júnior pleno ou Sênior você precisa saber doc é um pré-requisito para você conseguir as melhores vagas do mercado para você conseguir as melhores remunerações Alguém tem dúvida disso quem tá ao vivo aqui comigo tem dúvida disso De que docker é um elemento essencial quando a gente fala nesse cenário aqui nessa complexidade e no atual momento de merado Coloca aí nos comentários eu quero ver aí no chat comentem aqui que eu vou vou
lavar aqui a garganta deixa eu ver aqui o retorno da galera e se você tá na dúvida se docker é importante ou não você não precisa nem me ouvir tá você pode ir no Linkedin você pode ver as principais vagas docker hoje é é um requisito básico tanto quanto é o Git certo e cara e a tendência é que cada vez mais isso aumente porque os projetos eles vão ficar mais complexos eles vão ficar cada vez maiores a régua né de de requisitos pros profissionais vai aumentar cada vez mais me desculpa se eu tô falando
aqui algo que você não sabe que que tô te pegando aí de surpresa mas a régua Vai cada vez aumentar e docker vai ser cada vez mais essencial certo e como eu disse o docker ele me ajudou a pensar ar diferente a desenvolver diferente e eu vou falando aqui um pouquinho sobre a minha experiência com docker o meu contato com docker no decorrer aqui da não só de hoje mas também de todo o toda essa nossa aula Ok então cara docker hoje é essencial docker hoje é fundamental Mas por que que docker é tão importante
o que que faz o docker ser tão importante o docker ele ajuda em em diversos aspectos quando a gente fala em desenvolvimento e entrega de software que nós sempre tivemos mas hoje cada vez mais é um problema maior e veio para ajudar a resolver eu vou compartilhar aqui a minha tela eh Quase que eu fiz uma besteira aqui não tem problema mas vou compartilhar aqui agora Ah pá Beleza então vamos lá vamos entender exatamente o que que o docker faz por que que ele é tão é importante certo aqui ó quando a gente fala em
desenvolvimento de sistemas eu começo né pela parte de desenvolvimento né começo aqui com a galera de Dev ah Fabrício Mas eu sou de infraestrutura eu sou de cloud eu sou de machine learning Calma eu vou chegar em você calma calma e Mas a gente sempre começa aqui com a equipe de desenvolvimento e o desafio já começa aqui o primeiro desafio já começa aqui no início do projeto onde eu tenho que montar o meu ambiente de desenvolvimento eu tenho que pegar todas as tecnologias que eu vou trabalhar e definir montar no meu meu setup na minha
máquina aqui que eu vou utilizar para desenvolver então aqui vamos supor que eu tenho que nesse momento criar um projeto utilizando sei lá eh Python certo vou utilizar aqui também eh um banco de dados eh MySQL certo e um sei lá vamos botar aqui um sistema de mensagem guia né Vamos botar aqui um cfca da vida né eu vou ter aqui esse setup eu preciso montar esse ambiente quem aí já montou um ambiente Inicial quem aí já teve que fazer algo do tipo aqui em um projeto sabe que esse processo não é tão s simp
você tem que botar eh a versão muitas vezes a versão correta do SDK né da linguagem que você tá trabalhando mesma coisa pro banco de dados masq L pro k fica a mesma coisa e tudo isso fica instalado na sua máquina certo e quando a gente fala em em uma arquitetura baseada em microsserviços muita gente que trabalha também com consultoria e tá envolvida em em vários outros os projetos eh sabe que esse momento de setup é complexo porque em algum momento você tá trabalhando com Essas tecnologias Python mask Kafka E por aí vai mas chega
um outro momento que isso aqui muda Você não vai mais usar Python você não vai mais usar msql Você não vai mais usar o cafca você vai utilizar aqui sei lá node JS você vai usar aqui SQL ou post G também não tem problema e você pode utilizar também Rabbit MQ E aí que que eu faço aqui nesse cenário que que eu faço nessa situação onde eu tava trabalhando com uma stack né um conjunto de tecnologias e eu tenho que mudar pro outro normalmente você vai desinstalar tudo e instalar de novo você vai desinstalar o
banco de dados desinstalar o cafc e vai instalar tudo novamente ou o pior dos cenários você vai ter tudo tudo junto e misturado na sua máquina e aí você tem que ter aquele computador da Nasa porque você tem um banco dois bancos de dados rodando eh duas mensagerias e por aí vai certo o docker ele vem para ajudar justamente nesse processo onde você vai conseguir montar o seu setup local de desenvolvimento com muito mais eficiência você vai conseguir montar uma steack de estudo com com muito mais eficiência e aqui foi o primeiro momento em que
quando eu aprendi docker mudou a forma que eu eh comecei a estudar e comecei a desenvolver como eu tava voltando pro mercado né como eu tava eh querendo me modernizar né nessa nessa área de na área de desenvolvimento o meu objetivo era ser um arquiteto de soluções eu tinha que estudar várias tecnologias quem nunca né quem nunca tem que estudar ali eh Kafka Rabbit MQ e outras ferramentas aí eh ao mesmo tempo e aí o que que acontece com o conhecimento de docker eh o meu o meu modo de estudar né a velocidade de subir
o meu ambiente de de estudo subir ali o que era necessário para poder estudar uma ferramenta ou uma tecnologia ficou muito mais rápido eu com uma linha de comando eu conseguia subir tudo com uma linha de comando eu subia lá o elastic Search para estudar o rabit MQ subia mongo DB cara eu conseguia montar toda minha steack de estudo e desenvolvimento com muito mais velocidade então aqui o Dock já começou a ajudar o meu processo de estudo meu processo de evolução como um profissional de tecnologia E aí quando a gente vai um ambiente mais Ops
quando a gente vai para o outro lado aqui certo é tão importante quanto o lado de desenvolvimento que é o lado de operação eh o contêiner o docker ele também vai ajudar por quê Porque toda vez que eu desenvolvo um software né eu desenvolvo um projeto aqui é minha máquina local né Vamos botar aqui máquina local todo o processo quando sempre que eu começo com o processo de desenvolvimento né eu termino com esse projeto rodando no ambiente de produção Então eu tenho que pegar tudo isso aqui que eu setei na minha máquina que eu coloquei
para rodar na minha máquina e eu vou ter que passar essa especificação pra equipe de operação para que eles consigam reproduzir o ambiente e executar no ambiente de produção no servidor é a mesma aplicação que eu acabei de desenvolver e entregar normalmente como é que eu faço isso eu pego ali um manual né e passo pra equipe de operação ninguém lê que a gente sabe que é assim né ninguém lê fica aquele pergunta pergunta e tal e cara em algum momento e o servidor ele vai est aqui rodando né ele vai est aqui rodando com
todas as tecnologias depois de mandar aquele manual que você que normalmente a equipe escreve mal e porcamente e que normalmente quem recebe não vai ler certo então eu consigo aqui pegar o meu servidor né a equipe de operação vai conseguir pegar aqui o servidor e Executar a aplicação mas a gente sabe né Que Nem tudo são flores n Deixa eu voltar aqui Nem tudo são flores né Por qu quando a gente tem um ambiente de produção quando a gente tem um ambiente produtivo não não necessariamente a nossa aplicação vai est rodando ali sozinha né o
meu projeto não vai est rodando sozinho numa máquina única ali não recurso computacional Ele é caro né então normalmente ele é compartilhado com Outras aplicações com outros projetos e por aí vai não não tem uma uma CPU dedicada ali só para a CPU que eu digo aqui uma máquina né dedicada ali ao meu projeto eu tenho vários outros codando simultaneamente e é óbvio que você tendo vários projetos normalmente com várias linguagens diferentes com várias linguagens com várias versões da linguagem diferente você vai ter ali uma série de conflitos né o Python 2 conflitando com python
3 o Java conflitando com csharp com do NET H go conflitando com outra coisa PHP E por aí vai e vem aquela famosa frase que a gente sempre fala né que na minha máquina funciona né na minha máquina tá rodando é impossível que tá com algum problema porque aqui tá funcionando tudo certinho e aí eu vou pegar o o notebook né o o a máquina de quem tá desenvolvendo vou colocar no servidor não né não faz sentido Então docker vem para ajudar nesse ponto também docker vem para ajudar eh nessa parte aqui do desenvolvimento para
acelerar o meu processo de criação de ambiente e testar validar fazer prova de conceito e também vai ajudar na hora de colocar esse projeto para rodar em produção porque eu consigo pegar essa minha stack de desenvolvimento e colocar para executar no ambiente de produção utilizando basicamente a mesma tecnologia para execução que é o Dock certo e eu consigo também eh seguir um dos 12 fatores né que diz que o ambiente de desenvolvimento ele tem que ser o mais similar possível com o de produção quando eu utilizo docker eu consigo chegar mais próximo disso eu posso
utilizar outras ferramentas aqui que vão fazer com que isso seja ainda eh o mais parecido possível mas aqui eu já tenho uma similaridade que me garante que eu vou ter ali o mínimo possível de problema em ambiente praticamente zero problemas certo eh mas eu consigo eh diminuir o problema que eu vou ter beleza pô legal entendido aqui me diz aí se se ficou Claro me me me digam aí se é ou não é irado isso aqui né alguém tem dúvida de que isso pode mudar a sua carreira como fez com a minha como eu tô
falando aqui para vocês eh alguém tem dúvida disso Coloca aí nos comentários me diz que eu quero saber beleza bom legal então cara docker é maneiro pô dá para fazer um monte de coisa mudou o modo que eu trabalho é ajuda se diferencia no mercado mas o que que é isso o que que é docker afinal de contas docker é uma tecnologia que cria uma camada de isolamento utilizando a tecnologia de contêiners Então docker nada mais é do que o uso de contêiners e o que é contêiner contêiner é uma tecnologia que vem do Linux
que permite que eu pegue um processo e Execute de forma isolada no meu ambiente então basicamente nesse cenário aqui eu vou botar aqui embaixo eu vou copiar aqui e vou melhorar aqui a ilustração aqui embaixo basicamente quando a gente trabalha aqui no ambiente local né quando a gente trabalha aqui dessa forma na minha máquina deixa eu até cortar aqui e colocar para cá quando eu trabalho na minha máquina eu tenho a minha máquina e eu tenho processos em execução a minha aplicação skl server RT MQ E por aí vai nada mais são do que processos
eu vou executar todos esses processos na minha máquina como tá tudo na minha máquina ali eh a possibilidade de ter aqui eh conflito é muito maior né porque tá tudo o processo tá rodando ali no meu ambiente né E quando a gente trabalha com contêiner eu vou conseguir executar esses caras deixa eu jogar eles para cá eu vou executar esses caras aqui utilizando o contêiner que vai criar essa camada de isolamento nos meus processos então agora ao invés de eu ter simplesmente aqui né O meu a minha aplicação rodando instalada na minha máquina eu vou
ter os contêiners que criam esse isolamento certo em cada um dos processos e eu vou fazer comunicação entre eles só se eu quiser para o processo para minha aplicação aqui pro banco de dados pro rabit MQ ele tá sendo executado em uma máquina entre aspas tá dedicada só para ele ele não tá ele não vai identificar ali o meu ambiente como um todo eu crio um nível de isolamento E aí dessa forma né a quando gente volta aqui ó nesse cenário aqui o que que acontece aqui no lado de quem trabalha com desenvolvimento quem trabalha
com desenvolvimento consegue rodar qualquer processo dentro de um contêiner ele vai ser executado de forma isolada você vai poder comunicar eles entre si certo E no momento em que você não precisa mais daquele recurso daquele projeto ou daquele processo você elimina na ele você Mata aquele contêiner e ele vai ser eliminado e vai parecer que nunca foi executado na sua máquina você não tem que se preocupar em instalar desinstalar ferramenta se preocupar com o registro que ficou ali na sua máquina nada disso você vai executar destruir e fazer ali da forma mais dinâmica possível né
Eu posso te falar que assim eu não formato mais o meu computador tem a tem muito tempo e antigamente quando eu trabalhava sem contêiners precisava subir banco de dados precisava eh subir várias ferramentas para estudar para desenvolver cara eu Format Ava ali minha máquina de três em três meses de dois em dois meses né e eu tenho certeza que você já passou ou passa por isso também então contêiner vai me ajudar aqui nesse sentido quando a gente fala em operação quando a gente fala eh em Cloud a gente vai fazer aqui da mesma forma a
ideia é a mesma é conseguir utilizar recurso computacional máquina virtual ou serviço de cloud para executar o meu processo de forma isolada e eu garanti ali que vai ter o mesmo comportamento que tá tendo aqui no meu ambiente de desenvolvimento fora que eu tenho uma gestão muito mais facilitada porque eh eu vou ter ali uma tecnologia única para desenvolver e para executar essas aplicações no ambiente de produção né quem vai gerenciar ali os servidores ou ambiente de cloud não tem que se preocupar com instalação do Apache não tem que se preocupar com instalação do Java
ou do dnet ou do Python nada disso você vai Executar tudo no ambiente eh Centralizado único que utiliza ali o o a tecnologia de contêiners no caso aqui o docker ou outras tecnologias também e você vai ter uma gestão muito mais simples e unificada certo e aí você tem esse essa série de benefícios eu gosto de comparar o contêiner né de tecnologia com os contêiners mesmo que nós temos né de transporte de transporte de carga porque a ideia do contêiner é justamente Essa é ter a uma camada de isolamento para facilitar o transporte de mercadorias
n quando a gente vai transitar ali de um local pro outro eh uma quantidade grande de mercadorias faz sentido né alugar ali um contêiner Principalmente quando a gente fala de coisas que vem da China de outros países e por aí vai n pegar ali várias mercadorias eh vários volumes né que eu quero transportar colocar tudo em um contêiner e por conta do contêiner ter essa camada né que isola e facilita o transporte porque ele tem ali e um um formato ali padronizado meio que Unificado né Alguns são são mais largos outros são eh um pouco
mais altos enfim não conheço também de especificação de contêiners para isso mas eu consigo pegar esse contêiner e transportar com muita facilidade em navio em caminhão né E por aí vai armazenar também é mais simples por conta dessa padr ação e como ele tá isolado ali eu só consigo saber o que tem dentro quando eu abro o contêiner a ideia de contêiner na tecnologia é a mesma eu consigo ter essa tecnologia que cria esse isolamento certo então o uso de contêiner o uso de Doc ele é sensacional por conta disso porque eu consigo criar esse
isolamento mas não é só isso não é só isso Isso é uma das vantagens em relação à contêiner eu tenho também a vantagem de velocidade de criação quando a gente cria uma aplicação em contêiner ela é muito mais rápida de ser executada de ser criada de ser inicializada eu tenho também a padronização como eu tô trabalhando com uma tecnologia de contêiner Estou trabalhando aqui com o docker a portabilidade entre ambientes éo mais simples eu consigo pegar essa minha aplicação que tá ali rodando no meu ambiente aqui local utilizando coners e executar no servidor da empresao
você trabalhe com ambiente on premise eu consigo executar no ambiente de cloud consigo executar no consigo execut na aws consigo executar no Google na Oracle cara eu posso executar o mesmo processo a mesma aplicação em um ambiente desde que ele utilize tecnologia de coners então o requisito para eu poder rodar um projeto e uma aplicação no ambiente passa a ser o requisito dele dar suporte à execução de contêiners certo e eu quero fazer aqui também uma comparação que normalmente a galera tem muita muita dific ou até se engana achando que container e máquina virtual é
a mesma coisa porque quando eu falo em máquinas virtuais e quando eu falo em contêiners né eu falo em Executar aplicação num ambiente né em um ambiente isolado eh e eu consigo fazer a comunicação entre si caso eu queira E aí parece muito máquina virtual né mas é um erro comum Tá mas é um grande erro confundir máquina virtual E contêineres por quê porque eh quando a gente fala eh conceitualmente num alto nível parece que é a mesma coisa mas não é quando a gente fala aqui ó em máquina virtual eu tenho a camada de
infraestrutura eu tenho a camada de virtualização eu tenho aqui as máquinas virtuais que vão criar ali o meu hardware virtual vão criar realmente uma máquina virtual cima das máquinas virtuais eu tenho que ter os meus o meu sistema operacional para executar aqui a minha aplicação para poder rodar aqui a minha aplicação quando a gente fala em contêiners é diferente eu tenho a camada de infraestrutura eu tenho o sistema operacional eu tenho aqui um outro cara que vai ser diferente eu não tenho aqui a virtualização eu vou ter o sistema operacional e eu vou ter aqui
eh no lugar da virtualização em si eu vou ter o meu contêiner runtime eu vou ter aqui o elemento responsável por executar os meus contêiners no caso aqui vai ser o DOC mas eu tenho outros também mas eu vou focar aqui no docker porque o docker é que domina o mercado e acima do docker acima do Meu Container runtime eu tenho o container E dentro dele vai ter a minha aplicação percebe que é diferente Parece a mesma coisa mas não é por quê você vê que na máquina virtual eu tenho uma complexidade maior porque eu
tenho que colocar em cada máquina virtual sistema operacional também eu vou ter que botar meu Windows vou ter que botar meu Linux meu Mac Enfim vou ter que colocar um sistema operacional para rodar minha aplicação aqui no contêiner não a aplicação ela para ela ela tá executando num ambiente isolado num sistema operacional único para ela mas na verdade ela tem aqui um sistema operacional que é compartilhado E aí ah Fabrício e as chamadas que eu faço no sistema operacional Parará e tudo mais que como é que eu faço isso como é que acontece isso eh
o contêiner ele vai executar aqui as chamadas e quem vai interpretar essas chamadas e fazer a ponte com sistema operacional é o contêiner runtime aqui no caso é o docker e então aqui nesse cenário é eu vou ter um sistema operacional único Então eu tenho uma gestão mais simples porque eu não tenho que ficar e aplicando update em vários sistemas operacionais e eu tenho também economia de recurso computacional por quê cada sistema operacional aqui ele consome recurso computacional e aqui no caso no contêiner eu não tenho né Essa cacetada de sistemas operacionais Além disso inicializar
uma máquina virtual é muito mais lento do que inicializar aqui um contêiner contêiner sobe em segundos máquina virtual vai levar minutos se você botar uma máquina virtual para inicializar na aws você vai ver que vai levar 5 6 minutos para ela ser inicializada quando a gente fala em contêiner cara você vai rodar aí na sua máquina você vai ver que em segundos você consegue executar Então essa é a diferença agora ponto muito importante também que a galera confunde e aqui a gente vai falar sobre docker a gente vai falar aqui sobre como utilizar docker para
criar containers mas o docker em si ele não criou contêiner container é uma tecnologia que é utilizada no Linux há muito tempo antes mesmo de ter o Dock existiam outras formas de criar containers que eram extremamente complexas tá não era simples trabalhar com contêiners como é hoje em dia depois foi evoluindo a gente começou a ter outras Tecnologias para criação de contêiners como lxc lxd muitas outras também até chegar no Dock então o Dock ele simplificou o processo de criação de contêiners mas pô Fabrício dá então para eu criar um contêiner eh só utilizando Linux
sem utilizar doc sem utilizar nada disso dá eu mostro isso pros meus alunos meus alunos e vem isso na prática nos meus treinamentos nos meus cursos mas eu não vou mostrar aqui porque eu não quero chegar nesse nível de detalhe mas sim é possível fazer isso é possível executar processo de forma isolada utilizando containers sem utilizar dokia sem utilizar L XC sem utilizar XD e nada disso por quê Porque eu utilizo tecnologias que fazem parte do Kernel do Linux Principalmente eu uso três aqui tá vou falar as três principais mas eu utilizo outras também eu
utilizo namespace eu utilizo C groups e o overlay file sistem o namespace é uma tecnologia que permite eh eu executar eh processos dentro de processos o c groups ele entra como um recurso para limitar os recursos computacionais de cada Proc acesso e o overlay file System ele permite eu eh juntar e agrupar sistemas de arquivo Então essas são as principais tecnologias beleza mas aqui né no nosso aulão Eu quero que você se prenda a dois conceitos importantes na hora de criar contêiners aqui com o DOC e o primeiro é o conceito de imagem e o
segundo é o conceito de contêiner mas como é que funciona isso vamos lá o conceito de imagem é o o a imagem em si ela é o Projeto né Ela é o o elemento necessário para se criar um coning Então tudo na imagem eh vai o que que vai ter na imagem tudo que é necessário para executar o meu processo eu gosto de falar que a imagem ela é o brint o op a língua presa o blueprint né do meu contêiner Então sempre que eu quero executar um processo em um contêiner eu vou ter uma
imagem como base todo contêiner tem uma imagem como base e aí o contêiner é a instância é a representação dessas definições desse blueprint que foi criado e é interessante que a partir de uma imagem eu posso criar os contêiners e a gente vai fazer isso aqui certo é importante só que você tenha esse conceito na imagem eu vou ter tudo necessário para criar um contêiner no final das contas tá vou soltar um spoiler aqui para você mas no final das contas a imagem ela nada mais é do que o sistema de arquivo que eu utilizo
para executar o meu contêiner então a imagem nada mais é do que um sistema de arquivos eu vou montar um sistema de arquivos para criar um contêiner comparando com programação eh programação orientada objeto a imagem ela é uma classe onde você define comportamentos atributos e o contêiner em si é o objeto vai ser a Instância daquela classe certo agora um ponto importante antes da gente ir pra parte prática é importante entender a arquitetura do Doc o DOC el essa tecnologia logia que facilita a criação de contêiners utiliza imagem utiliza contêiner beleza mas como é que
eu faço para executar o DOC que que eu utilizo aqui para eh criar o DOC eh para ou para criar meus contêiners com Doc e eu tenho três elementos aqui que são básicos na arquitetura do Dock eh eu primeiro eu tenho o docker Dimon o docker Dimon é o elemento responsável por Criar e gerenciar os meus objetos do Doc então contêiner imagem Network volume todos esses caras e eu vou utilizar aqui o docker di o docker demmon ele vai utilizar ele vai utilizar vai criar e vai gerenciar se eu tiver que matar um contêiner ele
vai matar se eu tiver que pegar uma imagem lá ele vai pegar e tudo mais esse cara ele centraliza ali a gestão de todos os objetos eh e a máquina né a que vai est executando o docker demmon ela é chamada de docker host o segundo elemento é o docker client o docker client ele faz a interação aqui com o docker demmon então toda vez que eu vou executar um contêiner que eu vou criar aqui um contêiner executando ali o o meu comando docker container Run eu vou interagir com docker demmon para ele criar esse
contêiner para mim e um ponto importante que você vai ver aqui é que eu tenho o docker Dimon e o docker Client separado e aí você pode estar pensando pô FAB pera aí na minha máquina eu tenho docker demmon e docker client tudo junto Porque eu não tô acessando outra máquina eu tô acessando a minha e é verdade é você tá com os dois ali rodando Mas você pode ter o docker client instalado na sua máquina e acessar um docker Dimon remoto acessando ali remotamente né num servidor ou num outro ambiente eh o docker Dimon
não necessariamente ele vai tá na tua máquina OK e eu tenho aqui o terceiro mas não menos importante elemento que é o Dock regist o DOC registry ele é o repositório de imagens doc ele é como se fosse o Git para código certo eh o que na verdade ele é o Git para imagens porque eu vou armazenar e versionar as minhas imagens no Dock regre e assim como eu tenho o github que é hoje o principal serviço de hospedagem de código utilizando Git eu tenho o Dock Hub que é o principal serviço de eh armazenamento
de imagens utilizando o Dock registre Então eu tenho esses três componentes básicos aqui beleza e o docker h docker eh demmon E também o docker client beleza bom então vamos pra prática aqui né Vamos pra prática aqui começar a dar os nossos primeiros passos com o docker mas ponto importante aqui tá para trabalhar com o docker você precisa ter o docker instalado e você pode instalar o docker de diversas formas diferentes né Você pode instalar o docker basicamente utilizando o docker desktop tá que funciona para o Windows Linux e Mac tá e o docker desktop
ele é uma ferramenta da própria docker que facilita a criação de contêiners e e do docker no seu ambiente quando a gente fala do o Windows e do Mac eh para você instalar nesses dois ambientes você vai ter que utilizar tá o o docker o docker desktop deixa eu achar aqui pera aí aqui get Dock você vai utilizar aqui o docker desktop no Mac e no Windows ele é obrigatório no no Linux não você pode utilizar o do desktop ou você pode instalar diretamente o docker Engine E aí tá aqui ó em manual eu tenho
aqui o docker Engine e como fazer a instalação e aí no Linux você pode instalar eh na sua na principal distribuição que você utiliza é só seguir aqui o manual de instalação e no docker no Mac no Windows você tem que utilizar o docker desktop no Windows tem uma ressalva aqui se você tiver utilizando wsl que é o meu aqui né Windows subsistem Linux você inst direto ali distu Linux você na tá rodando Linux aqui dentro do Windows então no Windows vocêde utilizar docker desktop você utili o docker Eng aqui diret que que eu recomendo
se você tiver utilizando o ambiente Linux né e ou wsl cara instala o o Engine mesmo certo agora se você tiver utilizando o Windows e ou Mac utiliza aqui o docker desktop A não ser que você esteja utilizando o Windows e tiver muito eh pouco recurso computacional uma máquina de sei lá 8 GB de Ram cara você vai ter problemas na hora de rodar aqui o Dock desktop se você tem uma máquina com 16 GB para cima Pode instalar de boa que vai funcionar ele além de facilitar aqui a criação tornar possível criar eh o
o teu ambiente Dock ele tem algumas ferramentas que ajudam bastante eu não vou entrar aqui em detalhes nelas não faz parte aqui do da nossa aula do nosso aulão Mas ajuda bastante então eu recomendo que você use aqui o Dock desktop você vê que aqui ó e consome ali ó mais ou menos 1 GB5 G então se você tiver utilizando ali 8 g gigas você vai ter problemas se tiver 16 para cima tá de boa então ok aqui no caso eu tô utilizando Dock desktop tô utilizando wsl já tá aqui ó Dock beleza posso utilizar
ó numa boa Outro ponto que eu te recomendo também tá eh aqui eh nessa aula e mais na próxima a gente vai utilizar muito arquivo né a gente vai trabalhar com alguns arquivos para editar o docker file docker compose e tudo mais então eu recomendo que você use um editor de texto tá no caso aqui eu tô utilizando o vs code para mim cara uma das melhores ferramentas do mercado mas você pode utilizar e Notepad você pode utilizar sei lá Sublime pode utilizar o que você quiser tá vin você pode utilizar o que você quiser
caso você esteja utilizando e o o v code eu recomendo que você coloque essa extensão aqui ó extensão docker porque esse cara aqui vai te ajudar com autocomplete vai te ajudar com marcação de texto e vai te ajudar em diversas coisas aqui na hora de você tiver na hora que você tiver trabalhando aqui com o Dock então instala esse cara ele tem aqui ó um gerenciador que também mostra aqui bastante coisa então eu recomendo muito que você use ele instala o Dock el instala essa extensão aí também tá bom legal então vamos comear aqui vamos
dar os primeiros passos primeira coisa vamos comear aqui criando umer para criar umer eu tenho o comando de criação e execução deer que é o comando docker container Run certo sempre que eu vou criar um contêiner e executar um contêiner eu vou utilizar o docker container Run Ok e beleza né esse aqui é o comando de execução e eu posso utilizar também o docker Run tá eu gosto de colocar docker container Run porque eu consigo eu eu deixo claro que eu tô utilizando containers né faz muito sentido docker container Run né Eu tô trabalhando com
coner e eu quero rodar um coner eu quero executar um contêiner certo e como eu disse antes Todo o contêiner ele tem como base uma imagem então toda vez que eu vou criar um contêiner eu tenho que definir a imagem base dele e aí eu vou utilizar aqui Hello load executo E aí vai criar o coner e vai executar o coner e ver como é rápido a criação do contêiner Olha só como foi rápida a criação do contêiner Se você olhar aqui cara ele executou rapidinho e aí é um contêiner também muito simples é um
contêiner que bota aqui informação de texto e tá tudo certo né depois ele é eliminado Mas vamos entender o que ele fez aqui eh assim que eu executei o comando docker container Run ele verificou aqui se eu tinha essa imagem local no caso eu não tinha E aí ele baixou aqui a imagem para mim daí fez aqui o download da imagem né pro meu docker Dimon local e aí quando eu tenho aqui a imagem ele foi lá e executou o meu contêiner E aí o contêiner executou aqui um output né botou esse output aqui e
foi encerrado se eu executar esse cara de novo vamos ver o que que vai acontecer ah lá olha como é que foi rápido cara olha como é que foi rápido você vê que o a primeiro o primeiro contêiner ele só Demorou por conta desse Inicial né dele pegar a imagem baixar foi mais o tempo de download da imagem aqui do que realmente executando o contêiner aí foi muito rápido e aí fez o quê executou eh a mesma coisa teve ali o mesmo comportamento Então essa é Outra vantagem quando eu trabalho com contêiner toda vez que
eu vou criar um contêiner a partir de uma mesma imagem eu garanto que a minha aplicação o meu processo aí vai ter ali o mesmo comportamento né E vai ter ele vai funcionar da mesma forma certo até claro que se tiver dependência banco de dados enfim ele vai ter outro comportamento mas o código ali é o mesmo certo né a base de execução é a mesma e isso a gente chama de idempotência né eu falo até que eu gosto de falar esse termo porque eu me sinto até mais inteligente mas quando eu executo ali Eh
o meu processo da mesma forma ele tem sempre o mesmo comportamento eu garanto a ID impotência então legal então executei aqui o a o contêiner né dois contêiners agora como é que eu faço para ver os contêiners na minha máquina se eu executar aqui ó docker container LS eu consigo listar os meus contêiners tem também o docker PS tá é a mesma coisa tem a mesma função mas pô Fabrício legal você botou aí docker container LS não mostrou nada por quê o Dock container LS ele lista os contêiners ativos os contêiners em execução para ver
os contêiners que não estão em execução que foram encerrados que estão ali e em outro status eu vou utilizar o docker e contêiner LS passando aqui o parâmetro Menos a e aí ele lista os contêiners para mim certo e aí eu consigo ver os dois contêiners que eu criei aqui né o contêiner Inicial que eu criei aqui ó há do minutos atrás e esse contêiner que eu criei aqui agora né Há um minuto atrás E aí na listagem eu consigo ver algumas informações aqui ó interessantes Deixa eu botar aqui só um pouquinho o zoom tá
para ficar melhor na tela mas eu consigo ver aqui ó o contêiner ID que é o ID do meu contêiner a imagem inicial que eu utilizei o comando de inicialização a gente vai ver isso depois e a quanto tempo ele foi criado né esse aqui foi criado a 3 minutos esse aqui há um minuto atrás o status dele e no caso aqui ele tá em exited né que eu executei ele foi encerrado eu tenho aqui as portas que eu tô utilizando aqui eu não tô utilizando nenhuma porta e eu tenho aqui o nome dele né
o nome aqui do meu coner então eu tenho essas informações aqui iniciais Se eu quiser eu posso executar um contêiner aqui também com um nome específico eu posso executar aqui ó docker container Run passando aqui um parâmetro name e botando ó meu E aí eu boto a mesma coisa aqui Hello e World e ele vai executar o contêiner de novo se eu listar aqui de novo ó lá eu tenho o contêiner novo e aqui eu tenho Ó o meu contêiner certo agora esse contêiner aqui que eu criei não faz nada só bota um output aqui
né meio meio ruim né Né meio bosta porque não faz muita coisa mas eu posso também executar aqui aqui eh o meu contêiner de em modo interativo onde eu habilito o terminal e interajo com contêiner E aí para isso eu vou utilizar aqui ó docker container Run menos it botando aqui eh o nome do meu da minha imagem certo que no caso vai ser Ubunto e eu coloco aqui o processo que eu vou utilizar certo que no caso que é o Barra Bin barra Bash que que eu tô fazendo aqui eu tô solicitando a execução
de um contêiner com docker container Run eu tô passando aqui o parâmetro menos it para ele habilitar o modo interativo e o tty Né o meu terminal Vou botar aqui a imagem base Ubunto Ou seja eu vou rodar um contêiner com a distribuição Ubunto e aqui eu vou utilizar como processo Inicial O barra Bin Barb Ou seja eu vou habilitar o terminal se eu executar mesma coisa ele vai buscar a minha imagem certo vai buscar ali a minha imagem e aí ah lá olha só o comportamento é diferente por quê Porque eu tô agora ó
com o meu terminal habilitado eu tô dentro do contêiner e como é que eu sei que eu tô dentro do contêiner Se você olhar aqui ó meu terminal Fabrício Veronez fsv desktop nome da minha máquina falta de imaginação né mas tudo bem E eu tenho aqui ó rut que é o usuário do contêiner e aqui no caso o ID do contêiner se eu vir aqui agora e executar aqui ó docker container LS ah lá ó eu tenho um coner ativo e se você olhar aqui o ID é igualzinho a esse aqui á E aí imagem
inicial ubun comando de inicialização o criado a 35 segundos e por aí vai e aí aqui é um contêiner é um contêiner que tá rodando o bun tem todo o sistema de arquivo Se eu vir aqui ó botar um cão aqui ó no caso eu não tenho mas eu posso e instalar ó APT update para poder aqui atualizar aqui os meus repositórios Dep depois eu posso executar aqui o APT instal para colocar aqui o E aí eu vou aqui ó fazer a instalação do meu do co aqui dentro do meu contêiner se eu executar agora
á que tá funcionando eu tenho aqui ó https 2 bar www.google.com tá lá eu consigo lá fazer uma chamada e acessar ali a página do Google se eu sair aqui desse contêiner ele vai ser encerrado né se eu executar aqui de novo ó lá Ele entrou em modo exited E se eu quiser executar esse contêiner de novo ele vai executar né de novo mas você vê que aqui ó é outro contêiner porque eu tenho até outro id e se eu executar aqui o c eu não tenho ele instalado por quê Porque é outro contêiner ele
tá utilizando uma imagem aqui como base que é igual que é o Ubunto mas é outro contêiner eu criei aqui eh uma uma outra instância né é um outro objeto e é um outro contêiner que não foi instalado aqui o c o co ele foi instalado nesse contêiner aqui então para ter o c aqui nesse contêiner que eu tô trabalhando agora eu tenho que fazer o processo de instalação de novo ah Fabrício Mas eu posso criar aqui sempre o contêiner que já tem o cão instalado aí entra o conceito de imagem que a gente vai
ver daqui a pouquinho mas dá para fazer então legal então aqui vou sair beleza Agora eu quero fazer diferente eu quero criar com você agora algo mais funcional tá pra gente poder rodar realmente uma aplicação E aí eu quero mostrar para você eh o repositório do nosso projeto né a gente vai utilizar aqui né nesse evento né nesse aulão de Doc esse repositório aqui ele vai tá embaixo na na descrição do vídeo eu vou botar no no primeiro comentário Tá vou botar no primeiro comentário esse repositório e vou botar aqui no chat para vocês esse
aqui é o repositório da nossa do nosso aulão Tá eu vou colocar depois algumas anotações aqui e tudo mais mas aqui eu vou ter os dois projetos que eu vou utilizar com vocês o objetivo no final é Rodar aqui esse projeto Cub News no caso eu já tenho ele aqui rodando na minha máquina ou melhor eu já tenho aqui o código na minha máquina certo tá aqui ó Cub News e eu vou abrir aqui o vs code para mostrar para vocês certo e o que que eu vou fazer agora esse projeto aqui ele é um
projeto em node tá que e simula um microblog tá vamos dizer assim porque eu digo micro porque ele não tem imagem ele só armazena texto título é algo bem simples é uma aplicação que eu utilizo muito de exemplo e aqui no canal na formação devops pro nos outros cursos que eu faço então os alunos já conhecem bastante essa aplicação mas aqui o objetivo é Rodar essa aplicação depois em container e essa aplicação Ela utiliza um banco de dados POG certo então eu preciso do banco de dados para rodar essa esse projeto então pô que tal
se a gente fizer er aqui a mesma coisa que eu falei aqui antes né Consegui rodar todas as dependências do projeto em contêiners conseguir rodar aqui o que eu preciso para rodar a aplicação aqui em contêiner pô irado né Pô iradíssimo então vamos fazer isso e aqui no caso eu só tenho uma dependência que é o POG então eu vou inicialmente rodar essa aplicação aqui local na minha máquina instalada aqui com o node mesmo eu já tenho node aqui certo e mas o banco de dados em si a gente vai utilizar em contêiner depois a
gente vai evoluir isso nas próximas aulas Ok então vamos lá vamos lá então e Primeiro passo é executar o post aqui na minha máquina então eu vou utilizar aqui o comando docker Opa faz certo que dá certo né Opa docker container Run certo esse aqui é o comando de inicialização agora qual imagem que eu vou utilizar né Qual imagem que eu vou utilizar aqui para criar esse contêiner para saber a imagem que eu vou utilizar eu vou fazer o seguinte eu vou utilizar aqui o do Hub Lembra que eu falei que o Dock Hub é
o repositório oficial né da Dock ele é o mais utilizado para armazenar e versionar as minhas imagens então eu vou usar ele aqui então eu vou entrar aqui ó em eu vou botar aqui em aba anônima eu vou entrar aqui em hub.docker.com relaxa que a gente vai revisitar esse cara tá Não precisa se preocupar com isso agora mas aqui eu vou pegar esse cara tá eu vou entrar aqui nele e aqui ó eu tenho essa lupa aqui ó search Dock Hub eu vou procurar aqui ó post certo vamos procurar aqui e aqui se eu procurar
me zoou né Porque tem um monte de post vamos botar aqui post s tá aqui ó beleza agora s faz certo D certo eu tenho aqui po Ah mas que que é uma imagem oficial Calma a gente vai ver isso depois quando a gente for falar de imagem a gente fala mais sobre isso mas aqui eu tenho a imagem oficial do po então eu vou utilizar essa imagem aqui fechado então usar essa imagem eu tenho aqui o nome da imagem que é po po certo vou usar aqui po executar Vou botar aqui ele vai fazer
todo o processo ó de criação daag do contêiner e vai baixar ali a imagem e vai executar ali o meu contêiner vamos ver o que que vai acontecer ele vai executar aqui deixei terminar de baixar enquanto isso galera calma aí enquanto isso importante aqui galera e não deixa de dar um like nesse vídeo Ó tem 119 pessoas aqui online agora enquanto ele tá executando ali dá um like no vídeo pro YouTube entender que esse conteúdo é de qualidade vale a pena ser distribuído se inscreve aqui no canal que toda semana tem conteúdo como esse aqui
no canal a gente tá tendo aqui o aulão de docker essa semana mas sempre tem conteúdo aqui no canal e cara pega aqui essa essa Live pega o link aí dessa primeira aula compartilha nas suas redes sociais principalmente no Linkedin pra galera ver que você tá eh estudando que você tá se desenvolvendo que você tá aprendendo e trazer para cá a galera que quer aprender mais sobre doc entender essa necessidade de mercado e dar os primeiros passos aqui nesse aulão aqui cara são essa aqui é a primeira aula de mais duas que a gente vai
ter Então cara pega aí compartilha Tira uma foto aqui minha e tal Parará posta lá e me marca que eu vou ter maior prazer de interagir eh faz isso aí que ajuda muito aqui o canal e também melhora o seu marketing pessoal então beleza aqui ó executei e aí que que aconteceu Ele deu um erro aqui ó ele falou cara você tem que especificar o post G password né E por que isso alguns contêiners quando eu vou trabalhar na criação de contêiner o contêiner ele precisa de uma configuração adicional e aqui o postgre é um
exemplo porque eu preciso colocar usuário preciso colocar senha eu preciso colocar ali o a informação do banco né E como é que eu faço para passar essa informação aqui ele já me passou um spoiler né Eu tenho esse parâmetro aqui menos e onde eu passo variáveis de ambiente pro meu contêiner pro meu Dock né para o contêiner que eu tô criando aqui com o Dock então eu vou utilizar isso mas como é que eu sei quais são esses parâmetros quais são essas variáveis eu vou vir aqui na documentação ok e vou procurar aqui essa esses
parâmetros aqui embaixo ó eu tenho variáveis de ambiente aí eu tenho o password eu tenho o user e eu tenho aqui o post grib certo então aqui eu vou passar esses parâmetros então junto aqui com o meu comando de criação eu tenho que passar né De novo aqui eu vou botar o docker container Run mas aqui eu vou adicionar esse dois parâmetros eu vou adicionar aqui ó o menos e passando aqui o primeiro parâmetro que é o password E aí eu vou colocar aqui eh a senha botar aqui PG eh 1 2 3 4 tem
aqui o outro parâmetro menos e passando aqui o user certo e aí eu vou botar Cub News certo e eu vou passar aqui outro que vai ser o post gre DB Opa tá certo d ah não tá certo tá certo dá certo né post G DB bota aqui Cub News beleza e agora Quase que eu dei fiz errado aqui né o Run é lá atrás né esse Copi Qual é ótimo né Para dar umas zoadinha Mas tudo bem E aí beleza tem aqui o comando vou passar aqui todos os parâmetros E aí eu executo esse
cara e aí Olha mudou mudou a parada só que o que que acontece aqui deu um outro problema né porque ele travou aqui o meu terminal se eu viro aqui no outro terminal e executar docker container Opa container LS tá lá meu contêiner tá em execução mas ele travou aqui o meu terminal a acontece que eu não passei o parâmetro para ele rodar em background então aqui eu vou dar um CRL C certo e eu vou botar esse cara para executar o mesmo comando só que passando um outro parâmetro adicional que é o menos D
para ir rodar em modo detested ou modo Dimon para ir rodar esse contêiner em segundo plano em background E aí eu executo Olha lá beleza ele me passou aqui o ID E aí OK conseguindo agora rodar se eu vir aqui agora ó docker container LS op lá tenho meuer em execução agora el tá tralhando com uma porta 5432 que é a porta padr do post e El tá executando Beleza então agora eu tenho umco de dados post gre rodando na minha máquina sem instalar nada e olha a velocidade que eu criei isso muito muito rápido
questões de segundos eu subi um banco de dados você não consegue fazer isso tendo que fazer instalação e Parará aquela coisa toda não consegue não consegue Olha como ajuda o docker então Eh beleza eu tenho aqui o banco Mas agora como é que eu faço para acessar esse cara lembra que eu falei que o banco de o o contêiner é ele é criado ele é executado de forma isolada e eu só comunico o meu contêiner um com o outro ou com a minha máquina caso eu queira Pois é em momento nenhum eu fiz isso em
momento nenhum eu defini aqui que esse contêiner ele vai ser acessível aqui pela minha máquina ou por outro contêiner eu não fiz isso então esse contêiner aqui eu não vou conseguir acessar a não ser que eu entre aqui dentro del e Execute em modo interativo e tudo mais mas não é isso que eu quero eu quero rodar a minha aplicação aqui local na minha máquina como se eu estivesse com o banco de dados instalado então para isso eu vou ter que executar de novo aqui o mesmo comando só que passando um parâmetro a mais que
é o parâmetro menos P para eu fazer um publish de porta ou que a gente chama também de port bind um vínculo de porta com a minha máquina e aí e o que que vai acontecer aqui eu vou criar o contêiner aqui na minha máquina certo vou criar aqui o contêiner na minha máquina com o post gre certo rodando aqui eh o post certo e aqui o post ele vai tá rodando dentro do contêiner Ok e utilizando aqui a porta 5432 certo E aí o Men P esse publish de porta ele vai fazer o quê
ele vai vincular a porta aqui da minha máquina pode ser a 5432 também E aí todo o acesso a essa porta local da minha máquina vai na verdade acessar a porta do contêiner E aí eu consigo acessar como se tivesse local host E aí para isso eu vou passar o - p e Vou definir a porta aqui da minha máquina que eu quero utilizar dois pontos a porta aqui Opa 543 2 que é a porta aqui eh do contêiner Quase que eu fiz errado e aí se eu executar vamos ver ó lá e criou de
novo docker container LS tá lá eu tenho agora dois post rodando na minha máquina um é acessível o outro não Ó você vê que que muda e agora se eu vir aqui eu posso por exemplo abrir aqui o de biver que é um client de banco de dados e acessar aqui né Eh a minha máquina Ou melhor o meu banco de dados certo vamos lá pegar aqui e agora como é que eu faço para acessar aqui que se você não usa esse client aqui eh esse carinha aqui o de beaver ele é um client de
banco de dados tá gratuito ele tem uma versão community que é gratuita recomendo você instalar se você não tiver tá E aí eu vou fazer o seguinte eu vou instalar ou melhor eu vou criar uma conexão aqui nova tá com o post gre vou avançar aqui e colocar as informações de acesso no caso aqui eh o nosso o nosso endereço é local ao host porque eu vou estar acessando Pela Porta da minha máquina vai ser a 5432 só vou mudar aqui os parâmetros do banco que vai ser Cub News né o nome do banco vai
ser aqui o usuário eh também vai ser Cub News e a senha PG 1 2 3 4 se eu testar aqui a conexão ó lá conectou dou um concluir ele conecta aqui no meu banco tranquilamente e aí vamos agora eh aqui no caso eh acessar aqui a aplicação galera tá pedindo para eu aumentar aqui o zoom infelizmente eu não consigo dar zoom aqui nesse carinha mas eu já vou sair dele dele aqui ok ok eh eu vou voltar aqui pra minha aplicação e aqui se eu vir aqui eh na minha aplicação mesmo eu posso vir
aqui ó e rodar esse cara para rodar a aplicação essa aplicação Como eu disse ela é uma aplicação em node né e utiliza o banco post gre aqui o Cub News ele tá utilizando o Express e eu tô utilizando aqui e o sequelize como ferramenta de banco de dados de ORM aqui para acessar o banco de dados e aqui para parametrizar né as informações do banco eu tenho aqui ó o arquivo models poost PJS E aí tá aqui né os parâmetros ah Fabrício Mas putz eu poderia ter esse cara num Factory e tal sim galera
o foco aqui não é o código o foco aqui é o uso do Dock eu tenho toda a certeza que esse código poderia estar melhor estruturado mas o objetivo aqui não é analisar código é desenvolver e entender a funcionalidade e o objetivo do Doc beleza então aqui eu tô utilizando ó a definição Cub News Cub News senha eh PG 12234 local host e a porta 5432 já tá configurado ali com o que é necessário para executar aqui a aplicação e o banco então eu vou executar esse cara aqui local é importante Se você for fazer
aí o no seu na sua máquina no seu ambiente é importante você ter o o node JS instalado eu no caso aqui eu tenho o node versão 20.15.1 tá então é importante você ter Aí caso você queira executar ah Fabrício eu não tenho aí e tal não trabalho com desenvolvimento ou não trabalho com desenvolvimento em node não tem problema assiste aqui a aula que depois a gente vai executar esse cara em contêiner E aí não vai fazer diferença não vai fazer diferença na hora de você eh executar aqui beleza show de bola legal então agora
vamos lá eh tem aqui né o meu node e agora eu vou fazer o seguinte eu vou entrar aqui no diretório do projeto né vou entrar aqui no Cub News 02 Cub News tem aqui ó o src CD src e agora que que acontece aqui se eu der um LS eu tenho aqui o meu código né E aí eu vou fazer o seguinte eu vou como eu vou executar esse projeto primeiro passo aqui é baixar as dependências do projeto E aí para isso eu vou utilizar o npm instal onde eu vou baixar todos os pacotes
que eu vou utilizar aqui no projeto npm instal ele vai fazer aqui a execução beleza ó deixa ele fazer Ok consegui aqui e Executar a minha aplicação aqui local beleza show de bola então eu dou um Clear E aí agora eu vou executar aqui ó e o comando eh node servers server JS beleza vamos lá aqui ó ele fez aqui a execução beleza e aí agora se eu vir aqui eu consigo Rod a minha aplicação a minha aplicação ela tá rodando na porta 808 aqui ó e se eu vir aqui agora cadê local host 808
Olha lá eu tô rodando agora a minha aplicação certo e aí se eu vir aqui novo post boto aqui ó teste teste teste op não é aqui no botão embaixo faz certo que dá certo né teste teste e teste e aí eu salvo aqui ó lá eu consigo Agora acessar minha aplicação E se eu for aqui no de biver e visualizar dar um refresh aqui ó atualizar lá eu tenho a tabela e eu consigo aqui ó ver os dados aqui ó eu tenho um registro Tá pequeno cons zo nesser aqui o dado eu tenho aqui
a informa Beleza então ol S que irado que a gente fez a gente consegiu Rod minha aplicação o cubs no ambiente local uando banco deados queia um recurso que eu teria inst mas eu tô usando aqui containers do aqui ó se eu vir aqui docker container LS ó lá tá aqui o meu contêiner em execução no caso é esse aqui né E aí eu vou fazer o seguinte eu vou deletar esses dois contêiners para deletar um contêiner eu vou utilizar aqui ó o comando docker container RM E aí eu passo o ID aqui do contêiner
colo aqui o ID se eu executar ele vai dar um erro por quê para remover um contêiner eu preciso antes parar esse contêiner E aí eu posso utilizar o docker container Stop passando aqui o ID E aí ele para E aí eu executo o RM ó lá funciona se eu der um LS agora aqui ah lá só tem um ou eu posso executar aqui eh o docker contêiner RM - F E aí ele executa aqui a exclusão de forma forçada ele dá um Force aqui na exclusão e ele vai deletar aqui se eu for aqui
agora ele não tem mais o contêiner E aí se eu atualizar aqui agora eu não consigo acessar o banco de dados ó lá banco de dados tá fora por quê Porque o meu contêiner foi encerrado eu não tive que desinstalar nada eu não tive fazer nada só matei o contêiner Quero rodar de novo né Quero rodar de novo que que eu vou fazer mesmo comando que eu usei antes Aqui ó Cadê Opa tá aqui ó Cadê vamos lá cadê tá aqui ó executo esse cara se eu vir aqui ó lá eu acesso o banco de
dados novamente ah Fabrício mas pô Cadê minha tabela tabela saiu minha tabela foi excluída se eu executar aqui de novo a aplicação né ele vai fazer todo processo de novo e aqui ó nem tem o post é rodando ele não tem dado nenhum por quê Porque os dados daquele daquele contêiner que eu tinha antes eh foram embora né Por quê Porque o contêiner é que tinha essas informações matei o contêiner matei as informações pô Fabrício mas eu não consigo manter as informações consegue aula dois Amanhã a gente vai falar sobre o volume e a gente
vai entender melhor como fazer isso como garantir que os dados não vão ser perdidos mas aqui ó eu venho aqui teste teste teste e aqui ó salvar a ele vai lá ó e salva de novo beleza e aí eu consigo rodar aqui a minha AP Ok legal então eu consegui aqui e executar minha aplicação local né e rodar com o banco de dados mas pô eu quero encerrar aqui essa aula fazendo você executar uma aplicação realmente em contêiners fazendo com que a aplicação ela seja executada em contêiners E para isso para poder pegar aqui uma
AP e rodar em coners eu preciso utilizar o recurso de criação de imagem porque já que eu quero pegar uma aplicação e rodar no contêiner primeiro eu tenho que criar a imagem dessa aplicação preciso criar ali eh a imagem que eu vou utilizar como base para rodar essa minha aplicação Beleza então é isso que a gente vai fazer mas que que acontece eu não quero eh começar pelo Cub News por quê Porque o Cub News ele é um projeto que depende do banco de dados e a gente não vai hoje né subir tudo criar todos
os contêiners com post grit tudo mais para rodar a aplicação Cub News eu separei aqui um projeto que utiliza basica mesma basicamente a mesma estrutura do CUB News que é um projeto conversão temperatura é um projeto web também utilizando nodejs utiliza aqui o Express que é o mesmo Framework web que a gente utiliza aqui no Cub News para usar como base aqui com vocês para rodar aqui a aplicação em imagem então aqui a gente vai fazer todo o processo igualzinho a gente fez aqui no Cub News só para você ver eu vou entrar aqui ó
cd01 conversão temperatura aqui ó eh eu tenho aqui o src e eu vou executar da mesma forma eu vou executar o npm install aqui para baixar as dependências do projeto e eu vou executar aqui ó o node server JS aí se eu vir aqui ó eu tenho aqui ó o conversão temperatura el conversa Celsius para faren High e far R para Celsius Beleza se eu botar aqui ó eh 50 beleza 122 se eu botar fen aqui 122 ele vai convers vai converter e vai dar 50 Beleza então a gente vai utilizar esse cara aqui como
base e como é que eu faço para criar imagem de uma aplicação para criar a imagem de uma aplicação eu preciso definir a forma que eu vou fazer para construir essa imagem como é que eu faço para construir uma imagem e aí para isso eu vou utilizar o docker file o docker file ele é um arquivo onde eu boto todo passo a passo para criar a imagem de uma aplicação para poder criar ali a minha o meu sistema de arquivo que vai ser utilizado pelo contêiner Ok então aqui a gente vai fazer isso Beleza eh
Então agora eu vou criar o docker file para criar o docker file eu vou colocar um arquivo aqui a mais tá no meu projeto E aí você pode colocar no mesmo nível aqui do seu código não tem problema nenhum e esse arquivo ele vai se chamar docker File mesmo vou botar aqui dessa forma Beleza então Seguindo aqui esse padrão docker file eu coloco aqui dessa maneira aqui e agora eu preciso colocar todo o passo a passo para criar essa minha imagem para criar aqui a imagem com tudo que é necessário para executar a minha aplicação
primeiro ponto essa minha aplicação Ela utiliza o nodejs é uma aplicação que usa o nodejs então a minha a minha imagem ela precisa ter o nodejs e sempre que eu vou desenvolver ali vou criar uma imagem eu preciso definir uma imagem base né Ou seja eu preciso definir a partir de qual imagem eu vou começar a minha imagem do projeto Lembra que eu falei que todo contêiner ele tem como base uma imagem aqui o princípio é o mesmo toda vez que eu vou criar uma imagem eu vou utilizar uma imagem como base e para fazer
isso eu vou utilizar aqui o from o from é onde eu defino Qual é a minha imagem base certo E como eu tô querendo criar uma aplicação e em node eu preciso ter o node AD faz sentido né eu vir aqui no Dock Hub certo e procurar aqui essa imagem e aí eu posso procurar ó por exemplo node vamos ver aqui o que que vai acontecer beleza aqui ó eu tenho aqui agora ó o node aqui que é a imagem oficial que eu tenho aqui o node JS instalado então eu posso vir aqui ó pegar
o nome node deixa eu dar um zoom aqui maior e colocar aqui from node dessa forma e aí eu tô falando olha a minha imagem base é a imagem do node Ok e agora eu vou definir aqui uma outra instrução no meu docker file eu vou utilizar aqui o workar o work dear ele define o meu diretório de trabalho ele define em qual diretório que eu vou adicionar os arquivos dentro da minha imagem certo aqui é basicamente Como se eu tivesse fazendo aqui um CD né no diretório por exemplo barra app e depois executando aqui
ou melhor executando aqui um mkd e barra app aqui com o diretório e depois executando um CD barra app barra eh basicamente o workd faz isso aí cria o diretório e entra dentro dele então aqui eu vou botar work dear bar app dessa forma aqui ok depois disso eu vou fazer aqui eh o processo de instalação das dependências para minha aplicação eu vou baixar aqui o node modules que é que são as dependências que eu eh baixo quando eu executo o npm instal Então eu preciso baixar essas dependências mas para baixar essas dependências eu preciso
utilizar aqui eu preciso saber quais são essas dependências e onde é que eu tenho essa informação eu tenho aqui ó no package Jon Se você olhar aqui o package.js on ele tem todas essas dependências ele tem todas essas definições do que é necessário para rodar a minha aplicação então eu posso vir aqui e executar o npm instal desde que eu tenho o package Jon E aí para isso o que que eu vou ter que fazer eu tenho que pegar esse arquivo package Jon e copiar para dentro da minha imagem e aí para isso eu uso
o copy certo e aí eu vou vir aqui certo e vou botar o arquivo package Jon colocando aqui pro meu diretório corrente na verdade eu vou botar aqui o package asterisco Jon onde a gente vai pegar aqui o o arquivo package package Lock e colocar aqui dentro da minha imagem e aí depois eu posso executar o npm install mas eu não vou colocar assim simplesmente npm inst eu ten que passar aqui a instrução no docker File para ele executar isso aqui para mim E aí eu tenho aqui o Run npm install certo npm instal beleza
show de bola E aí agora que eu tenho essas dependências no meu na minha imagem eu posso copiar o resto dos arquivos necessários E aí eu venho aqui coloco aqui dessa forma beleza Copie coloco aqui dessa forma Ok ele vai copiar todos os arquivos aqui para dentro da imagem ah Fabrício Por que que você não fez o copia aqui em cima e tal já executou o npm instal boas práticas de instrução de imagem eu vou falar sobre isso na aula dois Amanhã a gente vai falar sobre isso vou falar mais sobre boas práticas de construção
de imagem beleza e aí agora né com isso aqui com o cop que que a gente vai fazer eu vou executar aqui o comando CMD E aí aqui ó eu vou executar o comando de inicialização do meu contêiner lembra é que eu o coloquei aqui né o npm Ou melhor o comando node server e PJS e executei aqui ó lá e aí eu tive aqui o meu servidor rodando né Esse comando aqui é o comando de inicialização né da minha aplicação node server JS É o comando de inicialização da minha aplicação então o que que
eu vou colocar aqui no cmd Esse comando aqui aqui que vai inicializar o meu contêiner então aqui o CMD ele é definido com o comando de inicialização do meu contêiner beleza show de bola Beleza então Fabrício tá pronto tá pronto essa aqui é uma estrutura base para rodar a minha imagem para poder ou melhor para criar a minha imagem e depois rodar o meu contêiner para criar depois o meu contêiner baseado nessa imagem Beleza então agora o que que eu vou fazer aqui eu vou executar o comando para construir a minha imagem que é o
comando docker build sempre que eu vou criar minha imagem eu vou utilizar o docker build Ok E aí eh com o docker build que que eu preciso passar aqui como parâmetro eu preciso passar o nome da minha imagem o arquivo de construção e o contexto paraa construção que que é isso vou explicar agora eh o nome da imagem é o nome da imagem em si eu coloco aqui ó eh com o parâmetro - T certo e aqui eu vou colocar o nome da minha imagem que vai ser conversão temperatura beleza e aí agora que que
eu vou fazer aqui eu vou definir o docker file que vai ser o o arquivo que eu vou utilizar para construção e o último parâmetro que é o contexto Na verdade ele é o diretório que eu vou enviar pro docker Dimon para poder fazer a construção da minha imagem então aqui no docker build eu sempre vou passar o nome aqui da minha imagem o arquivo de construção e aqui e o o meu diretório que eu vou enviar pro docker demmon para ele construir a minha imagem certo sempre que eu vou construir a imagem eu tenho
que passar também esse contexto e é importante você passar o diretório com tudo que é necessário para construir a sua imagem Beleza então agora executo aqui e ele vai fazer todo o processo para mim vamos lá beleza a lá tá fazendo aqui a construção vamos lá deixa aí terminar demora aqui um tempinho deixa terminar aqui a construção enquanto isso pessoal quero saber o que vocês estão achando aí coloca aí nos comentários que que vocês estão achando dessa aula e não deixa de se inscrever no canal dar um like no vídeo compartilhar lá no Linkedin certo
ah lá ó ele criou aqui a minha imagem e agora eu posso utilisar aqui o comando docker image LS está as minhas imagens aí eu vejo aqui ó conversão temperatura post gre Ubunto hello world e todas as imagens que eu tenho aqui beleza show de bola e aí legal então pô Fabrício eu já posso executar essa minha aplicação aqui e utilizando o o docker Posso rodar minha aplicação aqui em contêiner posso posso vir aqui ó docker con Run menos it Ou melhor não preciso aqui do menos it eu posso passar aqui o- D certo e
colocar aqui também e o menos e Men P passando aqui a porta que eu vou utilizar como a minha aplicação utiliza a porta 80 né eu rodo aqui minha aplicação na porta 80 eu vou fazer o mapeamento utilizando a porta 8080 e aqui a porta 8080 igual a gente vai fazer na aplicação Cub News que a gente vai fazer na próxima aula beleza e aí agora eu venho aqui docker container Run - d- p e aqui eu passo Eh o meu projeto o meu a minha imagem temperatura certo executo Ó lá ele vai executar aqui
né o meu o meu contêiner se eu botar aqui ó docker docker container LS tá lá ó eu tenho aqui a minha aplicação rodando em contêiner Se eu der um refresh aqui vamos lá cadê local host 8080 tá lá ó minha aplicação rodando e você se tiver feito aí todo o passo a passo também vai conseguir fazer aí também certo ó botar aqui 50 converter aqui dá 10 botar aqui o valor 10 ele vai para Opa fiz errado aqui C Vou botar aqui 50 122 F ele vai botar aqui se botar aqui 122 ele vai
botar aqui 50 beleza show de bola pessoal show de bola tentem aí depois agora vamos fazer outra coisa Outro ponto importante aqui eu vou executar aqui ó o docker container LS tem aqui o conversão temperatura tem aqui o po também eu vou matar esse cara se eu vir aqui ó doc coner RM Men F coloco aqui o meu ID executo aqui se eu der um refresh Opa se eu der aqui um refresh ah lá ele o gerenciamento aqui ó ele matou o contêiner meu processo já foi eliminado e aqui a minha aplicação não tá mais
rodando se eu quiser rodar de novo ven aqui container run ah lá se eu rodar de novo beleza e aí você vê que aqui ó o ID é diferente o contêiner aí ele é diferente certo beleza pessoal eh acabou aqui não a gente tem muito mais coisas para ver em relação ao docker quer ver um ponto aqui muito importante eh a forma que eu construí aqui agora a minha aplicação que eu tô rodando aqui o meu projeto eu tô trabalhando aqui de forma local né a minha imagem é Ela tá aqui ó se eu botar
aqui ó docker container ou melhor docker image Ls e essa minha imagem ela tá local tá aqui na minha máquina se eu quiser rodar esse cara em um outro ambiente né se eu quiser compartilhar com você se eu quiser rodar no ambiente de cloud E por aí vai e eu tenho que pegar essa minha imagem e colocar no repositório eu tenho que colocar esse cara num régistre pra gente poder e enviar versionar e compartilhar essa imagem e a gente aqui tá trabalhando só com a imagem né da aplicação conversão temperatura eu quero rodar aqui a
minha aplicação aplicação Cub News mas para rodar essa aplicação em contêiners utilizando aqui eh o contêiner com a aplicação e o post gre eu tenho que most mostrar para vocês outros recursos do docker como Network volume e tem muito mais coisa para você v Mas por hoje eu vou encerrar Beleza a gente vai trabalhar aqui com a imagem né e na próxima aula amanhã às 7 horas eu vou mostrar para você como pegar essa imagem tá enviar para o seu Dock H pra gente dar esse cara pra gente colocar esse cara no Dock Hub e
a gente vai evoluir aqui na construção do CUB News E aí você vai aprender mais sobre Network vai aprender mais sobre volume docker compose e outros recursos certo aqui a gente vai eh trabalhar aqui o objetivo da aula dessa primeira aula é dar os passos básicos do Doc mas cara tenha certeza que o conteúdo que eu passei aqui para você você já consegue fazer bastante coisa né você consegue colocar um banco de dados para rodar você consegue rodar um rabit MQ você consegue rodar aí muita coisa mas é o primeiro passo Beleza amanhã a gente
vai continuar Ok E aí eu vou falar mais sobre como utilizar doc na sua carreira como você pode utilizar no seu dia dia para ser mais eficiente e contar um pouco mais sobre a minha evolução com o docker certo agora ponto importante não deixa de dar um like no vídeo se inscrever no canal e cara Tira uma foto aqui agora compartilha nas suas redes sociais traz mais gente aqui pro Canal amanhã a gente teve aqui o pico acho que foram 120 pessoas 120 e poucas pessoas cara hoje pega aí amanhã também compartilha aqui essa Live
fala que Putz tá rolando essa aula iradíssima aqui sobre Dock e traz mais gente para cá que eu tenho certeza que aula dois vai explodir a sua cabeça que a gente vai botar a aplicação Club News para rodar em contêineres beleza e compartilhando também lá no Doc hest e tudo mais beleza bom galera é isso eu quero aí o feedback de vocês quem tiver pergunta coloca aí que eu vou responder aqui agora vou tirar aqui as dúvidas e comenta aqui embaixo se você tiver dúvida tiver vendo a gravação deixa eu dar uma olhada aqui eh
deixa eu ver aqui e o Marcos perguntou como ele pegou o ID do host mesmo ele pega o ID do contêiner então aqui ó se eu compartilhar aqui a minha tela e aqui ó ele pega o o host é o ID do coner Ó docker container LS aqui ó eu coloco aqui e eu tenho aqui o mesmo host certo e vai ficar aqui beleza e deixa eu ver aqui se a aula vai ficar salva vai e o código O código do da aula tá aqui certo eu não vou subir aí vou falar uma coisa para
vocês eu não vou subir agora o docker file eu quero que vocês exercitem isso tá porque se eu colocar agora o docker file aí vocês vão botar lá vão copiar e colar e vocês não vão aprender eu quero que vocês assistam aqui a aula e exercitem beleza mas o repositório tá aí vai tá aí no no primeiro comentário mas o DOC fy eu quero que vocês exercitem é importantíssimo vocês exercitarem mas o projeto tá aí já disponível para vocês tá eh o jovar jando Ele perguntou qual ferramenta é utilizada para scanner de imagens e corrigir
habilidades cara tem diversas hoje no mercado você tem eh o docker Scout Você tem o triv tem diversas ferramentas que podem te ajudar beleza Essas são algumas Beleza eh deixa eu ver aqui acho que não tem mais dúvidas beleza bom acho que é isso deixa eu ver aqui se tem mais dúvidas aqui eh beleza show de bola bom galera Então é isso eu espero que vocês tenham gostado aí depois eh me deem o feedback me marquem aí nas redes sociais comenta aqui embaixo e a gente se vê amanhã às 7 horas da noite paraa nossa
segunda aula pessoal Muito obrigado aí um abraço até amanhã valeu