Aula 1 - Desafio Docker | Desafio DevOps & Cloud

7.18k views15139 WordsCopy TextShare
Fabricio Veronez
Seja muito bem vindo e muito bem vinda ao Desafio DevOps & Cloud! Durante essa semana, você vai apr...
Video Transcript:
Fala aí beleza seja muito bem-vindo e muito bem-vindo ao desafio devops Cloud eu sou Fabrício Veronez E durante essa semana eu vou te mostrar como criar uma solução devops de ponta a ponta e conquistar um dos perfis mais valorizados e bem pagos do mercado de ti Esse é um evento bastante objetivo direto ao ponto e com muito rzone para você já sair daqui com o seu primeiro projeto de portfólio mas antes eu preciso te contextualizar bem rápido sobre porque eu resolvi fazer esse desafio nos últimos anos o cenário de ti passou por transformações gigantes que
impactaram profundamente a forma como as empresas trabalham e principalmente como contratam profissionais durante a pandemia nós vimos uma corrida desesperada das empresas para se adaptarem ao Home Office migrando tudo na correria pra nuvem e o resultado disso um Boom no mercado de tecnologia com a oferta massiva de vagas e salários muito acima da média mesmo os profissionais que não dominavam Tecnicamente as ferramentas mais complexas conseguiam se inserir em bons projetos e empresas ganhando salários consideráveis Só que essa explosão de contratações trouxe um grande problema muitas dessas implementações feitas à pressas e sem cuidado técnico necessário
geraram diversos problemas muitas empresas enfrentam desafios como falhas constantes em produção indisponibilidade de sistemas ciclos de Deploy demorados e desgastantes além é claro do peso de custos desnecessários com a nuvem e um aumento significativo das vulnerabilidades de segurança e ainda precisam lidar com folhas de pagamento infladas enquanto percebem que muitos dos profissionais contratados durante esse Boom não conseguem entregar o nível técnico esperado e por isso esse desalinhamento gerou uma onda de layoff e quem perdeu mais foram justamente aqueles profissionais que além de não terem se atualizado não possuíam as habilidades necessárias para se manterem em
grandes projetos de grande importância o cenário de contratações Mudou drásticamente as empresas passaram a buscar profissionais mais experientes e Tecnicamente capacitados capazes de resolver problemas com maior velocidade e com precisão vimos também uma redução significativa de vagas para Júniors e a régua nos processos seletivos aumentou bastante mas tudo isso por quê Porque a complexidade dos sistemas aumentou muito as empresas exigem cada vez mais escalabilidade alta disponibilidade e automação principalmente com o aumento das aplicações críticas que não podem falhar ou ficar fora do a isso trouxe uma demanda crescente por profissionais que entendam de todo o
fluxo de entrega de ponta a ponta para garantir entregas rápidas seguras e sem falhas e é aqui que a coisa pega que se você quer continuar competitivo no mercado de ti não basta mais saber o básico se você não domina as práticas mais modernas como automatizar ambientes otimizar processos e garantir a escalabilidade de disponibilidade e resiliência dos sistemas você definitivamente corre o risco de ficar para trás devops Cloud computing e automação de processos monitoramento avançado dos sistemas esses não são mais só diferenciais são habilidades necessárias essenciais para se manter competitivo no mercado fora que quando
você de fato consegue implementar as soluções que dão mais eficiência confiabilidade e estabilidade às aplicações ou consegue resolver e até prevenir problemas com muito mais facilidade e velocidade o valor que você passa a ter pro projeto e pra empresa é gigante e você se torna um profissional estratégico e necessário vai por mim a partir disso os resultados chegam naturalmente tanto a nível financeiro quanto a nível de realização profissional porque você se torna de fato o profissional que as empresas tanto procuram e cada dia mais é difícil de encontrar e cara eu só falo isso porque
nos últimos anos eu pude participar diretamente da evolução de milhares de alunos pelo meu treinamento devops pro e também pude contribuir na carreira de centena de milhares de profissionais de ti nas imersões e conteúdos que eu disponibilizo aqui nas redes sociais com isso eu consegui entender na prática as habilidades que realmente fazem a diferença na carreira dos profissionais que decolam no mercado de ti e é exatamente por isso que nós estamos aqui nesse desafio para te ajudar de que guie essas habilidades e não só se manter no jogo mas também conquistar um perfil altamente desejado
e também remunerado pelas empresas Então deixa eu te falar como vai funcionar e tudo que você vai aprender nesse desafio vão ser cinco aulas que se complementam e cada uma delas ensina uma parte do pro projeto e alguma das habilidades fundamentais que vão fazer toda a diferença na sua carreira então não pula e não perde nenhuma aula fechado Além disso nós teremos três desafios práticos ao longo da semana para você cumprir e enviar pra nossa equipe e sendo aprovado você vai receber uma bed exclusiva para compartilhar no seu LinkedIn e aumentar sua visibilidade no mercado
ao longo dessa semana nós vamos construir uma solução semelhante a essa aqui onde nós vamos ter um e-commerce uma loja virtual escrita em Python utilizando bancos de dados e postgre SQL e o objetivo é pegar essa aplicação modernizar ela em contêiners e montar toda a solução de entrega contínua executando essa aplicação num cluster kubernetes e monitorando também essa aplicação Então esse projeto vão ter algumas etapas a primeira etapa do projeto é trabalhar com o DOC para você Ender como pegar uma aplicação e trabalhar com ela baseada em contêiners depois disso nós vamos utilizar o kubernetes
para executar essa aplicação em um ambiente produtivo depois vamos pegar essa aplicação que roda no kubernet e colocar no ambiente de cloud utilizando a aws depois vamos automatizar todo o processo de entrega utilizando o pipeline CCD com github Actions e para encerrar vamos orar essa aplicação utilizando Prometeus e exibindo as informações no grafana e na aula de hoje você vai aprender como funciona o docker que é atualmente a principal ferramenta de criação e execução de contêineres e nós vamos migrar a nossa aplicação para contêiners pra gente conseguir a padronização O isolamento e a portabilidade que
nós estamos precisando não entendeu o que esses termos significam Calma relaxa que já vai vai clarear então sem demorar mais aqui vamos passar pro conteúdo técnico mas antes de entrar de fato no dokia eu preciso que você entenda um passo anterior que vai nortear todo o seu projeto Ou seja eu preciso que você entenda bem o que é devops como ele funciona quais as ferramentas mais utilizadas nesse ecossistema incluindo o DOC e como suas práticas geram soluções inteligentes que vão literalmente transformar as suas entregas e consequentemente a sua carreira Então bora falar sobre isso ah
mas presta noção aqui também porque muita gente que acaba reprovando entrevistas não sabe realmente responder essas questões Então cola aqui que isso aqui é muito importante beleza o termo devops ganhou notoriedade em 2009 no primeiro evento devops Day e a intenção dos seus idealizadores era promover a ação das equipes envolvidas na produção de software porque existia um grande problema com a abordagem tradicional que é o modelo Cascata ou também chamado de Waterfall já que cada equipe desenvolvimento e infraestrutura se preocupava só com o sucesso das suas tarefas específicas sem pensar no sucesso do projeto como
um todo E além disso nesse modelo cada equipe tem seus próprios processos métricas recursos e Prior idades E com isso é muito comum uma equipe Ignorar as necessidades da outra o que acaba prejudicando e atrasando o projeto pareceu muito familiar para você isso Quantas vezes você já viu a equipe de Dev jogar culpa na equipe de infra e vice-versa quando dá problema em um projeto Pois é né com o devops cada time tem uma visão Clara do impacto que as suas mudanças causam no produto final e no ambiente de produção s o que incentiva a
melhoria contínua a comunicação e a responsabilidade compartilhada por isso devop surgiu para acabar com essa distância entre as equipes e promover a colaboração entre elas compartilhando as mesmas metas métricas processos e recursos Outro ponto importante é que o fluxo de produção de software no modelo Waterfall é muito burocrático os blocos de entrega são muito grandes e as respostas para eventuais problemas acabam demorando muito e pô fala sério com o cenário diverso e dinâmico que nós temos hoje no mercado de ti tudo precisa acontecer muito rápido os testes a entrega as atualizações tudo isso é muito
importante quer ver um exemplo disso Você consegue imaginar o prejuízo que é causado quando um e-commerce fica fora do ar esperando uma atualização de versão ou quando uma entrega sobe paraa produção sem passar pelo teste e causa instabilidade ou pior a indisponibilidade do sistema cara não dá a gente até sabe que isso acontece bastante mas não tá certo e nem é uma conduta profissional você literalmente precisa trocar o pneu do carro com ele andando escalar automaticamente uma aplicação de acordo com a quantidade de requisições subir uma nova atualização sem Down time Executar a rotina de
testes automaticamente e por aí vai por isso devops é baseado em ciclos contínuos e curtos onde cada entrega é aprimorada e refinada Com base no feedback constante e como cada etapa desde o desenvolvimento até o Deploy é automatizada e integrada as novas versões são lançadas rapidamente corrigindo erros e implementando melhorias quase em tempo real continuar usando as mesmas abordagens tradicion só vai te gerar mais dor de cabeça com seus sistemas perdendo tempo e energia em uma rotina caótica e improdutiva tentando apagar incêndios e resolver problemas que poderiam ser evitados com as práticas de devops então
podemos definir devops como um conjunto de práticas e ferramentas para integrar equipes e otimizar processos com o objetivo de melhorar a qualidade de software acelerar o tempo de entrega e garantir a confiabilidade das aplicações em produção e cara só para você ter uma noção dos benefícios que devops proporciona não só nos projetos mas também aos profissionais que adotam essas práticas dá só uma olhada nessa pesquisa que mediu o resultado da implementação de devops no desenvolvimento de software a implementação de devops promove um tempo de lançamento de novos aplicativos no mercado 22% mais rápido que pelos
métodos tradicionais 65% das organizações notaram um melhor trabalho em equipe entre as equipes de desenvolvimento e operações após adotarem devops as falhas de implementação caíram 27 com devops melhorando a qualidade e a estabilidade do software 80% das empresas relataram uma melhor qualidade de software como um dos principais benefícios do devops a a produtividade dos funcionários aumentou 23% devido às práticas de devops o trabalho não planejado e o retrabalho foram reduzidos em 33% levando a um uso mais eficiente dos recursos o trabalho de resolução de incidentes melhorou após devops com 90% das empresas relatando soluções mais
rápidas a demanda por Engenheiros devops aumentou 40% colocando eles entre as cinco principais funções da tecnologia os custos de ti caem 25% com devops impulsionados por processos simplificados a satisfação do cliente melhorou em 75% das empresas após a adoção de devops 86% das organizações consideram devops essencial para as suas operações por esses e outros motivos que a metodologia tradicional vem ganhando o status de ultrapassada e vem perdendo força a cada dia cada vez mais as empresas estão adotando a nuvem contêiners e devops na produção de software pois possibilitam a agilidade nas entregas com a diminuição
dos blocos de entrega e do tempo de resolução de problemas além de facilitar muito a transição entre os ambientes de desenvolvimento homologação e produção de um software inclusive dá só uma olhada nesse gráfico divulgado pelo devops devops já é top um Framework utilizado atualmente Então cara para quem tá buscando crescimento na carreira em uma área sólida e com perspectivas enormes de expansão esse Com certeza é o caminho e não sou eu que tô especulando essa expansão aqui não diversas pesquisas já apontam esse crescimento exponencial pros próximos anos dá só uma olhada aí até 2033 o
mercado devops deve crescer cerca de 19% por por ano e ultrapassar 66 Bilhões de Dólares cara isso é muita coisa saber trabalhar com devops e as tecnologias envolvidas são habilidades urgentes e necessárias Agora não dá mais para você adiar inclusive você pode confirmar o que eu tô falando aqui fazendo uma busca rápida no Linkedin você vai ver que as grandes empresas e até mesmo as que não são de grande porte já exigem o conhecimento das tecnologias e ferramentas relacionadas a devops e a Cloud como pré-requisito paraa contratação e se você tá pensando que é só
para cargos específicos de devops como engenheiro devops ou arquiteto devops Cara você tá muito enganado busca aí por devops no no seu LinkedIn que você vai ver que diversos cargos como engenheiro de software arquiteto de soluções engenheiro de plataforma sre Tech Lead e até desenvolvedores de software já tem ali exigências de devops como pré-requisito e mais expande essa busca para fora do Brasil que você vai ver a quantidade de vagas disponíveis ou seja essas habilidades definitivamente te ajudam muito a conquistar uma vaga internacional seja presencial ou remoto ganhando em dólar Euro E por aí vai
como acontece com muitos alunos da formação devops pro que hoje trabalham pra gringa eu quero que você perceba um ponto aqui muito importante o mercado de ti Ele não tá mudando Ele já mudou essa chave já virou brother conhecer contêiners automação pipelines CCD monitoramento de aplicações Cloud providers e outros conceitos relacionados a devops e a Cloud já é uma realidade vai por mim se há uns se anos atrás quando eu mesmo comecei a me especializar nessa área já era interessante ter essas habilidades hoje sem dúvida é pensável E como eu sei disso cara em 2015
eu era desenvolvedor senior.net bem mediano e tava bastante desmotivado com a minha carreira tanto que eu larguei a ti por 2 anos mas depois resolvi voltar pra minha carreira de desenvolvedor só que dessa vez eu não queria mais ser um desenvolvedor no mercado eu decidi que eu seria um profissional de referência daí um amigo meu me sugeriu que eu estudasse sobre contêiners e doc e minha fundando em contêiners eu conheci o kubernetes e cara eu me apaixonei pela ferramenta e já com uma base sólida de conhecimento comecei a implementar soluções que geravam alto valor nos
projetos que eu atuei e finalmente comecei a me destacar no mercado e me tornei referência sendo convidado a dar palestras Treinamentos e consultorias passei a ser muito mais valorizado e o meu salário aumentou consideravelmente logo em seguida ampliando meus conhecimentos eu conheci devops e cara eu me apaixonei de novo porque vê as práticas os benefícios e as possibilidades que ele proporciona ao projeto e ao ambiente de trabalho e implementar as suas práticas com as entregas curtas a automatização de testes e também o Deploy além do monitoramento das aplicações me deu um novo gás e investi
pesado em me tornar um especialista em devops e cara isso me levou a um outro Pat profissional tanto na qualidade das minhas entregas quanto na minha visibilidade no mercado e aí depois de ver a transformação que esse conhecimento proporcionou na minha carreira eu resolvi passar pra frente para ajudar outros profissionais de tecnologia tendo inclusive recebido a premiação de Microsoft MVP e de docker Capitão pela contribuição e relevância na comunidade e cara é sério participar diretamente na ção de profissionais como você é sem dúvida nenhuma o que me traz a maior satisfação profissional atualmente porque ultrapassou
a minha evolução profissional e passou a ser também sobre todas as pessoas que eu posso impactar sacou são famílias inteiras impactadas pelos salários melhores e empresas melhores com ambientes de trabalhos mais saudáveis e colaborativos pelas oportunidades internacionais e pela realização profissional de cada profissional e da mesma forma que devops impactou a minha carreira e de milhares de alunos que me acompanham pode impactar A sua também então se você não quer ficar para trás e quer se posicionar como um profissional de Elite tendo acesso aos melhores projetos e as melhores empresas tá na hora de arregaçar
as mangas e aprender a trabalhar bem com devops e com Cloud e agora que você sabe o que é devops e entendeu Quais problemas ele se propõe a solução funcionar Deixa eu te explicar como ele funciona devop se baseia em cinco Pilares conhecidos pela sigla cms cultura automação LM medição e compartilhamento o primeiro Pilar a cultura ele fala sobre a mudança de pensamento e comportamento dentro das empresas Principalmente dentro das equipes para torná-las mais colaborativas e comunicativas entre si promovendo uma relação muito mais saudável entre elas com isso as equipes de infra e de desenvolvimento
ganham um certo empoderamento porque passam a poder sugerir algumas otimizações ou consertar pequenas falhas sem precisar interromper o projeto e retornar o erro para outra equipe por exemplo a equipe de desenvolvimento pode sugerir melhorias de desempenho baseada em práticas observadas em produção enquanto o time de infraestrutura pode a automatizar processos para reduzir o tempo de Deploy ajustando o ambiente para se adequar melhor às necessidades da aplicação Além disso o foco das equipes passa a ser a qualidade do produto como um todo e não mais no foco das tarefas isoladas E aí Dessa forma não se
espera que cada equipe Simplesmente faça sua parte e jogue o problema pra próxima mas sim que todas trabalhem em prol de um único objetivo a qualidade e eficiência do produto final no Pilar da automação devops defende a padronização e automatização dos processos repetitivos sempre que impossível aumentando bastante a produtividade da equipe evitando falhas humanas em processos manuais E também o desgaste e a desmotivação do profissional por executar os mesmos processos chatos o tempo todo direcionando o foco dele para áreas que demandam maior atenção como a otimização do software e a resolução de imprevistos quer ver
um exemplo disso no modelo tradicional Quanto tempo você leva para fazer o teste de uma release e executar o Deploy de uma aplicação algumas semanas Vai um mês e para replicar esse processo em outros ambientes muito tempo também não é já com as pipeline CCD ou seja de integração e entrega contínua esse processo dura poucos minutos outro Pilar importante é em relação ao conceito de lim devops defende o uso de gestão ágil no processo de criação de software paraa adoção de sprints de entrega ou seja aumentar a frequência e reduzir o tamanho dos ciclos de
entrega E aí dessa forma as soluções chegam muito mais rápido ao cliente e podem ser validadas e otimizadas com maior velocidade também fica muito mais dinâmico todo o processo o monitoramento e as também são pilares do devops já que o que não é medido não pode ser otimizado por isso as sessões periódicas de feedback e o cuidado na escolha das métricas a serem coletadas são fundamentais tanto paraa otimização de processos quanto pra otimização do próprio software e por fim o último Pilar do devops é o compartilhamento A ideia é que as equipes compartilhem entre si
conhecimentos e experiências bem cedidas ou não para proporcionar que a equipe inteira evolua com os acertos e com erros garantindo a melhora contínua esses elementos combinados formam a base do devops promovendo uma integração eficaz entre desenvolvimento e operações visando um ambiente de trabalho mais coeso e também muito mais produtivo agora vamos falar sobre as etapas do fluxo devops o fluxo devops tem diversas etapas que são representados pelo símbolo do infinito porque você sempre vai executar as etapas e recomeçar com novas otimizações para melhorar a entrega e ter mais recursos são oito etapas planejamento codificação build
teste release Deploy operação e monitoramento e aí a gente volta pro planejamento e tudo começa novamente em cada etapa do fluxo você pode adotar diversas Fas e é aí que normalmente bate o desespero sobre Quais delas você vai escolher Mas calma eu vou te ajudar a aprender as principais ferramentas do fluxo devops E hoje nós vamos começar com o docker Então bora lá lembra que eu falei que devops defende a automação de tarefas e a padronização dos processos e ambientes envolvidos no fluxo de criação das aplicações então é aqui que vão entrar os contêiners os
contêiners a a padronização e a escalabilidade e a migração de aplicações de ambientes de desenvolvimento teste produção fica muito mais fácil e muito mais eficiente quando a gente utiliza cont tênis Mas afinal de contas o que que é o contêiner ele é uma tecnologia que permite executar processos de forma isolada basicamente Você pode ter a sua aplicação microsserviço ou qualquer elemento da sua solução rodando sem conflito com outros processos na prática imagina esse cenário no desenvolvimento Você vai precisar montar toda sua stack para desenvolver um projeto e Isso inclui banco de dados mensageria linguagem de
programação e por aí vai no modelo tradicional sem contêiners você instalaria tudo no seu ambiente local e utilizaria por exemplo Digamos que você tenha que desenvolver um projeto utilizando o Python com banco de dados e mensageria com Kafka você teria que instalar tudo isso na sua máquina para poder começar a trabalhar e se depois você for ter um projeto totalmente diferente por exemplo utilizando node JS com mais Kelly Rabbit MQ você teria que desinstalar tudo para instalar esses outros componentes e aqui que contêiner brilha você pode executar tudo com uma linha de comando de forma
isolada e quando não precisar você elimina tudo com um comando Também depois de desenvolver a aplicação chega a hora de colocar em produção aí a equipe de operação recebe o pacote do projeto e a documentação e vão utilizar a documentação com todos os requisitos e configurações necessárias para colocar o projeto para rodar sem contêiners isso pode ser um problema porque diferentes aplicações T diferentes setups e pode gerar conflitos imagina rodar uma aplicação que precisa do Python 3.9 e um servidor que já tem um projeto com python 2.7 rodando tem chances de ter problemas e conflito
entre as aplicações E aí que entra a famosa frase na minha máquina funciona os contêiners resolvem isso usando a camada de isolamento para cada aplicação a sua aplicação roda num contêiner que contém todos os elementos necessários sem afetar ou ser afetada por Outras aplicações Além disso containers garante que a aplicação funcione da mesma forma em qualquer ambiente seja local servidores ou na nuvem por exemplo você pode desenvolver a sua aplicação localmente utilizando containers e depois rodar na aws no Google Cloud ou no eus sem nenhum ajuste adicional então resumindo Dock e containers oferecem isolamento portabilidade
velocidade na inicialização e consistência no comportamento das aplicações em diferentes ambientes são ideais para desenvolvimento ágil e eficiente como para executar aplicações em produção e facilitar o gerenciamento em cenários complexos como em microsserviços você pode até pensar que já viu isso antes no uso de máquinas virtuais mas tem diferença você pode ver na imagem a diferença que na virtualização eu tenho o hyperv em cima do meu hardware virtualizando as minhas máquinas virtuais e as máquinas virtuais precisam de um sistema operacional completo O que significa que você pode precisar de recursos adicionais para cada uma dessas
vms por exemplo uma máquina virtual pode consumir 1 GB de Ram e uma vcpu só pro sistema operacional enquanto no uso de contêiners Eu tenho um sistema operacional e o contêiner Engine ou seja ou Engine enfim ou seja o contêiner ele usa apenas o necessário para aplicação isso torna os contêiners muito mais eficientes em termos de uso de recursos e até de gestão porque eu não tenho um monte de sistema operacional para gerenciar e atualizar a velocidade na inicialização é um outro benefício crucial aqui nos contêiners diferente das máquinas virtuais que precisam inicializar um sistema
operacional completo um contêiner inicia em questões de segundo porque só carrega os componentes necessários para rodar a aplicação isso é extremamente útil em ambientes de desenvolvimento e produção onde a agilidade é essencial Quando pensamos em contêiners de cara vem o docker mas o docker ele simplificou a utilização dessa tecnologia existem outras soluções como podman lxd container D E por aí vai o DOC aí se destaca pela facilidade de uso e ampla adoção no mercado pensa no docker como o Bombril dos contêiners a Marc se tornou sinônimo do produto o docker ele permite que você crie
gerencie e distribua contêiners de forma muito mais intuitiva e eficiente para trabalhar com contêiners é essencial entender dois conceitos imagens e contêiners a imagem é um blueprint de um projeto contendo tudo que que é necessário para criar um contêiner e a partir dessa imagem você pode criar múltiplos contêineres cada um isolado mas funcionando da mesma forma de uma maneira Idêntica imagina que você tá criando aqui uma aplicação em Python como você vai fazer aqui hoje a imagem do docker paraa aplicação inclui o Python todas as bibliotecas e dependências necessárias e o código da aplicação para
ser executado quando você você executa essa imagem ela cria um contêiner que roda a aplicação exatamente como foi configurada independentemente do ambiente que ela tá sendo executada isso garante que o comportamento seja consistente em desenvolvimento teste e produção a arquitetura do docker inclui três elementos docker demmon docker client e docker register o docker Dimon ele gerencia as imagens contêiners redes e os volumes ele que gerencia e manipula os objetos do docker o docker client ele interage com docker Demon via linha de comando E além disso nós temos o docker regist que é o repositório de
imagens é onde se hospeda e compartilha as suas imagens o docker Hub é o serviço mais popular de registre ele pertence à própria docker vamos dar uma olhada em como esses componentes trabalham juntos quando você digita docker container Run ou docker R no terminal o docker client ele envia esse comando pro docker Dimon que então executa tarefa para criar o contener ele vai verificar se tem a imagem para criar o contêiner E caso não tenha ele vai no docker Hub que é o docker h e vai baixar e armazenar essa imagem depois que ele tem
a imagem ele cria e executa o contain e agora que você sabe os conceitos e arquitetura vamos pra prática ver como utilizar o docker para criar nossas imagens do jeito certo antes de começar aqui a trabalhar com o docker botar a mão na massa é preciso você montar aí o ambiente na sua máquina e tem alguns pré-requisitos pra gente continuar aqui a nossa aula primeira coisa você precisa ter o docker instalado na sua máquina no seu ambiente para fazer a instalação é só você vir aqui em docker.com entrar aqui em developer eh get started e
você vai direto aqui ó na parte de instalação já vai aparecer até aqui o download direto PR você fazer aqui ó você pode baixar o docker desktop é nas nos três principais sistemas operacionais PR Mac Windows e Linux e se você quiser saber mais sobre instalação você pode vir aqui do lado e ele vai mostrar aqui ó todo o passo a passo de instalação você tem instalação aqui ó no Mac no Windows e no Linux agora como é que você vai fazer em cada sistema operacional no caso do Linux você pode instalar utilizando o docker
Engine ou o docker desktop o docker desktop é uma ferramenta que não só facilita a instalação do ambiente docker na sua máquina mas tem outros recursos como docker scout tem como você montar ambiente de desenvolvimento tem extensões a gente não vai utilizar nada disso aqui então você pode utilizar o docker Dash toop ou você pode colocar o Engine o Engine enfim direto no ambiente Linux e no Mac não tem jeito você vai ter que colocar com o Dock Dash toop porque o Dock Dash toop aí prepara todo o ambiente para ter o suporte ao Dock
no caso do Windows você pode utilizar o Dock desktop ou você pode instalar o Engine direto no wsl se você tiver utilizando o wsl com uma distribuição lind inclusive recomendo que você faça dessa forma OK agora quando você vai escolher o Dock Dash toop e quando você vai fazer ali direto no Engine e o Dock desktop ele facilita muito a sua vida você ele vai criar o ambiente todo para você você vai ter uma interface gráfica ali para fazer o gerenciamento tem extensões deve containers e tem várias coisas ali que vão te ajudar mas isso
consome recurso computa ional então ele vai exigir um pouco mais de memória vai exigir um pouco mais de CPU se você tem uma máquina com pouco recurso computacional vai no docker Engine A não ser que você esteja utilizando o Mac agora se você quer ter uma experiência de desenvolvimento completa Aí você coloca o docker desktop Como eu disse você pode fazer instalação aqui ó no Mac e aí ele vai utilizar você pode utilizar Na verdade o chip Intel ou Apple no você vai escolher aqui também x86 ou é processadores arm já tem suporte a processadores
arm e o Linux aqui ele tem para todas as distribuições para as principais distribuições caso você queira instalar o docker Engine Direto você tem aqui ó em docker Engine ou Engine enfim né você tem aqui a instalação também dependendo do sistema operacional então se você tiver utilizando o Linux ou wsl lá e quiser fazer instalação Direto você pode vir por aqui certo então você vai ter que ter aí o docker instalado no caso aqui eu já tenho deixa eu até abrir aqui o meu terminal eu já tenho aqui instalado certo se eu vir aqui ó
docker já tá instalado opa Na verdade eu tenho que startar aqui porque eu tô utilizando o docker Dash toop só para você ver aqui enquanto ele tá abrindo Deixa eu botar aqui novamente ó aqui ó eu tô utilizando o docker desktop certo se eu vir aqui docker beleza ele já vai tá aqui rodando agora outra coisa que eu recomendo que você instale aqui eh quando você for trabalhar com o Dock tiver criando suas imagens e até também codificando você precisa ter um editor de texto né ou uma ideia enfim eu aqui vou utilizar em todas
as aulas o ves cara é uma ferramenta muito conhecida no mercado Provavelmente você já utiliza se você não utiliza Eu recomendo você utilizar e eu gosto muito cara praticamente todos os profissionais que eu conheço utilizam o vest code meus alunos e Minhas alunas também então Recomendo muito que você instale ah Fabrício não quero não gosto do vest code gosto de outro editor não tem problema você precisa ter um editor de texto Sem problema nenhum aí no caso se você tiver utilizando o vest code Eu recomendo deixa eu até abrir aqui eu recomendo que você instale
uma extensão aqui específica do vest code deixa eu abrir ele aqui Opa Acabei fechando ele mas deixa eu abrir aqui no diretório e aqui eu recomendo que você instale a extensão do Dock se eu vir aqui ó em extensions eu tenho aqui que a extensão do docker inclusive é uma vantagem do vs code né você tem a possibilidade de trabalhar com diversas extensões então aqui ó eu tenho essa extensão da docker da própria Microsoft recomendo que você instale o vs code e essa extensão aqui também você vai ver que ele tem autocomplete ajuda bastante aqui
na hora de criar docker files e tudo mais então com tudo isso aqui instalado com o docker instalado e com o vs code instalado também agora a gente pode ir pra parte prática R Zone criar os nossos contêiners então agora com o setup todo montado aí docken instalado vs code extensão ou editor de texto que você decidiu utilizar vamos começar aqui a criar os nossos contêiners o comando para criar e executar contêiners no docker É o comando docker opa docker container Run faz sentido né docker container quero executar Quero rodar docker container run existe também
o comando docker Run certo que é um comando mais simples você vai ver em algumas literaturas mais antigas o docker Run mas eu gosto de utilizar o docker container Run porque fica mais claro que eu tô executando ali um contêiner agora um ponto importante eu disse que todo contêiner ele tem como base uma imagem então junto com o docker container Run eu tenho que dizer qual vai ser a minha imagem que eu vou utilizar como base para executar o meu contêiner então aqui eu preciso colocar o nome da Imagem e não seria diferente né vou
utilizar aqui a imagem hello world certo então eu tô falando aqui pro docker olha docker cria e executa para mim um contêiner que vai utilizar como base a imagem hello world se eu der um enter aqui vamos ver o que que vai acontecer você vê que ele vai fazer ali um processo e no final ele libera o terminal aqui para mim mas o que que aconteceu aqui quando eu executei o docker container Run primeira coisa que o docker hos Ou melhor o docker demmon ele vai fazer ele vai verificar aqui se eu tenho a minha
imagem Hello w para o docker Deão criar ali o meu o meu contêiner ele tem que ter essa imagem aqui local no docker HOST como não tem essa imagem não tava aqui local na minha máquina ele foi lá no docker regist no caso o docker Hub baixou aqui a imagem localmente e aí criou o contêiner então aqui basicamente eu utilizei o docker client para falar com o docker demmon para criar o contêiner ele baixou a imagem lá do docker HUB que é o docker register e criou aqui todo aquele fluxo que eu disse aí antes
e como esse contêiner aqui é um contêiner simples né Ele simplesmente bota aqui um output na tela ele mostra aqui ó hello from docker coloca aqui umas instruções e depois que ele executa isso aqui o contêiner ele é encerrado então aqui eu executei o meu primeiro contêiner executei aqui junto com você o primeiro o contêiner e como é que eu sei que esse contêiner realmente foi criado e foi executado eu tenho o comando chamado docker contêiner LS que é utilizado para listar os contêiners então se eu executar aqui nada aparece por quê Porque o docker
container LS ele é utilizado para listar os contêiners ativos o que os que estão em execução aqui no caso esse contêiner ele foi encerrado Ele entrou em modo exited porque ele executou e depois foi encerrado para ver aqui o contêiner aqui listado eu tenho que executar o docker contêiner LS passando aqui o menus a E aí ele vai listar aqui o contêiner para mim á ele vai mostrar que eu tenho aqui ó um contêiner que foi criado com container ID aqui que tem a imagem hello world com o comando de inicialização barra Hello criado há
2 minutos atrás com status exited há 2 minutos atrás e com o nome aqui Happy e britain enfim com o nome aqui que ele gera aleatoriamente então se eu executar de novo aqui o comando Dock container Run mas aí agora eu vou fazer um pouquinho diferente eu vou passar aqui o name eu vou passar um nome aqui para ele mas utilizando aqui também o hello world que que vai acontecer Opa docker container Run hello world Ah deixa eu ver aqui que que aconteceu docker container run ah Putz falta o nome né meu contêiner certo executando
aqui de novo o que que vai acontecer ele vai executar novamente mas você vê que ele não processa aqui a imagem certo e ele ou melhor El ele Verifica que a imagem já existe aí não vai baixar aqui a imagem certo e vai fazer aqui o output e vai liberar aqui o terminal para mim se eu executar aqui de novo docker container LS Ó lá tá vazio se eu botar aqui o menos a ele mostra aqui de novo Só que ó agora o nome tá meu contêiner só lembra de fazer direitinho aí não faz que
nem eu de definir lá botar Flag name e não botar o nome faz certo que dá certo que aí funciona mas aqui eu tenho agora esses dois contêiners aqui criados E se eu quiser também eu posso deletar aqui o contêiner eu posso pegar aqui e excluir um contêiner executando o comando docker container RM Pass passando aqui o nome ou o ID do contêiner eu posso passar aqui ó meu contêiner e eu posso passar aqui também o ID ó Dock container RM Opa RM passando aqui beleza eu deletei o contêiner se eu viro aqui ó docker
container LS tá lá ó eu tenho o eu não tenho contêiner mesmo passando aqui o menos a aqui eu tenho os ativos né que é el não teria nada mesmo já tava em exited e eu tenho aqui o Men A que eu matei os dois contêiners agora vamos fazer o seguinte eu quero criar aqui um contêiner agora de uma forma diferente porque agora eu só gerei um output aqui e nada mais eu vou fazer agora diferente eu vou executar aqui o docker container Run certo só que agora passando aqui duas flags o menos it e
o menos it ele faz com que eu Execute de modo interativo e habilitando aqui o tty Ou seja eu vou trabalhar com o terminal do contêiner eu não vou est mais trabalhando com o terminal da minha máquina eu vou est trabalhando com o terminal lá do contêiner e aqui também eu vou utilizar uma imagem diferente eu vou utilizar a imagem Ubunto Ou seja eu vou criar uma distribuição Ubunto só que dentro do contêiner e eu vou utilizar aqui o barra Bin barbash executo ele vai baixar lá a imagem vai baixar aqui as camadas certo ali
ó beleza e aqui ó liberou aqui para mim o o terminal do contêiner para eu utilizar tanto que você vê que aqui ó ele mostra diferente do que tá aqui em cima ó o usuário é no caso aqui é o Rot aqui na minha máquina Fabrício Veronez e aqui a o nome né do host da máquina que na verdade é um contêiner é aqui o ID do contêiner e não a o nome da minha máquina em si e como é que eu confiro isso eu posso vir aqui ó e executar aqui ó docker container LS
no outro terminal e lá ó dessa vez eu tenho o contêiner sendo executado aqui continuamente E aí eu posso fazer o que eu quiser eu posso vir aqui LS trabalhar eh da mesma forma que eu que eu estaria ali numa máquina Inclusive eu posso executar aqui ó a instalação de um pacote Se eu vir aqui ó co eu não tenho co instalado eu posso vir aqui APT update botar aqui junto com o APT e install co passando aqui o menos y ele vai fazer aqui a instalação do c e eu posso utilizar Sem problema nenhum
se eu vir aqui vamos lá deixa ele terminar pronto ó beleza ele terminou aqui agora se eu vir aqui ó co Agora eu tenho ele instalado posso executar aqui ó eh Call http 2 pwww. eh Google google.com executo e lá ele mostra aqui para mim então dessa forma eu consigo criar o contêiner e entrar em modo interativo e trabalhar ali dentro do meu contêiner para sair Exit beleza lá ele fechou Se eu vir aqui agora ó docker container LS o meu contêiner também ele já não tá mais em execução ele tá aqui ó em modo
exited posso deletar ele aqui agora também ó docker container RM passando aqui o ID certo E aí eu matei já os meus contêiners um ponto muito importante aqui também é o seguinte eh a gente criou aqui o contêiner em modo interativo instalamos lá o c e tudo mais agora se eu executar aqui de novo o docker container Run menos it e entrar em modo interativo de novo aqui com um novo contêiner o c ele não vai existir á não tenho o c instalado por quê Porque eu instalei o c naquele contêiner anterior que eu criei
que depois eu deletei se eu executar aqui de novo a criação no contêiner eu vou ter que fazer toda a instalação aqui de novo depois a gente vai ver aqui que para fazer com que isso não aconteça só criar uma imagem com tudo que é necessário a gente vai fazer isso da aplicação mas é importante você ter isso aqui em mente certo bom legal a gente criou aqui um contêiner né criamos o contêiner em modo e Inter ativo acessando ali o terminal do contêiner é criamos ali o hello world mas são contêiners que assim não
fazem praticamente nada né Ele simplesmente e fez o output na tela a gente entrou ali com terminal eu quero agora criar um contêiner com uma aplicação rodando para poder acessar ali e o recurso da aplicação poder consultar e tudo mais então aqui agora eu vou criar um contêiner utilizando realmente uma aplicação e execução aí eu vou utilizar nesse exemplo aqui O engex O engex ele é um servidor web muito utilizado no mercado que também pode ser utilizado como proxy reverso e load balancer e a gente vai utilizar esse cara no exemplo para poder acessar a
página que vai tá sendo hospedada ali com o engex então eu vou fazer o seguinte eu vou executar aqui o docker container Run passando aqui o nome da imagem emex se eu executar o que que vai acontecer ele vai baixar ali a imagem de novo como ele fez com Hell load com o bunto e vai executar o container Mas tem uma diferença aqui nesse cara que você vai ver agora lá ele executou e beleza tá em execução Mas que que rolou Aqui você vê que o meu terminal ele tá travado lá o meu terminal ele
tá tá mostrando o output do container tá mostrando ali é o o que tá sendo gerado ali de saída do engex por que isso porque eu botei para executar o contêiner como esse contêiner a tem execução contínua ele trava aqui por padrão o meu terminal se eu vir aqui ó no outro terminal que tá aqui aberto e executar o docker container LS tá lá ó tá o contêiner em execução inclusive você vê aqui que tá um pouquinho diferente ó ele mostra o container ID ele mostra a imagem o comando Há quanto tempo foi criado eh
o status dele né criado há 37 segundos atrás e ele mostra aqui também a porta qual porta que eu tô utilizando nesse momento aqui o contêiner qual porta que o contêiner tá utilizando no caso ele usa porta 80 servidor web né vai expor pela porta 80 porta padrão h ttp E aí aqui eu tenho o nome do contêiner também então aqui eu para liberar o meu terminal eu vou ter que botar aqui o CRL C só que se você reparar ó ele mata o processo se eu vir aqui agora docker container ele matou o processo
cara eu não quero né que ele faça dessa forma eu não quero que ele mate o processo então para isso eu executo o docker container Run passando aqui ó o parâmetro menos D para ele ser executado em modo de testes ou modo demmon para ele ser executado em segundo plano E aí com isso coloco aqui a imagem do endex executo ele vai me mostrar aqui o ID completo do container E se eu viro aqui agora ó docker container LS ele mostra aqui para mim ó lá ó a listagem do contêiner o contêiner ele tá agora
em execução se eu virar aqui agora ó docker container LS - a eu tenho o meu contêiner em execução eu tenho aqui o meu contêiner do engex que eu encerrei que eu entrei em modo exited e eu tenho também aqui o do ubun que foi aquele segundo que eu criei Então agora eu tenho dois contêiners sendo que um tá em execução e outro não e eu não tenho aqui o meu terminal travado agora como é que eu faço para poder acessar eh a minha aplicação web que vai est rodando ali no meu contêiner eu falei
lá atrás que o container ele executa o processo de forma isolada certo então aqui eu não tenho como acessar diretamente eh a minha aplicação web na minha máquina por quê Porque esse cara tá rodando ali de forma isolada Mas eu posso acessar ele como entrando no contêiner eu posso executar aqui ó o docker eh contêiner LS só para listar aqui e pegar o ID do contêiner e executar o docker container exec Men it passando aqui o ID do container botando aqui o Barra Bin barbash né parecido ali com o com a criação em modo interativo
né só que é o eec ele executa um comando dentro do contêiner E aí executo beleza ó ele vai tá aqui o terminal eu posso vir aqui ó Call http 2 p bar bar local host ah lá eu consigo acessar a página E aí né entrando no contêiner consigo acessar numa boa e aí você deve estar falando pô Fabrício mas cara eu não quero isso pô eu quero rodar o processo quero ver ali a execução mas eu quero poder consumir diretamente né Se for um banco de dados poder acessar ali via o client do banco
de dados alguma ferramenta ou se for minha aplicação por acessar ali a página da minha aplicação num browser né bonitinho não tem como fazer isso tem eu tenho que utilizar um outro recurso aqui do docker na hora de executar um contêiner que é o publish de porta ou bind de porta você pode ver em alguns lugares publish outros lugares bind onde você na verdade vai fazer o quê você vai pegar aquela porta 80 do cont trainer que tá lá sendo executado e vai vincular vai fazer um um link né da porta da sua máquina local
Então você vai escolher uma porta da sua máquina local para você fazer o bind para você fazer o vínculo com a porta de um contêiner E aí qualquer acesso que você faça a essa porta da sua máquina local você na verdade vai acessar a porta do contêiner então eu vou ter que criar um outro contêiner para isso então eu vou executar aqui ó ó docker container Run - D E aí eu vou passar agora o menos P para dizer olha eu quero fazer um publish eu quero fazer um bind de porta e aí eu vou
botar aqui primeiro a porta da minha máquina que eu quero utilizar dois pontos a porta do contêiner então a porta 80 e aí eu vou botar aqui o engex executa ele vai criar um outro contêiner se eu executar aqui ó bler container LS eu tenho aqui um outro contêiner em execução aqui ó só que diferente do que eu fiz antes Aqui ó você vê que a porta aqui ó tá declarada de uma forma diferente ele tá mostrando aqui a porta 80 e aqui ele mostra que eu tenho aqui um publish um bind de porta da
porta 8080 da minha máquina pra porta 80 do coner E aí agora se eu vir aqui deixa eu abrir aqui ó e coloc coloc local host 808 ah lá eu consigo acessar o engex E aí se eu quiser deletar esse contêiner se eu não quiser mais utilizar o recurso serviço aplicação que vai est rodando aqui no contêiner como é que eu faço elimino esse contêiner E aí é só vir aqui ó e executar docker coner RM passar aqui o id e vai dar ruim por quê Porque como esse contêiner aqui tá em execução ele não
deixa eu remover o contêiner Então eu tenho que ver aqui ó e executar o docker container Stop para parar o contêiner passando aqui o ID E aí ele vai parar o meu contêiner E aí eu posso remover o contêiner logo em seguida deixa aí terminar aqui tá beleza parou Dock contêiner RM passo aqui agora o ID ele vai é ser eliminado se eu viro aqui agora ele já lá ó não consegue acessar o engex dá erro então se eu quiser de novo acessar esse cara cadê vamos lá aqui cadê ó de novo que se eu
quiser rodar de novo o endex eu tenho que criar outro contêiner E aí ele vai funcionar certo Eh agora vamos fazer o seguinte deixa eu mostrar aqui para você eh um macete para você eliminar todos os contêiners que vão estar aqui em execução ó se você vir aqui ó docker container LS Men A eu tenho vários contêiners aqui em execução e quero deletar todos eles te mostrar aqui um macete você pode executar aqui ó docker container RM Men f para forçar aqui a exclusão do meu contêiner mesmo que ele esteja aqui em execução eu botando
menos F ele vai excluir e aí eu posso colocar aqui ó e dólar parênteses e colocar aqui ó doc container LS para listar os meus contêiners menos é aq ou q também mesma coisa E aí o que que vai acontecer aqui nesse cenário deixa eu até deixar aqui comentar comentar aqui para ele não executar o que que vai acontecer aqui se eu pegar esse docker container LS menos q ele vai mostrar todos os ids dos contêiners se eu combinar aqui com o docker contêiner RM - F ele vai excluir de forma forçada todos os contêiners
que forem listados aqui ou seja ele vai deletar tá todos os meus contêiners aqui da minha máquina executo ele vai lá e mostra aqui para mim lá maneiro né então se eu viro aqui agora ó docker container LS Eu já não tenho aqui mais nada ó LS menos q eu criei aqui os meus contêiners e depois eu deletei todos utilizando Esse comando então pega esse comando Guarda aí com você que vai te ajudar bastante no seu dia a dia então esses são os comandos básicos para você trabalhar com DOC o docker container Run que é
o comando para você executar um contêiner e você pode usar alguns parâmetros importantes no docker container Run como o Men P para fazer o publish das portas o Men D para executar em modo det tested ou modo dimal E tem também o menos it para você habilitar o modo interativo e o tty depois tem o docker container LS que lista os contêiners você pode utilizar o menos a para listar todos os contêiners não só os ativos como é com o docker container LS padrão e se você precisar executar algum comando dentro do contêiner tem o
eec que também permite você entrar em modo interativo e trabalhar dentro do contêiner E é claro que tem também o docker contêiner RM para fazer a remoção do contêiner até agora nós conseguimos rodar um contêiner de forma contínua deixando ali o processo funcionando mas fizemos isso com a certo mas você não quer rodar simplesmente um nginx no contêiner você quer rodar a sua própria aplicação e para poder ter o seu processo isolado ali dentro seja uma aplicação web ou qualquer outro serviço você precisa primeiro criar uma imagem docker pra sua aplicação a imagem docker é
a base para criar um contêiner é um template ou blueprint que define o sistema de arquivo e o os pacotes necessários pra execução do contêiner a imagem doc deve conter tudo que a sua aplicação precisa pacotes bibliotecas dependências Tudo E para isso nós vamos utilizar o docker file pensa no docker File como uma receita de bolo onde você vai est descrevendo ali todo o passo a passo para criar a sua imagem copiar arquivo instalar dependência configurar ambiente tudo isso fica declarado no dockerfile e quando você executa o comando de criação o docker vai executar todas
as instruções na ordem certa que você especificou para montar a sua imagem eu vou mostrar para você aqui na prática usando um projeto escrito em Python usando basicamente a mesma estrutura do projeto que nós vamos botar no ar essa semana o projeto se chama conversão de distância e ele faz conversões de diversas métricas para distâncias diferentes esse Esse é um ótimo ponto de partida para você entender o processo antes de colocar o nosso projeto no ar para criar o docker file é importante saber as características da aplicação e como ela foi desenvolvida aqui por exemplo
o Python é uma linguagem interpretada Então eu preciso ter o Python instalado para poder executar Então eu preciso ter o Python na imagem e para usar isso eu vou utilizar uma imagem que já tenha né o Python instalado e eu preciso ter também o PIP que é o gerenciador de pacotes do Python para baixar as dependências do projeto e como é uma aplicação web eu vou usar também o g unicorni que é um servidor web muito utilizado para executar aplicações em Python Então eu preciso ter ali no dockerfile o Python o código da aplicação baixar
as dependências do projeto com o PIP e ter o g unicórnio também então bora fazer isso tudo agora e criar o dockerfile da aplicação para depois criar a imagem o primeiro passo aqui para poder criar a nossa imagem da aplicação é ter a aplicação aqui na no nosso ambiente para poder fazer a construção então o primeiro passo vai ser entrar no repositório lá do github e fazer um clone do projeto aqui no ambiente local eh aqui eu tenho o repositório o endereço do repositório ele vai est no ridm do repositório aqui da nossa semana e
não vai estar junto no repositório então entra no repositório aqui do nosso projeto vai lá no ridm da aula um que você vai ver lá e o link aqui pro conversão de distância ele tá na conta aqui do CUB devv e eu recomendo que você faça um fork desse projeto aí pra sua conta que você faça uma cópia desse projeto paraa sua conta para você poder subir o Dock file e tudo mais no caso aqui eu vou fazer um clone direto porque eu tenho permissão Então tá tudo certo se você depois tentar subir aí o
arquivo você não vai conseguir porque você não tem permissão Então faz um fork aí pra sua conta eh e aí que que nós vamos fazer pegar aqui o código né o endereço aqui eu vou utilizar o SSH e fazer um Git Clone aqui para o meu diretório no caso eu já fiz eu tenho aqui ó o conversão de distância então eu vou entrar aqui conversão de distância abrir aqui o vs code e eu vou ter aqui o projeto Como eu disse ele é um projeto escrito em Python que faz a conversão de distância então aqui
ó ele converte de metro para quilômetro de quilômetro para metro de metro para milha de milha para metro e por aí vai então ele é uma aplicação web então eu tenho aqui um template HTML e ele roda na porta e 80 não a porta 5000 certo então quando eu for executar el vai tá rodando na porta é 5000 Ok outro arquivo muito importante aqui é o arquivo de requirements no arquivo requirements Eu tenho todas as bibliotecas que são utilizadas aqui no projeto então por exemplo flesk ele é um Framework web utilizado PR Python que eu
tô utilizando aqui tanto que eu tenho ele aqui ó e importado aqui ó flesk e eu tenho aqui o g unicorni que é o servidor web que eu vou utilizar para rodar esse cara no ambiente produtivo então o arquivo requirements é o que vai ser utilizado pelo gerenciador de pacote do Python o PIP para baixar as dependências Então agora que eu tenho aqui o meu código né no meu ambiente o próximo passo é criar o docker file onde eu vou ter a receita para poder criar o meu a minha imagem onde eu vou ter todo
o passo a passo para poder criar a minha imagem e aí eu coloco dessa forma mesmo docker file e vou colocar aqui na raiz do projeto e para começar a criar aqui o meu docker file A primeira coisa que eu tenho que fazer é especificar qual vai ser minha imagem base pô mas como assim Fabrício Lembra que eu falei que todo contêiner ele tem como base uma imagem que a imagem tem todo o sistema de arquivo tem tudo que é necessário para rodar a aplicação para rodar ali o meu processo toda vez que eu vou
criar uma imagem eu vou utilizar uma outra imagem como base para poder reaproveitar Esse sistema de arquivo porque aí vai pegar eh com o DOC fy vai pegar o sistema de arquivo dessa imagem inicial e vai incluir ali tudo que eu vou colocar aqui no dockerfile como a minha aplicação é uma aplicação escrita eh em Python faz sentido eu utilizar aqui uma imagem que já tenha o Python né instalado Para eu não ter que passar por esse processo e ter o Python instalado de uma forma otimizada para container não da mesma forma que eu tenho
aqui eh na minha máquina executando ali o comando de instalação não o Python aqui ele vai ser instalado de uma forma que e seja otimizada pro contêiner E aí como é que eu faço isso Onde é que eu tenho né onde é que eu tenho o armazenamento de imagens Não repositório de imagens o docker Hub que é o github para imagens docker então o que que eu vou fazer eu vou vir aqui em hub.docker.com que é o endereço do dockerhub e vou procurar aqui ó Python da mesma forma que eu procuro um repositório no github
aqui eu vou fazer a mesma coisa E aí eu tenho aqui ó Python que é justamente a imagem para aplicações em Python e aqui tem o nome Ó Python então o que que eu vou fazer eu vou especificar a imagem base o Python então para isso eu uso a instrução from certo e aí from Python E aí beleza coloco aqui certo e a gente agora já tem a imagem base para ser utilizada o outro comando que eu vou utilizar vai ser o o work de Esse comando né Essa instrução ele cria o meu diretório de
trabalho ele vai fazer com basicamente ele vai criar o diretório e vai entrar nele Como se eu tivesse fazendo um MCD e depois um um CD um Change Director então eu gosto de criar aqui um diretório app né para poder aqui executar o a minha aplicação dentro do contêiner OK agora que eu tenho a imagem base e eu tenho aqui o diretório de trabalho eu tenho um diretório criado para colocar ali a minha aplicação que que eu vou fazer eu vou baixar as dependências do projeto E aí para baixar as dependências do projeto o PIP
que é o gerenciador de pacote precisa do arquivo requirements desse carinha aqui certo então antes de Executar a o comando para para baixar essas dependências eu vou fazer aqui uma cópia eu vou copiar o meu arquivo requirements que tá aqui na minha máquina que tá no meu diretório e vou colocar dentro aqui da Imagem e aí eu uso copy eh requirements deixa eu até aqui ó requirements e copio aqui pro pra minha imagem como eu já tenho aqui o work dear definido ele vai botar onde aqui no Barra app certo e aí depois que eu
tenho o arquivo requirements eu posso executar o comando E aí eu vou utilizar a instrução Run que toda vez que eu coloco o Run ele executo um comando eu vou executar aqui o PIP install - r e requirements TXT certo dessa forma aqui e aí ele vai achar todas as dependências beleza aí agora que que eu vou fazer eu vou fazer aqui a cópia dos Meus outros arquivos barra app certo dessa forma aqui OK beleza então agora eu peguei todo o conteúdo aqui né disponível e botei no Barra app poderia colocar aqui dessa forma também
não tem problema vou deixar aqui desse jeito e agora o que que eu vou fazer como eu tô utilizando a porta 5000 aqui na aplicação web eu vou utilizar o expose para declarar que eu tô utilizando essa porta 5000 aqui no contêiner quando eu criar o contêiner eu vou utilizar a porta 5000 então boto aqui 5000 para deixar claro que eu vou utilizar essa porta e aí agora eu tenho tudo que é necessário para executar e a minha aplicação tenho o Python tenho as bibliotecas tenho o meu código já declarei que eu vou utilizar porta
5000 eu preciso ter o comando de inicialização do meu contêiner sempre que eu for criar o meu contêiner aqui E qual vai ser o comando que eu vou utilizar E aí para isso eu vou utilizar o a instrução CMD que é o comando de inicialização do contêiner esse carinha aqui específico CMD ele só é executado na criação do contêiner Não no momento de construção aqui da minha imagem Então vou colocar aqui CMD E aí eu vou colocar o comando no caso aqui eu vou utilizar o g unicorne certo vou utilizar aqui o g unicorni vou
passar aqui o bind certo utilizando aqui ou melhor é permitindo que qualquer um faça requisição para pra porta é 5000 certo e aí eu vou utilizar aqui o p a o app na minha aqui app também certo então esse comando vai ser a inicialização do meu do meu projeto beleza legal então agora quer dizer que o Dock file tá pronto cara o Dock file tá pronto a partir desse arquivo eu consigo criar a imagem da minha aplicação tranquilo para isso que que eu vou fazer vou vir aqui vou limpar aqui o meu terminal e vou
executar o comando de construção da imagem que é o docker build Esse é o comando que declara que eu quero construir uma imagem aqui utilizando o DOC E aí eu tenho que passar aqui alguns parâmetros O primeiro é o - t para especificar o nome da minha imagem qual vai ser o nome da imagem o nome vai ser com versão né de distância Opa distância certo e aí o outro parâmetro que eu tenho que passar é o menos F para dizer qual docker file que eu vou utilizar E aí eu boto aqui menos F docker
file que é o arquivo que eu tô utilizando aqui para criar a imagem tem toda a minha receita de criação de imagem e depois de especificar o docker file eu vou passar aqui o meu contexto o que que é o contexto e eu tenho que dizer aqui no docker build qual vai ser o diretório da minha máquina que vai ser enviado pro docker demmon para ele construir a imagem da minha aplicação Lembra que eu falei que eu uso o docker client para interagir com o docker Dimon então aqui eu tô dizendo pelo docker client utilizando
o comando docker Build para subir esse diretório aqui que no caso é o diretório corrente que é justamente onde tem todos os arquivos necessários para executar ali a construção da minha imagem para o docker demmon falou ó manda esse diretório E cria esse cara se eu executar aqui ele começa a construção da minha imagem e aí você vê aqui que ele vai fazer toda a construção demora um pouquinho eu vou cortar aqui pro momento que ele termina pra gente ver o que acontece pronto aqui ó terminou de fazer a criação da Imagem e o que
que aconteceu aqui você vê que assim que eu executei o docker build ele teve aqui alguns passos de execução aqui ó um de c e ele mostra ó um de C O from do docker aqui da minha imagem ppg aqui a imagem do Python aqui ó o orid é o copy aqui o Run e também aqui o copy então percebe que aqui quando eu executei o comando docker build ele executou aqui os passos de construção aqui do docker file e no final eu tenho aqui a minha imagem criada ele bota aqui o nome da Imagem
e como eu disse antes o CMD ele não tá na etapa de construção por quê Porque ISO só é executado quando eu inicio o meu contêiner e o expose aqui também ele não entra na construção ele vira um metadado ali da minha imagem e e para ver aqui a minha imagem e todas as imagens que eu tenho aqui na minha máquina eu posso utilizar o comando docker container docker container docker image LS Olha o eu fazendo errado aqui Bom vamos lá mas aqui ó doc lim GLS ele mostra aqui ó o conversão de distância a
imagem aqui do Ubunto a imagem do engex e aqui a imagem Hell Tod todas as imagens que eu utilizei aqui certo no meio aqui da da nossa aula inclusive se você quiser excluir aqui uma dessas imagens você pode só pegar aqui ó o nome da imagem ou o ID certo e executar aqui ó docker image RM passando aqui o nome ou o ID E aí você vai deletar esse cara se vir aqui agora docker ah Opa fiz besteirinha aqui ó docker image LS ó lá o engex não tá mais aqui então dessa forma você consegue
deixar aqui ó a receita de construção da sua imagem e o docker constrói para você e além disso você consegue e deixar documentado essa construção junto com o seu projeto porque é código né todo o docker file nada mais é do que código então você adiciona junto com código da sua aplicação você pode alterar evoluir caso seja necessário e também você pode automatizar o processo de construção e o docker ele é tão eficiente na hora de construir a imagem que toda vez que ele faz a construção de uma imagem utilizando o docker file além dele
construir essa imagem ele pega cada camada dessa de construção que nada mais é do que um file System incluído nessa minha imagem base né a imagem de container ela nada mais é do que um conjunto de file System e ele faz o cche dessas construções Como assim se eu pegar aqui agora ó docker e build novamente botar aqui o docker build - T colocando aqui conversão e de distância certo botando aqui o Men F Opa docker file e botando aqui o com texto de novo e executar você vai ver que eu solicitei de novo a
construção e dessa vez a construção ela foi muito mais rápido por quê Porque se você olhar aqui ó cada etapa ele mostra aqui ó cashed o que quer dizer isso eu tô fazendo aqui o uso ou melhor o docker tá fazendo aqui o uso das camadas de construção ele tá pegando aqui o file System gerado em cada um desses comandos já empilhando ali formando o file System final que é a minha imagem de uma forma muito mais rápida e aí quando é que ele não vai utilizar aqui esse Cash caso eu Execute aqui ó e
o docker file falando aqui ó eu não quero aqui usar o cach botar aqui ó no cche e executar ele não vai utilizar o cche ó lá ele vai construir tudo novamente ou se eu alterar o docker file se eu alterar aqui ele vai mudar também ele não vai utilizar o Cash ó se eu vir aqui agora ó tem aqui o no cche mas se eu vir aí tirando no cche ele vai usar ou se eu vir aqui e executar sei lá vou botar aqui um Run certo APT eh update botar aqui um update aqui
da vida se eu botar aqui junto ó e executar ele vai executar aqui o update e vai fazer ali a a construção toda de novo ele só vai utilizar como Cash aqui ó o work dear porque essa instrução ela já existia antes Então dependendo de como eu altero aqui o docker file ele não vai utilizar aqui o cche certo então ele o DOC ele é inteligente nessa otimização nesse reuso das camadas de construção certo bom deixa eu executar aqui de novo a construção certo e agora vamos testar aqui a nossa aplicação ver aqui se a
aplicação ela vai funcionar então agora vamos criar o contêiner utilizando a minha imagem para isso docker contêiner Run certo para executar o contêiner menos D para executar em background e vou utilizar aqui o menos P para poder fazer o port bind para fazer o publish de porta para vincular a porta da minha máquina local com a porta do contêiner para poder acessar a aplicação E aí eu vou botar aqui vai a porta 80 botar 81 81 com a porta 5000 aqui do contêiner E aí eu vou colocar o nome da minha imagem que eu tenho
que definir a imagem base vai ser a imagem que eu acabei de construir E aí eu vou botar aqui conversão distância certo executo Ele criou aqui o contêiner vamos ver aqui a saída doc container LS certo tá ali ó ele mostra o ID do coner aqui a imagem o comando de inicialização você vê que é o mesmo comando que eu especifiquei aqui no cmd certo é Há quanto tempo aí foi criado é aqui ó o o uso da porta que no caso T utilizando a 5000 né fazendo bind com 81 81 o nome aqui do
contêiner se eu vir aqui agora eh na no meu navegador e colocar aqui local host eh oi Opa local host 81 81 81 vamos ver a minha aplicação ela vai tá rodando aqui vamos ver aqui aqui ó minha aplicação rodando eu tenho aqui ó conversão de metro para quilômetros Vou botar aqui ó 1000 m quantos quilômetros dá aí lá ó dá 1 km eu pegar aqui e metro para milhas Vou botar aqui e um 1 m quantas milhas dão ó 0,006 21 e tal Deixa eu botar aqui milhas para metro uma milha dá aqui ó
169.34 M certo E além disso eu tenho aqui embaixo também ó e o o servidor que processou a requisição ele mostra aqui o IP e também o nome do host né no nome da máquina que no caso aqui é o container E aí você pode até verificar aqui ó se a gente olhar aqui ó o ID é aqui o mesmo que vai tá aqui como servidor que processou a requisição Beleza então a gente tem aqui a nossa aplicação rodando agora em contêiner caso a gente queira eh fazer com que a aplicação não seja mais executada
deixa eu até voltar aqui é só deletar aqui né com o DOC container RM - F deletar aqui Opa docker contain ah container RM - f a vai parar se eu vir aqui ele já não vai tá mais funcionando Opa ah lá já não vai tá mais funcionando se eu quiser rodar de novo eu venho aqui e executo ele vai rodar aqui novamente Opa Cadê beleza tá aqui ó ele vai executar aqui novamente ó lá só que aí vai mudar o nome do IP do IP aqui do host certo mas o que que acontece aqui
e dessa forma eu consigo criar aqui o contêiner utilizando a minha imagem base mas só localmente não eu não consigo por exemplo falar para alguém da minha equipe eh ou eu ou em outra máquina pegar e executar um contêiner criado a partir dessa imagem por quê Porque eu criei aqui local e essa imagem tá localmente se eu quisesse criar ali um contêiner remotamente ou pedir para alguém da minha equipe criar eu teria que disponibilizar o código junto com o docker file para poder depois criar o contêiner e essa forma não é eficiente não é a
forma que você vai utilizar no seu dia a dia já pensou você tem que sempre criar ali uma imagem quando for col colocar no kubernetes ou algum serviço de execução de contêiners você não vai trabalhar dessa forma porque agora a gente vai falar sobre o docker rest e o docker Hub que é justamente a forma de armazenar imagens docker de forma remota e executar em qualquer lugar legal agora vamos falar um pouco sobre o docker r para você aprender como armazenar e distribuir as suas imagens docker o docker r como eu já já falei antes
quando falei sobre a arquitetura do Dock é o componente utilizado para armazenar as suas imagens você pode armazenar quantas imagens e quantas versões da sua aplicação você quiser com isso é possível compartilhar essas imagens com a sua equipe e armazená-las em qualquer ambiente que tenha acesso ao régistre Esse é um ponto importante para trabalhar com o DOC porque ele permite o armazenamento e o versionamento das imagens de uma uma forma muito similar ao Git pro código o serviço mais utilizado no mercado para isso é o docker Hub que funciona como um github para repositórios de
imagens docker o docker Hub ele é mantido pela docker e permite o armazenamento gratuito de imagens públicas caso você precise de repositórios privados existe também assinatura da docker para isso mas para imagens públicas você pode utilizar gratuitamente sem problema nenhum o próximo passo então é acessar o hub.docker.com e criar a sua conta lá no dockerhub no cadastro você Define um usuário e esse usuário ele vai ser o seu namespace na hora de trabalhar com as suas imagens esse nome é importante porque ele vai ser parte do nome das suas imagens o cadastro ele é gratuito
e não exige cartão de crédito e aí depois de você fazer o cadastro você vai acessar uma tela parecida com essa que tá aparecendo se você acabou de criar sua conta e nunca trabalhou com o Dock Hub antes essa tela inicial vai tá vazia mas o que que significa aí essa tela né cada linha que você vê aqui representa um repositório de imagens no dockerhub Eu por exemplo tenho vários repositórios de imagens no dockerhub onde eu armazeno versões das minhas aplicações que eu posso executar em contêiners cada repositório equivale a um projeto como um repositório
no github dentro de cada repositório você encontra várias versões da imagem organizadas por tags como se fossem diferentes comites no Git na parte superior da tela você tem o seu namespace que nesse caso é o ID da sua conta você pode criar Organizações e trabalhar com namespaces diferentes mas nesse exemplo aqui nós vamos focar no Space pessoal mesmo na no que você acabou de criar que é o seu ID basicamente o Dock Hub ele é organizado por repositório e cada repositório possui as tags que version a imagem Então agora que você já tem a sua
conta no dockerhub e entendeu a estrutura vamos pegar a nossa imagem da aplicação e fazer o upload pro dockerhub vamos lá primeiro passo aqui é colocar a minha imagem no padrão de nomenclatura correto para utilizar no docker Hub mas como assim Fabrício que parada é essa vou mostrar aqui para você se eu executar aqui docker container ou melhor docker image LS ele vai listar aqui as imagens e tem aqui a minha imagem conversão distância esse padrão de nome aqui ele não vai fazer com que o docker saiba para onde enviar essa imagem porque eu preciso
seguir o padrão de nomenclatura e que padrão de nom clatura é esse e o padrão de nomenclatura ele é formado por alguns componentes pelo namespace que vai ser o aqui o meu usuário para representar que essa imagem pertence a mim ou a minha organização o nome do repositório tá até faltando aqui um um A né no caso mas é conversão distância mas o que que é o repositório é o repositório da imagem é o projeto que faz parte ali aquela imagem no caso aqui conversão distância não é converso distância não e também a tag que
vai representar a versão da minha imagem então toda vez que eu for criar uma nova imagem eu vou criar uma nova tag que vai representar uma nova versão E aí aqui nesse padrão aqui apenas conversão distância eu não tô utilizando o padrão o DOC Hub não vai saber quem é o proprietário A quem pertence essa imagem e para qual repositório deve ir e também não vai saber ali qual é a versão mas pô Fabrício e olhando aqui na própria listagem das imagens eu tenho aqui o Ubunto o Ubunto também não tem ali o namespace aqui
a tag é esse tal de latest que parada é essa e o o bunto e o Eng el não tem aqui o namespace por quê Porque is são imagens oficiais da Dock Se eu vir aqui no Dock Hub e procur aqui o Python Por Exemplo foi o Python não no caso aqui foi o bunto botar aqui o o bunto né Se eu olhar aqui o o bunto El mostra aqui inclusive ó é uma imagem oficial da docker se eu pegar aqui o engex a mesma coisa e o Python também a mesma coisa então quando não
tem namespace é porque é pertence à própria doc é diferente aqui do meu caso onde eu tenho aqui né A minha conta Fabrício verones aí é o meu namespace e eu tenho aqui algumas organizações também que são para representar empresas Ou eh organizações ons enfim ou comunidade Você pode ter uma organização e aí você vai utilizar o namespace vai ser aqui o nome da organização inclusive criar organização desde que você só tem ali eh imagens também é públicas você não paga nada por isso criar organização aqui eh gratuito no caso aqui eu vou utilizar a
minha conta mesmo vai ser Fabrício Veronez e o que que é esse latest aqui toda vez que eu subo a minha imagem uma nova imagem uma nova versão da minha imagem eu vou definir uma tag de versão da minha imagem e eu vou subir aqui a tag latest a tag latest ela representa a última versão da minha imagem inclusive não é uma boa prática você utilizar a tag latest Ou seja você não definir uma tag quando você tá executando um contêiner ou quando você tá construindo uma imagem porque aí dessa forma você em algum momento
pode ter uma evolução da daquele projeto Você pode ter aí uma nova versão que gera incompatibilidade com o seu código e ou com a construção da sua imagem e tudo que Você tá trabalhando passa a não funcionar porque gerou essa incompatibilidade então para garantir que toda vez que você executar um container ele vai ter o mesmo comportamento ou toda vez que você construir uma imagem com docker file ele vai ter ali o mesmo comportamento você tem que definir ali uma tag inclusive Vamos acertar isso aqui no nosso projeto porque o docker file ele não tem
aqui uma tag então eu vou definir aqui aqui a tag que eu vou utilizar aqui pro meu projeto certo vamos lá deixa eu entrar aqui no docker Hub pra gente ver aqui vou procurar aqui ó eh Python certo V procurar aqui ó Python E aí eu vou procurar a tag que eu vou utilizar no caso aqui eu vou utilizar a tag 3.13 Opa pon 13.0 Vou botar aqui só para você CV e eu tenho várias versões aqui com várias versões diferentes da 3.13.0 eu vou utilizar aqui a tradicional certo e aí Vou colocar aqui cadê
aqui certo e aí a gente pode construir novamente essa imagem aqui a minha imagem só que agora com a tag correta garantindo sempre que vai ter o mesmo comportamento Então vamos Vamos criar aqui então eu vou executar aqui de novo comando docker build botar aqui o Men T só que agora seguindo o padrão de nomenclatura correto colocando aqui Fabrício veron barra conversão distância certo e colocando aqui a tag que no caso vai ser o v1 Beleza vou definir aqui o docker file que também no caso precisaria colocar aqui por qu porque por padrão quando eu
não coloco Men F ele vai buscar no diretório corrente e o arquivo chamado docker file mesmo então nas outras vezes eu coloquei mas eu não tinha colocado aqui mas aqui eu não preciso porque ele já vai seguir ali o padrão E aí depois eu coloco aqui o meu contexto né para definir qual vai ser o diretório que eu vou enviar pro docker Demon beleza defino aqui dou um enter Opa docker Ah não é fiz besteira docker build certo e aí agora ele vai fazer o processo de construção aqui no caso já foi por acaso já
tava usando aqui a tag latest já era esse cara então beleza se eu vir aqui agora docker é image LS ele vai listar aqui para mim ó já tem aqui a tag v1 aqui o nome do repositório E por aí vai você vê que tem aqui o anterior aqui também certo e agora você vê que também tem aqui algumas imagens que não tem aqui nenhum nome né que que acontece essas imagens São resíduos são lixos aqui de construção de imagens e eu posso utilizar aqui o comando docker imag prune que aí ele vai limpar essas
imagens que não tem referência dou um Yes beleza aqui ó el vai limpar Se eu vir aqui doc image LS tá lá ó ele agora limpou essas imagens Ok bom então agora criei aqui a minha imagem seguindo o padrão de nomenclatura correto que que eu vou fazer eu vou subir essa imagem e aí para isso eu vou utilizar o comando docker P para enviar a imagem mas antes eu tenho que fazer o seguinte eu tenho que autenticar aqui o meu docker com o docker Hub para m identificar que eu sou Fabrício Veronez eu tenho a
credencial correta para poder trabalhar então para isso que que eu vou fazer vou utilizar o comando docker login executo aí e vai pedir o meu username que é Fabrício Veronez você vai colocar aí o seu e vai pedir aqui a minha senha aí você vai colocar aí também a sua senha Deixa eu botar aqui vamos ver se foi à Não foi vamos autenticar aqui de novo Fabrício Veronez Beleza beleza vamos lá agora foi vamos ver foi ah autenticou e aí agora eu posso executar o d P colocando aqui Fabrício Veronez barra conversão distância v1 E
aí ele vai subir aqui a minha imagem á Ele vai subir ele vai subir as camadas de construção inclusive você vê que ó onde já tem o Python as camadas que fazem parte do Python ele não envia novamente ele utiliza né E já identifica e fala Olha utiliza essas camadas mais essas aqui para subir essa imagem lá pro Dock Hub então você vê que essa otimização de camadas né tem ali eh também aqui no docker eu falo isso mais a fundo na formação Dev devops pro explico mais sobre essa parte de camadas mas por enquanto
você entender que o processo de construção da imagem ela é feito a partir de camadas de sistema de arquivos cara tá tranquilo para você dar aí os primeiros passos certo então vamos ver aqui agora vamos ver aqui né no meu repositório os meus repositórios eu tenho aqui ó conversão de distância tá aqui ó a minha imagem subi aqui ó há mais ou menos eh um minuto atrás certo tá aqui ó há um minuto atrás a minha imagem v1 aqui ela já tá nível E aí que que eu vou fazer aqui agora eu tenho que seguir
a boa prática e subir a minha imagem latest né subir ali com a tag latest também E aí eu vou executar o docker Build de novo não preciso disso eu posso executar aqui com o comando docker tag o docker Tag ele adiciona um nome a uma imagem então eu posso pegar aqui ó docker tag Fabrício Veronez bar versão distância botar aqui o v1 certo e copiar aqui e botar o conversão distância latest executo ele vai e adicionar essa tag como é que eu sei disso executando aqui o docker image LS aí ele bota aqui ó
Fabrício Veronez conversão de distância latest e aqui o conversão distância v1 e como é que eu sei que é a mesma pelo image ID você vê que é a mesma imagem e aí eu vou executar aqui o docker push de novo só que agora passando aqui o latest executo ele vai subir e aí como ele é a mesma imagem e essa imagem já tá no Dock Hub el fala ó essas layers já existem lá subiu e tá tudo certo e aí beleza se eu vir aqui certo no meu o repositório aqui ó cadê dá um
refres aqui você vai ver que aqui ó tem a V1 e tem aqui a latest também então aqui eu subi a minha imagem tanto na versão 1 quanto na versão latex e agora eu posso agora criar o meu contêiner em qualquer lugar que eu esteja inclusive você pode utilizar aí a minha imagem para criar um contêiner pode utilizar a sua imagem Sem problema nenhum eu vou testar aqui ó eu vou executar o docker coner vamos ver se tem alguma coisa aqui contêiner LS aqui no caso ah LS Men A que não tem nada vou vir
aqui então Ó doc image LS tem aqui tudo Vou botar aqui então o docker Opa deixa eu limpar aqui ó docker image RM aqui um outro comando que Vai facilitar aí a vida de vocês ó docker image RM para listar e botar aqui a listagem de imagem aqui ó Dock Image image LS menq para deletar aqui todas as minhas imagens Deixa eu botar aqui Ah aqui no caso eu tenho que botar o RM Force eu tenho que forçar aqui a exclusão Ah que que aconteceu aqui ah ah ele não achou aqui a imagem beleza eu
limpei aqui a imagem ó docker eh image LS para listar aqui as imagens de novo não tem nada docker System prun para limpar aqui o meu docker inteiro zerar aqui o meu docker porque agora eu vou criar o contêiner lá remotamente ó Limpei tudo beleza agora vou executar ó Dock container Run - d - p a porta vou trabalhar com a 8080 aqui 5000 E aí agora ao invés de utilizar lá o conversão distância apenas vou usar aqui Fabrício Veronez barra conversão distância no caso aqui vou botar o v1 poderia botar o latex mas vou
seguir boas práticas Vou botar aqui o v1 aí ele não achou a imagem ele agora vai baixar então eu não preciso mais reconstruir aqui a imagem não preciso ficar compartilhando o código só Olha usa essa imagem aqui que tá lá no meu docker Hub E aí eu consigo Executar a minha aplicação aonde eu quiser deixa só ele terminar aqui beleza aqui ó terminou de executar aqui a criação do contêiner se eu viro aqui ó docker container LS tá aqui ó o meu contêiner agora em execução Se eu vir aqui cadê Se eu vir aqui ó
tirar aqui 81 81 botar 8080 Opa aqui algum Cash n que susto meu irmão que negócio é esse não aqui é o innex que porque tá em cash no navegador mas deixa ele tá aqui carregando ah lá ó conversão de distância com o mesmo comportamento de antes Aqui ó 40 converter e aqui ele mostra ó o servidor que processou e tudo mais então dessa forma a gente conseguiu fazer todo o processo de execução de contêiners criação de imagem da aplicação e rodando a aplicação utilizando o docker fio do evento já tá disponível não deixa de
conferir e de fazer e o primeiro passo da nossa solução já foi dado com a imagem pronta nós podemos avançar pro kubernetes e cara se você já achou essa aula de hoje top na próxima sua cabeça vai explodir porque se liga quando falamos de aplicações modernas e confiáveis nós precisamos mais do que só o isolamento de processos para execução das nossas aplicações por isso que na aula dois você vai aprender a garantir a resiliência da aplicação Ou seja caso algum contêiner esteja com comportamento inesperado ele vai ser encerrado e outro vai ser criado no lugar
sem prejudicar a aplicação você vai aprender como escalar as aplicações ou seja tornar a aplicação capaz de replicar automaticamente os contêiners e criar várias cópias para distribuir a carga de requisições entre eles em momentos de grandes requisições para evitar a indisponibilidade e vai aprender também a a fazer a atualização de versão com downtime zero ou seja você vai subir uma nova versão sem que ela caia pro usuário até por não dá para parar tudo porque simplesmente tem uma nova versão para sair não é verdade empresas como o Mercado Livre por exemplo fazem dezenas de milhares
de deployments por dia imagina o prejuízo se cada atualização o sistema caísse não dá né então na próxima aula nós vamos falar mais sobre o kubernetes uma das principais ferramentas do ecossistema devops te vejo na aula dois
Related Videos
Aula 2 -  Desafio Kubernetes | Desafio DevOps & Cloud
1:38:07
Aula 2 - Desafio Kubernetes | Desafio Dev...
Fabricio Veronez
2,938 views
O passo a passo para usar Docker
2:06:23
O passo a passo para usar Docker
Fabricio Veronez
3,258 views
Container vs VM: Hypervisor War is Over!
13:42
Container vs VM: Hypervisor War is Over!
VirtualizationHowto
34,565 views
Aula 4 - Desafio Github Actions | Desafio DevOps & Cloud
1:34:24
Aula 4 - Desafio Github Actions | Desafio ...
Fabricio Veronez
730 views
What is OpenTelemetry?
12:55
What is OpenTelemetry?
Highlight
19,783 views
'Did NOT go over well': KJP blocks Kirby from briefing on cease-fire
8:04
'Did NOT go over well': KJP blocks Kirby f...
Fox News
563,436 views
Bill Burr on People Online Commenting on the LA Fires & Getting in Touch with His Emotions
12:36
Bill Burr on People Online Commenting on t...
Jimmy Kimmel Live
1,942,636 views
Aula 3 - Desafio AWS | Desafio DevOps & Cloud
2:00:35
Aula 3 - Desafio AWS | Desafio DevOps & Cloud
Fabricio Veronez
1,568 views
中国改革的总工程师朱镕基(下):决断|改革开放|江泽民|国务院|邓小平|WTO|温家宝|王局拍案20240902
31:23
中国改革的总工程师朱镕基(下):决断|改革开放|江泽民|国务院|邓小平|WTO|温家...
王志安
160,411 views
Ansible 101 - Episode 1 - Introduction to Ansible
1:03:43
Ansible 101 - Episode 1 - Introduction to ...
Jeff Geerling
570,798 views
Aulão Docker 01 - Os primeiros passos com Docker
1:43:10
Aulão Docker 01 - Os primeiros passos com ...
Fabricio Veronez
2,913 views
18 Weird and Wonderful ways I use Docker
26:18
18 Weird and Wonderful ways I use Docker
NetworkChuck
471,670 views
“人均存款破十万”到底意味着什么:不光是分配不公,而是没有消费动力;居委会取代业主委员会:背后的逻辑是抑制社会自治能力的发展
29:41
“人均存款破十万”到底意味着什么:不光是分配不公,而是没有消费动力;居委会取代业主委...
五岳散人
75,809 views
Terraform: A melhor forma de usar Cloud
1:53:31
Terraform: A melhor forma de usar Cloud
Fabricio Veronez
2,458 views
How To Speak Fluently In English About Almost Anything
1:49:55
How To Speak Fluently In English About Alm...
EnglishAnyone
3,212,308 views
Is This the End of Crossplane? Compose Kubernetes Resources with kro
30:01
Is This the End of Crossplane? Compose Kub...
DevOps Toolkit
9,319 views
The intro to Docker I wish I had when I started
18:27
The intro to Docker I wish I had when I st...
typecraft
375,027 views
O que você precisa saber sobre DevOps em 2025
1:16:46
O que você precisa saber sobre DevOps em 2025
Fabricio Veronez
5,073 views
O QUE ACONTECEU COM O SKYPE?
23:19
O QUE ACONTECEU COM O SKYPE?
Conhecimento Disruptivo
42,626 views
Evolution of software architecture with the co-creator of UML (Grady Booch)
1:30:43
Evolution of software architecture with th...
The Pragmatic Engineer
105,620 views
Copyright © 2025. Made with ♥ in London by YTScribe.com