SlideShare uma empresa Scribd logo
1 de 24
David Ruiz
CTO Futura Networks / Campus Party
@wupsbr – wupsbr@gmail.com – http://wupsbr.com
Uma abstração opensource que automatiza a
implementação de qualquer aplicação de forma
leve e portátil em containers auto-suficientes,
onde poderão ser executados nos mais diversos
ambientes.
O Que é Docker?
Adoção muito rápida
Static website
Web frontend
User DB
Queue Analytics DB
Background workers
API endpoint
nginx 1.5 + modsecurity + openssl + bootstrap 2
postgresql + pgv8 + v8
hadoop + hive + thrift + OpenJDK
Ruby + Rails + sass + Unicorn
Redis + redis-sentinel
Python 3.0 + celery + pyredis + libcurl + ffmpeg + libopencv + nodejs +
phantomjs
Python 2.7 + Flask + pyredis + celery + psycopg + postgresql-client
Development VM
QA server
Public Cloud
Disaster recovery
Contributor’s laptop
Production Servers
MultiplicityofStacksMultiplicityof
hardware
environments
Production Cluster
Customer Data Center
Doservicesandapps
interact
appropriately?
CanImigrate
smoothlyand
quickly?
O desafio
Static website
Web frontend
Background workers
User DB
Analytics DB
Queue
Development
VM
QA Server
Single Prod
Server
Onsite
Cluster
Public Cloud
Contributor’s
laptop
Customer
Servers
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
A matriz do inferno
MultiplicityofGoodsMultipilicityof
methodsfor
transporting/storing
DoIworryabout
howgoodsinteract
(e.g.coffeebeans
nexttospices)
CanItransportquickly
andsmoothly
(e.g.fromboattotrain
totruck)
Transporte de carga pré-1960
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
Outra matriz do inferno!
MultiplicityofGoods
Multiplicityofmethodsfor
transporting/storing
DoIworryabouthow
goodsinteract(e.g.coffee
beansnexttospices)
CanItransportquicklyand
smoothly
(e.g.fromboattotrainto
truck)
...no caminho , podem ser
carregados e descarregados,
empilhados, transportados de
forma eficiente em longas
distâncias, e transferidos de um
meio de transporte para outro.
Um contêiner padrão que é
carregado com praticamente
todos os bens, e permanece
fechado até que ele atinja a
entrega final.
Solução: Envio Intermodal com Containers
Static website Web frontendUser DB Queue Analytics DB
Development VM
QA server
Public Cloud Contributor’s laptop
MultiplicityofStacksMultiplicityofhardware
environments
Production ClusterCustomer Data Center
Doservicesandapps
interactappropriately?
CanImigratesmoothlyand
quickly
...que pode ser manipulado
através de operações-padrão e
executar de forma consistente
em praticamente qualquer
plataforma de hardware.
Uma engine que permite que
qualquer carga útil venha a
ser encapsulada como um
recipiente auto-suficiente
leve, portátil...
Docker é um container para código
• Faça o build uma vez e…(finalmente) rode em qualquer lugar**
• Um ambiente execução limpo, seguro, higiênico e portátil para o seu aplicativo.
• Sem preocupações com falta de dependências, pacotes e outros pontos de dor durante
as implantações subsequentes.
• Execute cada aplicativo em seu próprio container, assim você pode executar várias
versões de bibliotecas e outras dependências para cada aplicação sem se preocupar.
• Automatizar testes, integração, packaging... você pode fazer um script para qualquer
coisa.
• Reduzir/eliminar as preocupações sobre compatibilidade em diferentes plataformas,
suas ou de seus clientes.
• Cheap, zero-penalty containers to deploy services? A VM without the overhead of a VM?
• Instant replay and reset of image snapshots? That’s the power of Docker
* With the 0.7 release, we support any x86 server running a modern Linux kernel (3.2+ generally. 2.6.32+ for RHEL 6.5+,
Fedora, & related)
Porque os desenvolvedores se importam
• Configure uma vez… rode qualquer coisa
• Faça todo o ciclo de vida de uma aplicação mais eficiente, consistente e
repetível.
• Aumentar a qualidade do código produzido pelos desenvolvedores.
• Eliminar inconsistências entre desenvolvimento, teste, produção e
ambientes de clientes.
• Suporte a segregação de funções.
• Melhora significativamente a velocidade e a confiabilidade da
implantação contínua e dos sistemas de integração contínua.
• Porque os recipientes são tão leves, tem o potencial de solucionar os
problemas de desempenho, os custos, a implantação e problemas de
portabilidade normalmente associados com VMs
Porque os desenvolvedores se importam
App
A
Hypervisor (Type 2)
Host OS
Server
Guest
OS
Bins/
Libs
App
A’
Guest
OS
Bins/
Libs
App
B
Guest
OS
Bins/
Libs
AppA’
Docker
Host OS
Server
Bins/Libs
AppA
Bins/Libs
AppB
AppB’
AppB’
AppB’
VM
Container
Containers são isolados, mas
compartilham o OS e, quando
apropriado, bins/libraries
Guest
OS
Guest
OS
...o que resulta em implementação
significativamente mais rápida, muito
menos sobrecarga, migração mais fácil,
restart mais rápido
Containers vs VMs
Bins/
Libs
App
A
Original App
(No OS to take
up space, resources,
or require restart)
AppΔ
Bins/
App
A
Bins/
Libs
App
A’
Guest
OS
Bins/
Libs
Modified App
Copy on write
capabilities allow
us to only save the diffs
Between container A
and container
A’
VMs
Every app, every copy of an
app, and every slight modification
of the app requires a new virtual server
App
A
Guest
OS
Bins/
Libs
Copy of
App
No OS. Can
Share bins/libs
App
A
Guest
OS
Guest
OS
VMs Containers
Porque containers em Docker são leves?
Source
Code
Repository
Dockerfile
For
A
Docker Engine
Docker
Container
Image
Registry
Build
Docker
Host 2 OS (Linux)
ContainerA
ContainerB
ContainerC
ContainerA
Push
Search
Pull
Run
Host 1 OS (Linux)
Princípios básicos do Docker
Docker Engine
Docker
Container
Image
Registry
Docker Engine
Push
Update
Bins/
Libs
App
A
AppΔ
Bins/
Base
Container
Image
Host is now running A’’
Container
Mod A’’
AppΔ
Bins/
Bins/
Libs
App
A
Bins/
Bins/
Libs
App
A’’
Host running A wants to upgrade to A’’.
Requests update. Gets only diffs
Container
Mod A’
Mudanças e atualizações
• Ferramenta que facilita a construção, distribuição e execução de
qualquer a plicação em qualquer ambiente (VM, nuvem, servidor
fisico, laptop)
• Sua aplicação roda de forma isolada com seus próprios processos,
IP e file system, independente do host. Ou seja, dentro de um
container
• Construção: empacota sua aplicação numa imagem (docker build)!
• Distribuição: Move a imagem entre diferentes maquinas (docker
push/pull)!
• Execução: Execute sua aplicação (docker run)!
O que é Docker Engine?
• Receita para criar uma imagem (container)
• Começa de uma base:
FROM ubuntu:14.04, fedora:20, debian:jessie
• Rode comandos:
RUN apt-get install –y firefox ssh
• Copie seus dados:
ADD /app/code /code/
• Crie scripts de inicialização ou execute arquivos binários:
CMD start_firefox.sh, /usr/sbin/sshd –D
Construção: docker build – Dockerfile
---------------------------------------------------
FROM ubuntu:14.04
MAINTAINER Seu Nome (z@z.com)
RUN apt-get update && apt-get install -y nginx
RUN echo ’Hello Developers from Sao Paulo' >
/usr/share/nginx/html/index.html
EXPOSE 80
---------------------------------------------------
$ docker build –t rogaha/web .
$ docker run –d –p 80:80 –-name container_web_demo_sp rogaha/web
Exemplo de Dockerfile
---------------------------------------------------
FROM ubuntu:14.04
MAINTAINER Seu Nome (z@z.com)
RUN apt-get update && apt-get install -y nginx
RUN echo ’Hello Developers from Sao Paulo' >
/usr/share/nginx/html/index.html
EXPOSE 80
---------------------------------------------------
$ docker build –t rogaha/web .
$ docker run –d –p 80:80 –-name container_web_demo_sp rogaha/web
Exemplo de Dockerfile
• Transfere sua aplicação dockerzizada de um servidor para outro
• Registry Hub: Repositório central de imagens criadas pela
comunidade
• O objetivo principal do Registry Hub é facilitar a criação de
aplicações
• Milhares de images foram criadas e são mantidas pela
comunidade. Por exemplo: nginx, ubuntu, postgres, redis, node,
centos, wordpress, java:
• https://registry.hub.docker.com/repos/library/
Distribuição: docker pull / push
• Roda as aplicações de forma consistente e confiável
• Elimina os problemas de diferenças entre versionamento das
dependências
• Os containers rodam de forma isolada. Você pode rodar aplicações
em Debian, Ubuntu, CentOS na mesmo servidor/laptop
• Se funciona no seu laptop, irá funcionar no servidor
• RESOLVE grande parte dos problemas entre DEV e OPS
Execução: docker run
David Ruiz
CTO Futura Networks / Campus Party
@wupsbr – wupsbr@gmail.com – http://wupsbr.com

Mais conteúdo relacionado

Mais procurados

Desmistificando a Amazon AWS
Desmistificando a Amazon AWSDesmistificando a Amazon AWS
Desmistificando a Amazon AWSMatheus Fidelis
 
QCon 2019 - Kubernetes Deepdive
QCon 2019 -  Kubernetes DeepdiveQCon 2019 -  Kubernetes Deepdive
QCon 2019 - Kubernetes DeepdiveRicardo Katz
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?Rafael Benevides
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasRodrigo Branas
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucaoFernando Ike
 
Programação para Web II: NodeJS
Programação para Web II:  NodeJSProgramação para Web II:  NodeJS
Programação para Web II: NodeJSAlex Camargo
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeRafael Benevides
 
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
 
Kubecon EU 2019 Remarks
Kubecon EU 2019 RemarksKubecon EU 2019 Remarks
Kubecon EU 2019 RemarksRicardo Katz
 
Estendendo o kubernetes
Estendendo o kubernetesEstendendo o kubernetes
Estendendo o kubernetesRicardo Katz
 
Node.js, Uma breve introdução
Node.js, Uma breve introduçãoNode.js, Uma breve introdução
Node.js, Uma breve introduçãoPablo Feijó
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJSGiovanni Bassi
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers DockerMatheus Fidelis
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida realFernando Ike
 
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
 
Escalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQEscalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQMatheus Fidelis
 

Mais procurados (20)

Desmistificando a Amazon AWS
Desmistificando a Amazon AWSDesmistificando a Amazon AWS
Desmistificando a Amazon AWS
 
QCon 2019 - Kubernetes Deepdive
QCon 2019 -  Kubernetes DeepdiveQCon 2019 -  Kubernetes Deepdive
QCon 2019 - Kubernetes Deepdive
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucao
 
Programação para Web II: NodeJS
Programação para Web II:  NodeJSProgramação para Web II:  NodeJS
Programação para Web II: NodeJS
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Docker volumes
Docker volumesDocker volumes
Docker volumes
 
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
 
Kubecon EU 2019 Remarks
Kubecon EU 2019 RemarksKubecon EU 2019 Remarks
Kubecon EU 2019 Remarks
 
Estendendo o kubernetes
Estendendo o kubernetesEstendendo o kubernetes
Estendendo o kubernetes
 
Node.js, Uma breve introdução
Node.js, Uma breve introduçãoNode.js, Uma breve introdução
Node.js, Uma breve introdução
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
Docker + Django
Docker + DjangoDocker + Django
Docker + Django
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
 
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
 
Escalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQEscalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQ
 

Destaque

node.js - Eventful JavaScript on the Server
node.js - Eventful JavaScript on the Servernode.js - Eventful JavaScript on the Server
node.js - Eventful JavaScript on the ServerDavid Ruiz
 
Postgresql các vấn đề thực tế
Postgresql các vấn đề thực tếPostgresql các vấn đề thực tế
Postgresql các vấn đề thực tếTechMaster Vietnam
 
Internet of Things
Internet of ThingsInternet of Things
Internet of ThingsDavid Ruiz
 
Varna conf nodejs-oss-microsoft-azure[final]
Varna conf nodejs-oss-microsoft-azure[final]Varna conf nodejs-oss-microsoft-azure[final]
Varna conf nodejs-oss-microsoft-azure[final]Mihail Mateev
 
Communication in Node.js
Communication in Node.jsCommunication in Node.js
Communication in Node.jsEdureka!
 
Windows aazuremobileservices
Windows aazuremobileservicesWindows aazuremobileservices
Windows aazuremobileservicesDhananjay Kumar
 

Destaque (7)

Node.js
Node.jsNode.js
Node.js
 
node.js - Eventful JavaScript on the Server
node.js - Eventful JavaScript on the Servernode.js - Eventful JavaScript on the Server
node.js - Eventful JavaScript on the Server
 
Postgresql các vấn đề thực tế
Postgresql các vấn đề thực tếPostgresql các vấn đề thực tế
Postgresql các vấn đề thực tế
 
Internet of Things
Internet of ThingsInternet of Things
Internet of Things
 
Varna conf nodejs-oss-microsoft-azure[final]
Varna conf nodejs-oss-microsoft-azure[final]Varna conf nodejs-oss-microsoft-azure[final]
Varna conf nodejs-oss-microsoft-azure[final]
 
Communication in Node.js
Communication in Node.jsCommunication in Node.js
Communication in Node.js
 
Windows aazuremobileservices
Windows aazuremobileservicesWindows aazuremobileservices
Windows aazuremobileservices
 

Semelhante a O que é Docker

Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersFrancisco Gonçalves
 
Docker: ganhe tempo e seja eficiente na entrega de serviços de TI
Docker: ganhe tempo e seja eficiente na entrega de serviços de TIDocker: ganhe tempo e seja eficiente na entrega de serviços de TI
Docker: ganhe tempo e seja eficiente na entrega de serviços de TIRicardo Ferreira Costa
 
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
 
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...iMasters
 
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
 
12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com DockerWellington Silva
 
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)Caio Candido
 
Apresentação Cloud - Open(Stack/Shift)
Apresentação Cloud - Open(Stack/Shift)Apresentação Cloud - Open(Stack/Shift)
Apresentação Cloud - Open(Stack/Shift)Raul Leite
 
Orchestrando na linha
Orchestrando na linhaOrchestrando na linha
Orchestrando na linhamatheuscmpm
 
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
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo realEvandro Silvestre
 
INT302 - VDI com Linux
INT302 - VDI com LinuxINT302 - VDI com Linux
INT302 - VDI com Linuxmestresemhd
 

Semelhante a O que é Docker (20)

Docker.io:
Docker.io: Docker.io:
Docker.io:
 
Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containers
 
Usando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NETUsando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NET
 
Docker: ganhe tempo e seja eficiente na entrega de serviços de TI
Docker: ganhe tempo e seja eficiente na entrega de serviços de TIDocker: ganhe tempo e seja eficiente na entrega de serviços de TI
Docker: ganhe tempo e seja eficiente na entrega de serviços de TI
 
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
 
Conheça o Docker
Conheça o DockerConheça o Docker
Conheça o Docker
 
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
 
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
 
12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com Docker
 
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
 
Apresentação Cloud - Open(Stack/Shift)
Apresentação Cloud - Open(Stack/Shift)Apresentação Cloud - Open(Stack/Shift)
Apresentação Cloud - Open(Stack/Shift)
 
Orchestrando na linha
Orchestrando na linhaOrchestrando na linha
Orchestrando na linha
 
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
 
Continuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na NuvemContinuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na Nuvem
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 
Alagoas Dev Day
Alagoas Dev DayAlagoas Dev Day
Alagoas Dev Day
 
Docker - Básico
Docker - BásicoDocker - Básico
Docker - Básico
 
Docker meetup
Docker meetupDocker meetup
Docker meetup
 
Docker
DockerDocker
Docker
 
INT302 - VDI com Linux
INT302 - VDI com LinuxINT302 - VDI com Linux
INT302 - VDI com Linux
 

Mais de David Ruiz

Developer Experience - Escalando Negócios com a melhor experiência ao desenvo...
Developer Experience - Escalando Negócios com a melhor experiência ao desenvo...Developer Experience - Escalando Negócios com a melhor experiência ao desenvo...
Developer Experience - Escalando Negócios com a melhor experiência ao desenvo...David Ruiz
 
Plataformas de Inovação - Criando Conexões
Plataformas de Inovação - Criando ConexõesPlataformas de Inovação - Criando Conexões
Plataformas de Inovação - Criando ConexõesDavid Ruiz
 
Arduino Day 2014 - Cloud para Internet das Coisas & Intel Galileo
Arduino Day 2014 - Cloud para Internet das Coisas & Intel GalileoArduino Day 2014 - Cloud para Internet das Coisas & Intel Galileo
Arduino Day 2014 - Cloud para Internet das Coisas & Intel GalileoDavid Ruiz
 
Hoodie na Campus Party Brasil 2013
Hoodie na Campus Party Brasil 2013Hoodie na Campus Party Brasil 2013
Hoodie na Campus Party Brasil 2013David Ruiz
 
Workshop Kit de Desenvolvimento IoT
Workshop Kit de Desenvolvimento IoTWorkshop Kit de Desenvolvimento IoT
Workshop Kit de Desenvolvimento IoTDavid Ruiz
 
Workshop de Firefox OS
Workshop de Firefox OSWorkshop de Firefox OS
Workshop de Firefox OSDavid Ruiz
 
Desenvolvendo para Firefox OS
Desenvolvendo para Firefox OSDesenvolvendo para Firefox OS
Desenvolvendo para Firefox OSDavid Ruiz
 
Introdução ao Firefox OS
Introdução ao Firefox OSIntrodução ao Firefox OS
Introdução ao Firefox OSDavid Ruiz
 
livre.fm - keynote
livre.fm - keynotelivre.fm - keynote
livre.fm - keynoteDavid Ruiz
 
GED - A caminho do conhecimento
GED - A caminho do conhecimentoGED - A caminho do conhecimento
GED - A caminho do conhecimentoDavid Ruiz
 
imax games - Desenvolvimento de Jogos
imax games - Desenvolvimento de Jogosimax games - Desenvolvimento de Jogos
imax games - Desenvolvimento de JogosDavid Ruiz
 
Modelagem 3D de personagens para jogos
Modelagem 3D de personagens para jogosModelagem 3D de personagens para jogos
Modelagem 3D de personagens para jogosDavid Ruiz
 
Ruby On Rails - Porque Utilizar?
Ruby On Rails - Porque Utilizar?Ruby On Rails - Porque Utilizar?
Ruby On Rails - Porque Utilizar?David Ruiz
 
Trabalhe na Abril Digital
Trabalhe na Abril DigitalTrabalhe na Abril Digital
Trabalhe na Abril DigitalDavid Ruiz
 
Lua para Jogos
Lua para JogosLua para Jogos
Lua para JogosDavid Ruiz
 
Web 2.0 e AJAX - Parte 3 / 3
Web 2.0 e AJAX - Parte 3 / 3Web 2.0 e AJAX - Parte 3 / 3
Web 2.0 e AJAX - Parte 3 / 3David Ruiz
 
Tendências de Search Egines - Microsoft
Tendências de Search Egines - MicrosoftTendências de Search Egines - Microsoft
Tendências de Search Egines - MicrosoftDavid Ruiz
 
Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3David Ruiz
 
Web 2.0 e AJAX - Parte 1 / 3
Web 2.0 e AJAX - Parte 1 / 3Web 2.0 e AJAX - Parte 1 / 3
Web 2.0 e AJAX - Parte 1 / 3David Ruiz
 

Mais de David Ruiz (19)

Developer Experience - Escalando Negócios com a melhor experiência ao desenvo...
Developer Experience - Escalando Negócios com a melhor experiência ao desenvo...Developer Experience - Escalando Negócios com a melhor experiência ao desenvo...
Developer Experience - Escalando Negócios com a melhor experiência ao desenvo...
 
Plataformas de Inovação - Criando Conexões
Plataformas de Inovação - Criando ConexõesPlataformas de Inovação - Criando Conexões
Plataformas de Inovação - Criando Conexões
 
Arduino Day 2014 - Cloud para Internet das Coisas & Intel Galileo
Arduino Day 2014 - Cloud para Internet das Coisas & Intel GalileoArduino Day 2014 - Cloud para Internet das Coisas & Intel Galileo
Arduino Day 2014 - Cloud para Internet das Coisas & Intel Galileo
 
Hoodie na Campus Party Brasil 2013
Hoodie na Campus Party Brasil 2013Hoodie na Campus Party Brasil 2013
Hoodie na Campus Party Brasil 2013
 
Workshop Kit de Desenvolvimento IoT
Workshop Kit de Desenvolvimento IoTWorkshop Kit de Desenvolvimento IoT
Workshop Kit de Desenvolvimento IoT
 
Workshop de Firefox OS
Workshop de Firefox OSWorkshop de Firefox OS
Workshop de Firefox OS
 
Desenvolvendo para Firefox OS
Desenvolvendo para Firefox OSDesenvolvendo para Firefox OS
Desenvolvendo para Firefox OS
 
Introdução ao Firefox OS
Introdução ao Firefox OSIntrodução ao Firefox OS
Introdução ao Firefox OS
 
livre.fm - keynote
livre.fm - keynotelivre.fm - keynote
livre.fm - keynote
 
GED - A caminho do conhecimento
GED - A caminho do conhecimentoGED - A caminho do conhecimento
GED - A caminho do conhecimento
 
imax games - Desenvolvimento de Jogos
imax games - Desenvolvimento de Jogosimax games - Desenvolvimento de Jogos
imax games - Desenvolvimento de Jogos
 
Modelagem 3D de personagens para jogos
Modelagem 3D de personagens para jogosModelagem 3D de personagens para jogos
Modelagem 3D de personagens para jogos
 
Ruby On Rails - Porque Utilizar?
Ruby On Rails - Porque Utilizar?Ruby On Rails - Porque Utilizar?
Ruby On Rails - Porque Utilizar?
 
Trabalhe na Abril Digital
Trabalhe na Abril DigitalTrabalhe na Abril Digital
Trabalhe na Abril Digital
 
Lua para Jogos
Lua para JogosLua para Jogos
Lua para Jogos
 
Web 2.0 e AJAX - Parte 3 / 3
Web 2.0 e AJAX - Parte 3 / 3Web 2.0 e AJAX - Parte 3 / 3
Web 2.0 e AJAX - Parte 3 / 3
 
Tendências de Search Egines - Microsoft
Tendências de Search Egines - MicrosoftTendências de Search Egines - Microsoft
Tendências de Search Egines - Microsoft
 
Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3
 
Web 2.0 e AJAX - Parte 1 / 3
Web 2.0 e AJAX - Parte 1 / 3Web 2.0 e AJAX - Parte 1 / 3
Web 2.0 e AJAX - Parte 1 / 3
 

O que é Docker

  • 1.
  • 2. David Ruiz CTO Futura Networks / Campus Party @wupsbr – wupsbr@gmail.com – http://wupsbr.com
  • 3. Uma abstração opensource que automatiza a implementação de qualquer aplicação de forma leve e portátil em containers auto-suficientes, onde poderão ser executados nos mais diversos ambientes. O Que é Docker?
  • 5. Static website Web frontend User DB Queue Analytics DB Background workers API endpoint nginx 1.5 + modsecurity + openssl + bootstrap 2 postgresql + pgv8 + v8 hadoop + hive + thrift + OpenJDK Ruby + Rails + sass + Unicorn Redis + redis-sentinel Python 3.0 + celery + pyredis + libcurl + ffmpeg + libopencv + nodejs + phantomjs Python 2.7 + Flask + pyredis + celery + psycopg + postgresql-client Development VM QA server Public Cloud Disaster recovery Contributor’s laptop Production Servers MultiplicityofStacksMultiplicityof hardware environments Production Cluster Customer Data Center Doservicesandapps interact appropriately? CanImigrate smoothlyand quickly? O desafio
  • 6. Static website Web frontend Background workers User DB Analytics DB Queue Development VM QA Server Single Prod Server Onsite Cluster Public Cloud Contributor’s laptop Customer Servers ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? A matriz do inferno
  • 7.
  • 9. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Outra matriz do inferno!
  • 10. MultiplicityofGoods Multiplicityofmethodsfor transporting/storing DoIworryabouthow goodsinteract(e.g.coffee beansnexttospices) CanItransportquicklyand smoothly (e.g.fromboattotrainto truck) ...no caminho , podem ser carregados e descarregados, empilhados, transportados de forma eficiente em longas distâncias, e transferidos de um meio de transporte para outro. Um contêiner padrão que é carregado com praticamente todos os bens, e permanece fechado até que ele atinja a entrega final. Solução: Envio Intermodal com Containers
  • 11. Static website Web frontendUser DB Queue Analytics DB Development VM QA server Public Cloud Contributor’s laptop MultiplicityofStacksMultiplicityofhardware environments Production ClusterCustomer Data Center Doservicesandapps interactappropriately? CanImigratesmoothlyand quickly ...que pode ser manipulado através de operações-padrão e executar de forma consistente em praticamente qualquer plataforma de hardware. Uma engine que permite que qualquer carga útil venha a ser encapsulada como um recipiente auto-suficiente leve, portátil... Docker é um container para código
  • 12. • Faça o build uma vez e…(finalmente) rode em qualquer lugar** • Um ambiente execução limpo, seguro, higiênico e portátil para o seu aplicativo. • Sem preocupações com falta de dependências, pacotes e outros pontos de dor durante as implantações subsequentes. • Execute cada aplicativo em seu próprio container, assim você pode executar várias versões de bibliotecas e outras dependências para cada aplicação sem se preocupar. • Automatizar testes, integração, packaging... você pode fazer um script para qualquer coisa. • Reduzir/eliminar as preocupações sobre compatibilidade em diferentes plataformas, suas ou de seus clientes. • Cheap, zero-penalty containers to deploy services? A VM without the overhead of a VM? • Instant replay and reset of image snapshots? That’s the power of Docker * With the 0.7 release, we support any x86 server running a modern Linux kernel (3.2+ generally. 2.6.32+ for RHEL 6.5+, Fedora, & related) Porque os desenvolvedores se importam
  • 13. • Configure uma vez… rode qualquer coisa • Faça todo o ciclo de vida de uma aplicação mais eficiente, consistente e repetível. • Aumentar a qualidade do código produzido pelos desenvolvedores. • Eliminar inconsistências entre desenvolvimento, teste, produção e ambientes de clientes. • Suporte a segregação de funções. • Melhora significativamente a velocidade e a confiabilidade da implantação contínua e dos sistemas de integração contínua. • Porque os recipientes são tão leves, tem o potencial de solucionar os problemas de desempenho, os custos, a implantação e problemas de portabilidade normalmente associados com VMs Porque os desenvolvedores se importam
  • 14. App A Hypervisor (Type 2) Host OS Server Guest OS Bins/ Libs App A’ Guest OS Bins/ Libs App B Guest OS Bins/ Libs AppA’ Docker Host OS Server Bins/Libs AppA Bins/Libs AppB AppB’ AppB’ AppB’ VM Container Containers são isolados, mas compartilham o OS e, quando apropriado, bins/libraries Guest OS Guest OS ...o que resulta em implementação significativamente mais rápida, muito menos sobrecarga, migração mais fácil, restart mais rápido Containers vs VMs
  • 15. Bins/ Libs App A Original App (No OS to take up space, resources, or require restart) AppΔ Bins/ App A Bins/ Libs App A’ Guest OS Bins/ Libs Modified App Copy on write capabilities allow us to only save the diffs Between container A and container A’ VMs Every app, every copy of an app, and every slight modification of the app requires a new virtual server App A Guest OS Bins/ Libs Copy of App No OS. Can Share bins/libs App A Guest OS Guest OS VMs Containers Porque containers em Docker são leves?
  • 16. Source Code Repository Dockerfile For A Docker Engine Docker Container Image Registry Build Docker Host 2 OS (Linux) ContainerA ContainerB ContainerC ContainerA Push Search Pull Run Host 1 OS (Linux) Princípios básicos do Docker
  • 17. Docker Engine Docker Container Image Registry Docker Engine Push Update Bins/ Libs App A AppΔ Bins/ Base Container Image Host is now running A’’ Container Mod A’’ AppΔ Bins/ Bins/ Libs App A Bins/ Bins/ Libs App A’’ Host running A wants to upgrade to A’’. Requests update. Gets only diffs Container Mod A’ Mudanças e atualizações
  • 18. • Ferramenta que facilita a construção, distribuição e execução de qualquer a plicação em qualquer ambiente (VM, nuvem, servidor fisico, laptop) • Sua aplicação roda de forma isolada com seus próprios processos, IP e file system, independente do host. Ou seja, dentro de um container • Construção: empacota sua aplicação numa imagem (docker build)! • Distribuição: Move a imagem entre diferentes maquinas (docker push/pull)! • Execução: Execute sua aplicação (docker run)! O que é Docker Engine?
  • 19. • Receita para criar uma imagem (container) • Começa de uma base: FROM ubuntu:14.04, fedora:20, debian:jessie • Rode comandos: RUN apt-get install –y firefox ssh • Copie seus dados: ADD /app/code /code/ • Crie scripts de inicialização ou execute arquivos binários: CMD start_firefox.sh, /usr/sbin/sshd –D Construção: docker build – Dockerfile
  • 20. --------------------------------------------------- FROM ubuntu:14.04 MAINTAINER Seu Nome (z@z.com) RUN apt-get update && apt-get install -y nginx RUN echo ’Hello Developers from Sao Paulo' > /usr/share/nginx/html/index.html EXPOSE 80 --------------------------------------------------- $ docker build –t rogaha/web . $ docker run –d –p 80:80 –-name container_web_demo_sp rogaha/web Exemplo de Dockerfile
  • 21. --------------------------------------------------- FROM ubuntu:14.04 MAINTAINER Seu Nome (z@z.com) RUN apt-get update && apt-get install -y nginx RUN echo ’Hello Developers from Sao Paulo' > /usr/share/nginx/html/index.html EXPOSE 80 --------------------------------------------------- $ docker build –t rogaha/web . $ docker run –d –p 80:80 –-name container_web_demo_sp rogaha/web Exemplo de Dockerfile
  • 22. • Transfere sua aplicação dockerzizada de um servidor para outro • Registry Hub: Repositório central de imagens criadas pela comunidade • O objetivo principal do Registry Hub é facilitar a criação de aplicações • Milhares de images foram criadas e são mantidas pela comunidade. Por exemplo: nginx, ubuntu, postgres, redis, node, centos, wordpress, java: • https://registry.hub.docker.com/repos/library/ Distribuição: docker pull / push
  • 23. • Roda as aplicações de forma consistente e confiável • Elimina os problemas de diferenças entre versionamento das dependências • Os containers rodam de forma isolada. Você pode rodar aplicações em Debian, Ubuntu, CentOS na mesmo servidor/laptop • Se funciona no seu laptop, irá funcionar no servidor • RESOLVE grande parte dos problemas entre DEV e OPS Execução: docker run
  • 24. David Ruiz CTO Futura Networks / Campus Party @wupsbr – wupsbr@gmail.com – http://wupsbr.com