Introdução ao Docker 
Setembro, 2014
Conteúdo 
• Introdução ao Docker, Containers, e a Matriz Infernal 
• Por que as pessoas se preocupam: Separação de Interes...
Nos 2 anos após o lançamento 
• >10.561 commits 
• >16.186 github stars 
• >666 contribuidores da comunidade 
• >2.875 for...
Porque todo este frenesi?
Static website 
User DB 
Web frontend 
Queue Analytics DB 
Background workers 
API endpoint 
nginx 1.5 + modsecurity + ope...
A Matriz Infernal 
Static website 
Web frontend 
Background workers 
User DB 
Analytics DB 
Queue 
? ? ? ? ? ? ? 
? ? ? ? ...
Multiplicity of Goods 
transporting/storing 
Multipilicity of 
methods for 
Do I worry about 
how goods interact 
(e.g. co...
Também uma Matriz Infernal 
? ? ? ? ? ? ? 
? ? ? ? ? ? ? 
? ? ? ? ? ? ? 
? ? ? ? ? ? ? 
? ? ? ? ? ? ? 
? ? ? ? ? ? ?
Multiplicity of Goods 
Multiplicity of 
methods for 
transporting/storing 
Do I worry about 
how goods interact 
(e.g. cof...
Docker é um sistema de containers para código! 
Static website User DB Web frontend Queue Analytics DB 
Development 
VM 
Q...
Static website 
Web frontend 
Background workers 
User DB 
Analytics DB 
Queue 
Development 
VM QA Server Single Prod 
Ser...
Porque os Desenvolvedores se importam 
• Faça o build uma vez e…(finalmente) rode em qualquer lugar* 
• Um ambiente execuç...
Porque os operadores de infraestrutura se 
importam 
• Configure uma vez… rode qualquer coisa 
• Faça todo o ciclo de vida...
Porque funciona - separação de interesses 
• Zé, o Desenvolvedor 
• Se preocupa com o que está dentro 
do container: 
• O ...
Mais explicações técnicas 
PORQUE O QUE 
• High Level - É uma VM leve 
• Espaço de processos próprio 
• Network própria 
•...
Containers vs. VMs 
App 
A 
Bins/ 
Libs 
Hypervisor (Type 2) 
Host OS 
Server 
Bins/ 
Libs 
Guest 
OS 
App 
A’ 
Guest 
OS ...
Porque os containers do Docker são leves? 
VMs Containers 
App 
A 
Bins/ 
Libs 
Original App 
(No OS to take 
up space, re...
Quais os princípios básicos doDocker? 
Dockerfile 
For 
A 
Source 
Code 
Repository 
Docker Engine 
Docker 
Container 
Ima...
Mudanças e Atualizações 
App 
A’’ 
Bins/ 
Libs 
Docker Engine 
Docker 
Container 
Image 
Registry 
Push 
Docker Engine 
Up...
Casos de Uso 
• Ted Dziuba sobre o Uso de Docker para integração contínua no Ebay 
• https://speakerdeck.com/teddziuba/doc...
Casos de Uso - Na Comunidade 
Use Case Examples Link 
Clusters Building a MongoDB cluster using docker http://bit.ly/1acbj...
Advanced topics 
• Data 
• Today: Externally mounted volumes 
• Share volumes between containers 
• Share volume between a...
OpenStack / Docker 
New hypervisor to enable Nova to deploy Linux containers
Porque Docker + OpenStack 
• Alternativa para as VMs presentes na OpenStack (hoje) 
• Implantação mais fácil da OpenStack ...
Quer aprender mais? 
• www.docker.io: 
• Documentação 
• Introdução: tutorial interativo, instruções de instalação, guia d...
www.docker.io
Próximos SlideShares
Carregando em…5
×

Docker.io:

416 visualizações

Publicada em

0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
416
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
15
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Docker.io:

  1. 1. Introdução ao Docker Setembro, 2014
  2. 2. Conteúdo • Introdução ao Docker, Containers, e a Matriz Infernal • Por que as pessoas se preocupam: Separação de Interesses • Discussão Técnica • Casos de Uso • Tópicos Avançados: Networking, Data • OpenStack • Saiba Mais
  3. 3. Nos 2 anos após o lançamento • >10.561 commits • >16.186 github stars • >666 contribuidores da comunidade • >2.875 forks • Um número imenso de aplicativos baseados em Docker • UIs, mini-PaaS, Remote Desktop…. • >2000 aplicações dockerizadas • Memcached, Redis, Node.js…e Hadoop • Integração com Jenkins, Travis, Chef, Puppet, Vagrant, OpenStack, entre outros.
  4. 4. Porque todo este frenesi?
  5. 5. Static website User DB Web frontend Queue Analytics DB Background workers API endpoint nginx 1.5 + modsecurity + openssl + bootstrap 2 postgresql + pgv8 + v8 hadoop + hive + thrift + OpenJDK Redis + redis-sentinel Ruby + Rails + sass + Unicorn 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 O Desafio Multiplicity of Stacks Multiplicity of hardware environments Production Cluster Customer Data Center Do services and apps interact appropriately? Can I migrate smoothly and quickly?
  6. 6. A Matriz Infernal 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
  7. 7. Multiplicity of Goods transporting/storing Multipilicity of methods for Do I worry about how goods interact (e.g. coffee beans next to spices) Can I transport quickly and smoothly (e.g. from boat to train to truck) O transporte de cargas Pré-1960
  8. 8. Também uma Matriz Infernal ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
  9. 9. Multiplicity of Goods Multiplicity of methods for transporting/storing Do I worry about how goods interact (e.g. coffee beans next to spices) Can I transport quickly and smoothly (e.g. from boat to train to truck) Solução: Envio Intermodal em Containers ...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.
  10. 10. Docker é um sistema de containers para código! Static website User DB Web frontend Queue Analytics DB Development VM QA server Public Cloud Contributor’s laptop Multiplicity of Stacks Multiplicity of hardware environments Production Cluster Customer Data Center Do services and apps interact appropriately? Can I migrate smoothly and 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...
  11. 11. 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 Docker elimina a Matriz Infernal!
  12. 12. Porque os Desenvolvedores se importam • 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
  13. 13. Porque os operadores de infraestrutura 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.
  14. 14. Porque funciona - separação de interesses • Zé, o Desenvolvedor • Se preocupa com o que está dentro do container: • O Código • As Bibliotecas • O Gerenciador de Pacotes • As Aplicações • Os Dados • Todos os servidores Linux parecem ser o mesmo. • Jão, o Operador • Se preocupa com o que está fora do container • Logging • Acesso Remoto • Monitoramento • Network config • Todos os containers start, stop, copy, attach, migrate, etc. da mesma forma.
  15. 15. Mais explicações técnicas PORQUE O QUE • High Level - É uma VM leve • Espaço de processos próprio • Network própria • Pode executar coisas como root • Pode ter seu próprio /sbin/init (separado do host) • <<machine container>> • Low Level - chroot com esteróides • Pode também não ter seu próprio /sbin/init • Container=processos isolados • Compartilha o kernel com o host • Sem emulação de dispositivos (nem HVM nem PV) do host) • <<application container>> • Roda em qualquer lugar • Independete da versão do kernel (2.6.32+) • Independente da distro do host • Físico ou virtual, cloud ou não • Roda qualquer coisa • Se alguma coisa roda no host, rodará no container • i.e. se alguma coisa roda no Linux, rodará no container.
  16. 16. Containers vs. VMs App A Bins/ Libs Hypervisor (Type 2) Host OS Server Bins/ Libs Guest OS App A’ Guest OS App B Bins/ Libs Guest OS App A’ Docker Host OS Server App A Bins/Libs Bins/Libs App B App B’ App B’ App B’ VM Container Containers são isolados, mas compartilham o OS e, quando appropriate, 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
  17. 17. Porque os containers do Docker são leves? VMs Containers App A Bins/ Libs Original App (No OS to take up space, resources, or require restart) App Δ Bins/ App A Bins/ Libs App A’ Bins/ Libs Guest OS Modified App Copy on write capabilities allow us to only save the diffs Between container A and container A’ VMs App A Bins/ Libs Guest OS Every app, every copy of an app, and every slight modification of the app requires a new virtual server App A Copy of App No OS. Can Share bins/libs Guest OS Guest OS
  18. 18. Quais os princípios básicos doDocker? Dockerfile For A Source Code Repository Docker Engine Docker Container Image Registry Build Docker Host 2 OS (Linux) Container A Container B Container C Container A Push Search Pull Run Host 1 OS (Linux)
  19. 19. Mudanças e Atualizações App A’’ Bins/ Libs Docker Engine Docker Container Image Registry Push Docker Engine Update App A Bins/ Libs App Δ Bins/ Base Container Image Host is now running A’’ Container Mod A’’ App Δ Bins/ App A Bins/ Libs Bins/ Host running A wants to upgrade to A’’. Requests update. Gets only diffs Container Mod A’
  20. 20. Casos de Uso • Ted Dziuba sobre o Uso de Docker para integração contínua no Ebay • https://speakerdeck.com/teddziuba/docker-at-ebay • http://www.youtube.com/watch?feature=player_embedded&v=0Hi0W4gX--4 • Sasha Klizhentas sobre o uso do Docker no Mailgun da Rackspace • http://www.youtube.com/watch?feature=player_embedded&v=CMC3xdAo9RI • Sebastien Pahl sobre o uso do Docker na CloudFlare • http://www.youtube.com/watch?feature=player_embedded&v=-Lj3jt_-3r0 • Cambridge HealthCare • http://blog.howareyou.com/post/62157486858/continuous-delivery-with-docker-and-jenkins-part- i • Red Hat Openshift and Docker • https://www.openshift.com/blogs/technical-thoughts-on-openshift-and-docker
  21. 21. Casos de Uso - Na Comunidade Use Case Examples Link Clusters Building a MongoDB cluster using docker http://bit.ly/1acbjZf Production Quality MongoDB Setup with Docker http://bit.ly/15CaiHb Wildfly cluster using Docker on Fedora http://bit.ly/1bClX0O Build your own PaaS OpenSource PaaS built on Docker, Chef, and Heroku Buildpacks http://deis.io Web Based Environment JiffyLab – web based environment for the instruction, or lightweight use of, Python and for Instruction UNIX shell http://bit.ly/12oaj2K Easy Application Deployment Deploy Java Apps With Docker = Awesome http://bit.ly/11BCvvu How to put your development environment on docker http://bit.ly/1b4XtJ3 Running Drupal on Docker http://bit.ly/15MJS6B Installing Redis on Docker http://bit.ly/16EWOKh Create Secure Sandboxes Docker makes creating secure sandboxes easier than ever http://bit.ly/13mZGJH Create your own SaaS Memcached as a Service http://bit.ly/11nL8vh Automated Application Deployment Multi-cloud Deployment with Docker http://bit.ly/1bF3CN6 Continuous Integration and Deployment Next Generation Continuous Integration & Deployment with dotCloud’s Docker and Strider http://bit.ly/ZwTfoy Testing Salt States Rapidly With Docker http://bit.ly/1eFBtcm Lightweight Desktop Virtualization Docker Desktop: Your Desktop Over SSH Running Inside Of A Docker Container http://bit.ly/14RYL6x
  22. 22. Advanced topics • Data • Today: Externally mounted volumes • Share volumes between containers • Share volume between a containers and underlying hosts • high-performance storage backend for your production database • making live development changes available to a container, etc. • Optional: specify memory limit for containers, CPU priority • Device mapper/ LVM snapshots in 0.7 • Futures: • I/O limits • Container resource monitoring (CPU & memory usage) • Orchestration (linking & synchronization between containers) • Cluster orchestration (multi-host environment) • Networking • Supported today: • UDP/TCP port allocation to containers • specify which public port to redirect. If you don’t specify a public port, Docker will revert to allocating a random public port. • Docker uses IPtables/netfilter • IP allocation to containers • Docker uses virtual interfaces, network bridge, • Futures: • See Pipework (Upstream) : Software-Defined Networking for Linux Containers (https://github.com/jpetazzo/pipework) • Certain pipework concepts will move from upstream to part of core Docker • Additional capabilities come with libvirt support in 0.8-0.9 timeframe
  23. 23. OpenStack / Docker New hypervisor to enable Nova to deploy Linux containers
  24. 24. Porque Docker + OpenStack • Alternativa para as VMs presentes na OpenStack (hoje) • Implantação mais fácil da OpenStack (hoje) • Implantação de aplicativos em cross cloud. • Orquestração de containers com OpenStack Heat
  25. 25. Quer aprender mais? • www.docker.io: • Documentação • Introdução: tutorial interativo, instruções de instalação, guia de iniciação, • Sobre: Whitepaper Introdutória: http://www.docker.io/the-whole-story/ • Github: dotcloud/docker • IRC: freenode/#docker • Google groups: groups.google.com/forum/#!forum/docker-user • Twitter: follow @docker • Meetups: https://www.docker.io/meetups/ • Através de mim: Alexandre Teles (eu@alexteles.com)
  26. 26. www.docker.io

×