SlideShare uma empresa Scribd logo
1 de 26
Conheça o Docker
Prof. Uirá Ribeiro
Introdução ao Docker
 Como entregar software sem dor ?
 Como garantir que o software que roda em desenvolvimento vai rodar
em produção?
 Como criar um ambiente em desenvolvimento que tenha a
infraestrutura de produção sem ”duplicar” a estrutura e dobrar os
custos?
 Como garantir que as várias camadas e peças de software funcionem
bem?
 Como não colocar ”todos os ovos” em uma só cesta ?
Introdução ao Docker
 O Docker funciona como um ”Contêiner” de software, capaz de
encapsular tudo que o software precisa para rodar
 Roda no Kernel existente
 Isola o ambiente do contêiner do ambiente do Host
 Possibilita criar uma arquitetura de micro-serviços
 Muito fácil de criar contêineres
 Os contêineres são executados de forma rápida e podem ser parados e
reiniciados e trocados em segundos
Introdução ao Docker
Introdução ao Docker
 Overhead de processamento é quase inexistente
 Overhead de rede é mínimo
 Contêineres são muito leves
 Um laptop típico pode rodar 10-100 contêineres facilmente
 Um servidor típico pode rodar de 100-1000 contêineres
 O que roda local, irá rodar no servidor com o mesmo comportamento,
independente da versão, da distribuição e das dependências de
software
Introdução ao Docker
Introdução ao Docker
 Um contêiner tem seu próprio espaço de processo (namespaces)
 Um contêiner tem sua própria rede interna
 Um contêiner pode rodar programas como ”root” sem problemas
 Pode ter seu próprio /sbin /etc /etc/init sem afetar o host
 Seu sistema de arquivos é incremental ”por camadas”. Isso permite
um rollback fácil.
 Docker CPU performance = performance nativa
 Docker Memória = % pequeno diferente da memória do Host
 Docker Rede = % pequeno de overhead
Pid namespace
Mnt namespace
Ipc namespace
Docker não é uma VM
 Docker NÃO é uma VM leve
 Docker aproveita o KERNEL do Host
 Docker não precisa de SO Convidado
 Docker isola o processo do Host
 Docker permite que você execute um ambiente diferente do ambiente
do Host
 Docker permite que você tenha uma biblioteca com dependências e
versões diferentes do Host
 Docker pode rodar em uma VM
 Docker pode rodar até em um Contêiner
VM x Docker
Como entregar software para diferentes
dispositivos ?
O que cabe no contêiner?
 Seu código fonte todo
 Seus binários
 Suas bibliotecas
 Seu gerenciador de pacotes favorito (APT-GET, RPM, YUM, YAST, etc)
 Seus aplicativos
 Seus serviços de SGBD (Mysql, Oracle, Mongo, PostgreSQL, etc
 Seus dados
E fora do contêiner, fica o que?
 Logging
 Acesso remoto
 Configuração de rede
 Monitoramento
E meus dados?
 Volumes permitem que um diretório específico exista dentro e fora do
contêiner
 Os contêineres podem compartilhar volumes em um mesmo Host
 Um diretório pode persistir mesmo que um contêiner seja deletado
 Volumes com dados podem ser criados em um Dockerfile ou CLI
 Uma alteração no sistema de arquivos de um contêiner pode ser
copiada para demais contêineres
Chega de Dev x Ops
Tá, mas qual a grande sacada?
 Sim, você pode fazer tudo com VMs.
 Sim, você pode automatizar com scripts
 Mas a graaaaaaande questão é fazer tudo r-i-d-i-c-u-l-a-m-e-n-t-e
fácil de usar
 Você pode utilizar as imagens de outras pessoas (SIM, o Ecossistema)
 Continua entrega / integração / teste / orquestração de software
 Você pode criar e compartilhar imagens (todos da equipe rodam a
mesma coisa)
 Provê uma maneira simples, PADRÃO e que pode ser REPRODUZIDA
com facilidade de entregar imagens
Configuração Simples
 Sim, funciona no LINUX
 Sim, funciona no MAC
 Sim, funciona no Windows
 Sim, funciona em VMs
 Altamente escalável
 Instalação simples através de git
 Provisionamento simples na AWS, Rackspace, Digital Ocean e Azure
Componentes do Docker
 Docker Daemon = roda em background, gerencia os contêineres e
imagens. Funciona através de uma API HTTP
 Docker Contêiner = Unidade padrão que os aplicativos e serviços residem
e são executados
 Docker Imagem = A base de um contêiner.
 Docker CLI = cliente que conversa com a API HTTP para processar as
requisições
 Docker Engine = Cria, entrega e roda os contêineres
 Docker Registry = Repositório publico ou privado de imagens
 Demais ferramentas de orquestração = ajudam na entrega e
monitoramento de contêineres
Fluxo de Trabalho do Docker
 Você trabalha com todos os componentes que precisa no
desenvolvimento
 Todos da equipe de desenvolvimento fazer código com o mesmo
ambiente (compartilham as imagens)
 Outros serviços necessários do código (RADIS, MEMCACHE, Banco)
também rodam nos contêineres. Você testa como deve ser no servidor
 Os contêineres podem ser criados em segundos e rodam
instantaneamente
Satisfeito com o resultado?
 Se você ficar satisfeito com o resultado, pode enviar sua imagem para
um repositório;
 Pode rodar automaticamente o contêiner em CI/CD
 Pode rodar em produção
 Permite crescimento fácil com mais contêineres e Loadbalance
FELICIDADE!!!
 E se algo der errado? Volte ao contêiner anterior sem dor!
Simples assim:
 host$ docker run ubuntu bash
 ubuntu$ apt-get install aquilo-e-isso
 host$ docker commit <conteiner_id> minhaimagem
 host$ docker run minhaimagem bash
 minhaimagem$ git clone git://..../meucódigo
 host$ docker commit <conteiner_id> minhaimagem
 host$ docker tag minhaimagem <usuário/minhaimagem>
 host$ docker push <usuário/minhaimagem>
Construir -> Entregar
Agilidade + Portabilidade + Controle
Conheça o Docker e como ele pode melhorar sua entrega de software

Mais conteúdo relacionado

Mais procurados

Desmistificando a Amazon AWS
Desmistificando a Amazon AWSDesmistificando a Amazon AWS
Desmistificando a Amazon AWSMatheus Fidelis
 
Verdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre DockerVerdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre DockerLuís Bianchin
 
Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerWellington Silva
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoTobias Sette
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)Wellington Silva
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida realFernando Ike
 
Containers PostgreSQL com a Crunchy Container Suite
Containers PostgreSQL com a Crunchy Container SuiteContainers PostgreSQL com a Crunchy Container Suite
Containers PostgreSQL com a Crunchy Container SuiteRoberto Mello
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoSérgio Lima
 
Orquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e ComposeOrquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e ComposeRoberto Hashioka
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao dockerBenicio Ávila
 
Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Wellington Silva
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o DockerWebSix
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerWaldemar Neto
 

Mais procurados (20)

Desmistificando a Amazon AWS
Desmistificando a Amazon AWSDesmistificando a Amazon AWS
Desmistificando a Amazon AWS
 
Apresentação docker
Apresentação dockerApresentação docker
Apresentação docker
 
Verdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre DockerVerdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre Docker
 
Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + docker
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de uso
 
Bem vindo ao Docker
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao Docker
 
Docker: uma visão geral
Docker: uma visão geralDocker: uma visão geral
Docker: uma visão geral
 
O que é Docker?
O que é Docker?O que é Docker?
O que é Docker?
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
 
Freedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, dockerFreedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, docker
 
Containers PostgreSQL com a Crunchy Container Suite
Containers PostgreSQL com a Crunchy Container SuiteContainers PostgreSQL com a Crunchy Container Suite
Containers PostgreSQL com a Crunchy Container Suite
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimento
 
Orquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e ComposeOrquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e Compose
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o Docker
 
Docker compose
Docker composeDocker compose
Docker compose
 
Iniciando com docker
Iniciando com dockerIniciando com docker
Iniciando com docker
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e Docker
 

Semelhante a Conheça o Docker e como ele pode melhorar sua entrega de software

Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDextra Sistemas / Etec Itu
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfdadalt1
 
Transportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com DockerTransportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com DockerAécio Pires
 
Orchestrando na linha
Orchestrando na linhaOrchestrando na linha
Orchestrando na linhamatheuscmpm
 
Docker e outras ferramentas Devops
Docker e outras ferramentas DevopsDocker e outras ferramentas Devops
Docker e outras ferramentas DevopsCristian Trucco
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker BásicoAndré Justi
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4David Ruiz
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker ContainersHugo Henley
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação DockerAndré Justi
 
Escalando o ambiente de desenvolvimento com cli em ruby
Escalando o ambiente de desenvolvimento com cli em rubyEscalando o ambiente de desenvolvimento com cli em ruby
Escalando o ambiente de desenvolvimento com cli em rubyRadamés Roriz
 
Usp codelabs (docker)
Usp codelabs (docker)Usp codelabs (docker)
Usp codelabs (docker)TechCobli
 
O poder dos microsserviços com Docker e Kubernetes
O poder dos microsserviços com Docker e KubernetesO poder dos microsserviços com Docker e Kubernetes
O poder dos microsserviços com Docker e KubernetesWillian Azevedo
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVinícius Krolow
 
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Renato Groff
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaMatheus Fidelis
 

Semelhante a Conheça o Docker e como ele pode melhorar sua entrega de software (20)

Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
 
Usando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NETUsando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NET
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
 
Transportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com DockerTransportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com Docker
 
Orchestrando na linha
Orchestrando na linhaOrchestrando na linha
Orchestrando na linha
 
Docker e outras ferramentas Devops
Docker e outras ferramentas DevopsDocker e outras ferramentas Devops
Docker e outras ferramentas Devops
 
Docker meetup
Docker meetupDocker meetup
Docker meetup
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker Básico
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
 
Docker
DockerDocker
Docker
 
Docker
DockerDocker
Docker
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker Containers
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
Escalando o ambiente de desenvolvimento com cli em ruby
Escalando o ambiente de desenvolvimento com cli em rubyEscalando o ambiente de desenvolvimento com cli em ruby
Escalando o ambiente de desenvolvimento com cli em ruby
 
Usp codelabs (docker)
Usp codelabs (docker)Usp codelabs (docker)
Usp codelabs (docker)
 
O poder dos microsserviços com Docker e Kubernetes
O poder dos microsserviços com Docker e KubernetesO poder dos microsserviços com Docker e Kubernetes
O poder dos microsserviços com Docker e Kubernetes
 
Olá docker
Olá dockerOlá docker
Olá docker
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizado
 
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG Cabreúva
 

Conheça o Docker e como ele pode melhorar sua entrega de software

  • 1. Conheça o Docker Prof. Uirá Ribeiro
  • 2. Introdução ao Docker  Como entregar software sem dor ?  Como garantir que o software que roda em desenvolvimento vai rodar em produção?  Como criar um ambiente em desenvolvimento que tenha a infraestrutura de produção sem ”duplicar” a estrutura e dobrar os custos?  Como garantir que as várias camadas e peças de software funcionem bem?  Como não colocar ”todos os ovos” em uma só cesta ?
  • 3. Introdução ao Docker  O Docker funciona como um ”Contêiner” de software, capaz de encapsular tudo que o software precisa para rodar  Roda no Kernel existente  Isola o ambiente do contêiner do ambiente do Host  Possibilita criar uma arquitetura de micro-serviços  Muito fácil de criar contêineres  Os contêineres são executados de forma rápida e podem ser parados e reiniciados e trocados em segundos
  • 5. Introdução ao Docker  Overhead de processamento é quase inexistente  Overhead de rede é mínimo  Contêineres são muito leves  Um laptop típico pode rodar 10-100 contêineres facilmente  Um servidor típico pode rodar de 100-1000 contêineres  O que roda local, irá rodar no servidor com o mesmo comportamento, independente da versão, da distribuição e das dependências de software
  • 7. Introdução ao Docker  Um contêiner tem seu próprio espaço de processo (namespaces)  Um contêiner tem sua própria rede interna  Um contêiner pode rodar programas como ”root” sem problemas  Pode ter seu próprio /sbin /etc /etc/init sem afetar o host  Seu sistema de arquivos é incremental ”por camadas”. Isso permite um rollback fácil.  Docker CPU performance = performance nativa  Docker Memória = % pequeno diferente da memória do Host  Docker Rede = % pequeno de overhead
  • 11. Docker não é uma VM  Docker NÃO é uma VM leve  Docker aproveita o KERNEL do Host  Docker não precisa de SO Convidado  Docker isola o processo do Host  Docker permite que você execute um ambiente diferente do ambiente do Host  Docker permite que você tenha uma biblioteca com dependências e versões diferentes do Host  Docker pode rodar em uma VM  Docker pode rodar até em um Contêiner
  • 13. Como entregar software para diferentes dispositivos ?
  • 14. O que cabe no contêiner?  Seu código fonte todo  Seus binários  Suas bibliotecas  Seu gerenciador de pacotes favorito (APT-GET, RPM, YUM, YAST, etc)  Seus aplicativos  Seus serviços de SGBD (Mysql, Oracle, Mongo, PostgreSQL, etc  Seus dados
  • 15. E fora do contêiner, fica o que?  Logging  Acesso remoto  Configuração de rede  Monitoramento
  • 16. E meus dados?  Volumes permitem que um diretório específico exista dentro e fora do contêiner  Os contêineres podem compartilhar volumes em um mesmo Host  Um diretório pode persistir mesmo que um contêiner seja deletado  Volumes com dados podem ser criados em um Dockerfile ou CLI  Uma alteração no sistema de arquivos de um contêiner pode ser copiada para demais contêineres
  • 17. Chega de Dev x Ops
  • 18. Tá, mas qual a grande sacada?  Sim, você pode fazer tudo com VMs.  Sim, você pode automatizar com scripts  Mas a graaaaaaande questão é fazer tudo r-i-d-i-c-u-l-a-m-e-n-t-e fácil de usar  Você pode utilizar as imagens de outras pessoas (SIM, o Ecossistema)  Continua entrega / integração / teste / orquestração de software  Você pode criar e compartilhar imagens (todos da equipe rodam a mesma coisa)  Provê uma maneira simples, PADRÃO e que pode ser REPRODUZIDA com facilidade de entregar imagens
  • 19. Configuração Simples  Sim, funciona no LINUX  Sim, funciona no MAC  Sim, funciona no Windows  Sim, funciona em VMs  Altamente escalável  Instalação simples através de git  Provisionamento simples na AWS, Rackspace, Digital Ocean e Azure
  • 20. Componentes do Docker  Docker Daemon = roda em background, gerencia os contêineres e imagens. Funciona através de uma API HTTP  Docker Contêiner = Unidade padrão que os aplicativos e serviços residem e são executados  Docker Imagem = A base de um contêiner.  Docker CLI = cliente que conversa com a API HTTP para processar as requisições  Docker Engine = Cria, entrega e roda os contêineres  Docker Registry = Repositório publico ou privado de imagens  Demais ferramentas de orquestração = ajudam na entrega e monitoramento de contêineres
  • 21. Fluxo de Trabalho do Docker  Você trabalha com todos os componentes que precisa no desenvolvimento  Todos da equipe de desenvolvimento fazer código com o mesmo ambiente (compartilham as imagens)  Outros serviços necessários do código (RADIS, MEMCACHE, Banco) também rodam nos contêineres. Você testa como deve ser no servidor  Os contêineres podem ser criados em segundos e rodam instantaneamente
  • 22. Satisfeito com o resultado?  Se você ficar satisfeito com o resultado, pode enviar sua imagem para um repositório;  Pode rodar automaticamente o contêiner em CI/CD  Pode rodar em produção  Permite crescimento fácil com mais contêineres e Loadbalance FELICIDADE!!!  E se algo der errado? Volte ao contêiner anterior sem dor!
  • 23. Simples assim:  host$ docker run ubuntu bash  ubuntu$ apt-get install aquilo-e-isso  host$ docker commit <conteiner_id> minhaimagem  host$ docker run minhaimagem bash  minhaimagem$ git clone git://..../meucódigo  host$ docker commit <conteiner_id> minhaimagem  host$ docker tag minhaimagem <usuário/minhaimagem>  host$ docker push <usuário/minhaimagem>