1) Docker é uma plataforma que permite empacotar aplicações e suas dependências para serem executadas de forma isolada em containers leves.
2) Os containers Docker podem rodar aplicações de forma consistente em diversos ambientes como desenvolvimento, teste, produção sem se preocupar com dependências.
3) Isso traz benefícios como facilidade de implantação, portabilidade entre plataformas, reprodutibilidade de ambientes e isolamento entre aplicações.
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?
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?
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