SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
Um linux container engine
@HudsonBrendon
hudsonbrendon.com
github.com/hudsonbrendon
twitter.com/hudsonbrendon
contato.hudsonbrendon@gmail.com
Agenda
● Conhecendo o docker
● Criando imagens, contêineres, etc
● Dockerfile
● Dockerhub
● Instalando
● Demos
Contêineres, contêineres e contêineres
O problema
Vms x Contêineres
Camadas: Imagens e contêineres
Camadas: Imagens e contêineres
Camadas: Imagens e contêineres
Camadas: Imagens e contêineres
Imagens
● Template read only;
● Contém os arquivos que vão executar a aplicação.
Normalmente bibliotecas, frameworks, arquivos do SO;
● Há imagens de SO: Ubuntu, Debian, CentOS, etc;
● Há imagens de ambientes: Python, Ruby, Python, etc;
● Imagens podem ser raiz ou apontar para um ‘pai’;
● Podem ser criadas por um Dockerfile ou por um
commit;
● Formato: usuário/nomedaimagem, e imagens oficiais
não tem nome do usuário.
Contêineres
● São iniciados a partir de imagens e rodam sua aplicação (docker
run);
● Podem ser commitados para gerar imagens (docker commit);
● Se comunicam via rede e o ambiente externo e/ou com outros
contêineres;
● Tem sua execução controlada pelo host (CPU, memória, etc);
● Podem parar (docker stop), reiniciar (docker restart, docker start),
ser apagado (docker rm), pausar (docker pause) e continuar
(docker unpause);
● Tem nome;
● Podem ser descartados ou persistentes;
● Normalmente rodam somente um processo.
DEMO
LISTANDO IMAGENS
RODANDO UM CONTÊINER
LISTANDO, PARANDO,
REINICIANDO CONTÊINERES
Por que é importante para
desenvolvedores?
● Fácil de começar a desenvolver;
● Você pode usar Window, Linux ou Mac
● Se funciona na sua máquina:
○ vai funcionar na máquina de todos;
○ vai passar no build e vai funcionar em produção;
● Fácil de montar o ambiente;
● Fácil de estruturar a arquitetura;
● Sem conflito entre diferentes projetos;
● Rápido, Muito, muito, muito rápido.
Por que é importante para sysadmins?
Fácil de colocar em produção;
É trivial montar ambientes padronizados para dev, qa e
produção;
Se passou na build vai funcionar em produção;
É fácil escalar;
É fácil dar prioridade para uma aplicação sobre outra;
Permite aumentar a densidade de uma máquina.
Open source
● Disponível em github.com/docker;
● Apache2 (permissiva, você detem uma licença para
fazer oque quiser);
● Escrito em Go;
● Monetização atravéz de serviços adicionais opcionais
e que você pode contruir por conta própria se quiser;
● 900+ contribuidores;
● Diversos projetos adicionais (composer, libcontainer,
etc).
Instalando
● No linux a instalação é feita apenas com uma
única linha que você roda no terminal;
● Por causa das dependências com o kernel do
linux, Docker não roda diretamente no windows
ou no Mac;
● No Windows ou no Mac rode com Boot2Docker,
que deixa tudo rápido, ou rode diretamente em
uma VM.
Quem usa?
Dockerfile
● É o “fonte” de uma imagem;
● É uma maneira de gerar imagens, e é a melhor
maneira;
● Fácil de saber o que há em uma imagem: leia o
Dockerfile;
● Você indica a imagem pai, arquivos para adicionar,
comandos para rodar ao criar a imagem, o comando
que vai rodar a imagem em si, etc;
● Compilado com ‘docker build’;
● .dockerignore.
Um Dockerfile
FROM ubuntu:14.04
MAINTAINER Hudson Brendon <contato.hudsonbrendon@gmal.com>
# pip requirements
ADD /requirements/requirements.txt /home/requirements/requirements.txt
# update e upgrade
RUN apt-get -yq update && apt-get -yq upgrade
# enstall pre-requisites
RUN apt-get -yq install build-essential python-pip python-dev git vim
# pip install packages
RUN pip install -r /home/requirements/requirements.txt
# expose the port
EXPOSE 8000
CMD ["/bin/bash"]
DEMO
BAIXANDO UMA IMAGEM
CRIANDO UMA IMAGEM
EMPURRANDO UMA IMAGEM
PARA O HUB
Mais informações
● Docker: docker.com
● Tutorial: docker.com/tryit
● Boot2Docker: boot2docker.io
Dúvidas?
Hudson Brendon
contato.hudsonbrendon@gmail.com
@hudsonbrendon

Mais conteúdo relacionado

Mais procurados

Vagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoVagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoDiogo Lucas
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o DockerWebSix
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers DockerMatheus Fidelis
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Renato Groff
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerWaldemar Neto
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao dockerBenicio Ávila
 
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
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerBruno Ricardo Siqueira
 
Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerWellington Silva
 
Um milhao de usuários simultâneos
Um milhao de usuários simultâneosUm milhao de usuários simultâneos
Um milhao de usuários simultâneosFernando Ike
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Renato Groff
 
Docker - minicurso utfpr 2017
Docker -  minicurso utfpr 2017Docker -  minicurso utfpr 2017
Docker - minicurso utfpr 2017Fabio Janiszevski
 

Mais procurados (20)

O que é Docker?
O que é Docker?O que é Docker?
O que é Docker?
 
Vagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoVagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolso
 
Iniciando com docker
Iniciando com dockerIniciando com docker
Iniciando com docker
 
Docker: uma visão geral
Docker: uma visão geralDocker: uma visão geral
Docker: uma visão geral
 
Introdução à plataforma Docker
Introdução à plataforma DockerIntrodução à plataforma Docker
Introdução à plataforma Docker
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o Docker
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e Docker
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Bem vindo ao Docker
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao 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
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando Docker
 
Conceitos Basicos e Docker - Java Noroeste
Conceitos Basicos e Docker - Java NoroesteConceitos Basicos e Docker - Java Noroeste
Conceitos Basicos e Docker - Java Noroeste
 
Vagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + dockerVagrant vs docker? Melhor vagrant + docker
Vagrant vs docker? Melhor vagrant + docker
 
Estudo de caso - Uso Docker no Desenvolvimento
Estudo de caso - Uso Docker no DesenvolvimentoEstudo de caso - Uso Docker no Desenvolvimento
Estudo de caso - Uso Docker no Desenvolvimento
 
Um milhao de usuários simultâneos
Um milhao de usuários simultâneosUm milhao de usuários simultâneos
Um milhao de usuários simultâneos
 
Docker
DockerDocker
Docker
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
 
Docker - minicurso utfpr 2017
Docker -  minicurso utfpr 2017Docker -  minicurso utfpr 2017
Docker - minicurso utfpr 2017
 

Semelhante a Docker: um linux container engine

JavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorldJavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorldThiago Soares
 
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
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfdadalt1
 
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com DockerAécio Pires
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao DockerRafael Dutra
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes Rhuan Karlus Silva
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containerstdc-globalcode
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo realEvandro Silvestre
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker BásicoAndré Justi
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: IntroduçãoJugVale
 

Semelhante a Docker: um linux container engine (20)

JavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorldJavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorld
 
Iniciando com docker
Iniciando com dockerIniciando com docker
Iniciando com docker
 
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
 
Docker
DockerDocker
Docker
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
 
Olá docker
Olá dockerOlá docker
Olá docker
 
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker
[Unirede] Webinar: Transportando as aplicações entre vários ambientes com Docker
 
Docker + Django
Docker + DjangoDocker + Django
Docker + Django
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao Docker
 
Aulão de docker
Aulão de dockerAulão de docker
Aulão de docker
 
Docker meetup
Docker meetupDocker meetup
Docker meetup
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes
 
Conheça o Docker
Conheça o DockerConheça o Docker
Conheça o Docker
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
 
Docker para iniciantes
Docker para iniciantesDocker para iniciantes
Docker para iniciantes
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 
Docker fundamentos
Docker fundamentosDocker fundamentos
Docker fundamentos
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker Básico
 
Alagoas Dev Day
Alagoas Dev DayAlagoas Dev Day
Alagoas Dev Day
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: Introdução
 

Docker: um linux container engine

  • 3. Agenda ● Conhecendo o docker ● Criando imagens, contêineres, etc ● Dockerfile ● Dockerhub ● Instalando ● Demos
  • 6.
  • 7.
  • 8.
  • 10. Camadas: Imagens e contêineres
  • 11. Camadas: Imagens e contêineres
  • 12. Camadas: Imagens e contêineres
  • 13. Camadas: Imagens e contêineres
  • 14. Imagens ● Template read only; ● Contém os arquivos que vão executar a aplicação. Normalmente bibliotecas, frameworks, arquivos do SO; ● Há imagens de SO: Ubuntu, Debian, CentOS, etc; ● Há imagens de ambientes: Python, Ruby, Python, etc; ● Imagens podem ser raiz ou apontar para um ‘pai’; ● Podem ser criadas por um Dockerfile ou por um commit; ● Formato: usuário/nomedaimagem, e imagens oficiais não tem nome do usuário.
  • 15. Contêineres ● São iniciados a partir de imagens e rodam sua aplicação (docker run); ● Podem ser commitados para gerar imagens (docker commit); ● Se comunicam via rede e o ambiente externo e/ou com outros contêineres; ● Tem sua execução controlada pelo host (CPU, memória, etc); ● Podem parar (docker stop), reiniciar (docker restart, docker start), ser apagado (docker rm), pausar (docker pause) e continuar (docker unpause); ● Tem nome; ● Podem ser descartados ou persistentes; ● Normalmente rodam somente um processo.
  • 16. DEMO LISTANDO IMAGENS RODANDO UM CONTÊINER LISTANDO, PARANDO, REINICIANDO CONTÊINERES
  • 17. Por que é importante para desenvolvedores? ● Fácil de começar a desenvolver; ● Você pode usar Window, Linux ou Mac ● Se funciona na sua máquina: ○ vai funcionar na máquina de todos; ○ vai passar no build e vai funcionar em produção; ● Fácil de montar o ambiente; ● Fácil de estruturar a arquitetura; ● Sem conflito entre diferentes projetos; ● Rápido, Muito, muito, muito rápido.
  • 18. Por que é importante para sysadmins? Fácil de colocar em produção; É trivial montar ambientes padronizados para dev, qa e produção; Se passou na build vai funcionar em produção; É fácil escalar; É fácil dar prioridade para uma aplicação sobre outra; Permite aumentar a densidade de uma máquina.
  • 19. Open source ● Disponível em github.com/docker; ● Apache2 (permissiva, você detem uma licença para fazer oque quiser); ● Escrito em Go; ● Monetização atravéz de serviços adicionais opcionais e que você pode contruir por conta própria se quiser; ● 900+ contribuidores; ● Diversos projetos adicionais (composer, libcontainer, etc).
  • 20. Instalando ● No linux a instalação é feita apenas com uma única linha que você roda no terminal; ● Por causa das dependências com o kernel do linux, Docker não roda diretamente no windows ou no Mac; ● No Windows ou no Mac rode com Boot2Docker, que deixa tudo rápido, ou rode diretamente em uma VM.
  • 22. Dockerfile ● É o “fonte” de uma imagem; ● É uma maneira de gerar imagens, e é a melhor maneira; ● Fácil de saber o que há em uma imagem: leia o Dockerfile; ● Você indica a imagem pai, arquivos para adicionar, comandos para rodar ao criar a imagem, o comando que vai rodar a imagem em si, etc; ● Compilado com ‘docker build’; ● .dockerignore.
  • 23. Um Dockerfile FROM ubuntu:14.04 MAINTAINER Hudson Brendon <contato.hudsonbrendon@gmal.com> # pip requirements ADD /requirements/requirements.txt /home/requirements/requirements.txt # update e upgrade RUN apt-get -yq update && apt-get -yq upgrade # enstall pre-requisites RUN apt-get -yq install build-essential python-pip python-dev git vim # pip install packages RUN pip install -r /home/requirements/requirements.txt # expose the port EXPOSE 8000 CMD ["/bin/bash"]
  • 24. DEMO BAIXANDO UMA IMAGEM CRIANDO UMA IMAGEM EMPURRANDO UMA IMAGEM PARA O HUB
  • 25. Mais informações ● Docker: docker.com ● Tutorial: docker.com/tryit ● Boot2Docker: boot2docker.io