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

Containers com docker #CPRecife4

  • 2.
    David Ruiz CTO FuturaNetworks / Campus Party @wupsbr – wupsbr@gmail.com – http://wupsbr.com
  • 3.
    Uma abstração opensourceque 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?
  • 4.
  • 5.
    Static website Web frontend UserDB 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 Backgroundworkers 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
  • 8.
  • 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 WebfrontendUser 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 obuild 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 umavez… 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) HostOS 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 OSto 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 2OS (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 Hostis 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 quefacilita 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 paracriar 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 SeuNome (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 SeuNome (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 suaaplicaçã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 asaplicaçõ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 FuturaNetworks / Campus Party @wupsbr – wupsbr@gmail.com – http://wupsbr.com