Docker.io:

26
Introdução ao Docker Setembro, 2014

Transcript of Docker.io:

Page 1: Docker.io:

Introdução ao DockerSetembro, 2014

Page 2: Docker.io:

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

Page 3: Docker.io:

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.

Page 4: Docker.io:

Porque todo este frenesi?

Page 5: Docker.io:

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

O DesafioM

ult

iplic

ity

of

Stac

ksM

ult

iplic

ity

of

har

dw

are

envi

ron

men

ts

Production Cluster

Customer Data Center

Do

services and

app

s in

teract ap

pro

priately?

Can

I migrate

smo

oth

ly and

q

uickly?

Page 6: Docker.io:

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

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

Page 7: Docker.io:

Mu

ltip

licit

y o

f G

oo

ds

Mu

ltip

ilici

ty o

f m

eth

od

s fo

r tr

ansp

ort

ing/

sto

rin

g

Do

I wo

rry abo

ut

ho

w go

od

s interact

(e.g. coffee b

eans

next to

spices)

Can

I transp

ort q

uickly

and

smo

oth

ly(e.g. fro

m b

oat to

train

to tru

ck)

O transporte de cargas Pré-1960

Page 8: Docker.io:

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

Também uma Matriz Infernal

Page 9: Docker.io:

Mu

ltip

licit

y o

f G

oo

ds

Mu

ltip

licit

y o

f m

eth

od

s fo

r tr

ansp

ort

ing/

sto

rin

g

Do

I wo

rry abo

ut

ho

w go

od

s interact

(e.g. coffee b

eans

next to

spices)

Can

I transp

ort

qu

ickly and

smo

oth

ly(e.g. fro

m b

oat to

train

to tru

ck)

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.

Page 10: Docker.io:

Static website Web frontend User DB Queue Analytics DB

Development VM

QA server Public Cloud Contributor’s laptop

Docker é um sistema de containers para código!M

ult

iplic

ity

of

Stac

ksM

ult

iplic

ity

of

har

dw

are

envi

ron

men

ts

Production Cluster

Customer Data Center

Do

services and

app

s in

teract ap

pro

priately?

Can

I migrate

smo

oth

ly and

qu

ickly

...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...

Page 11: Docker.io:

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!

Page 12: Docker.io:

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

Page 13: Docker.io:

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.

Page 14: Docker.io:

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.

Page 15: Docker.io:

Mais explicações técnicas

• 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.

PORQUE O QUE

Page 16: Docker.io:

AppA

Containers vs. VMs

Hypervisor (Type 2)

Host OS

Server

GuestOS

Bins/Libs

AppA’

GuestOS

Bins/Libs

AppB

GuestOS

Bins/Libs

Ap

p A

Do

cker

Host OS

Server

Bins/Libs

Ap

p A

Bins/Libs

Ap

p B

Ap

p B

Ap

p B

Ap

p B

’VM

Container

Containers são isolados,mas compartilham o OS e, quandoappropriate, bins/libraries

GuestOS

GuestOS

...o que resulta em implementação significativamente mais rápida, muito menos sobrecarga, migração mais fácil, restart mais rápido

Page 17: Docker.io:

Porque os containers do Docker são leves?

Bins/Libs

AppA

Original App(No OS to takeup space, resources,or require restart)

Ap

p Δ

Bin

s/

AppA

Bins/Libs

AppA’

GuestOS

Bins/Libs

Modified App

Copy on write capabilities allowus to only save the diffsBetween container A and containerA’

VMsEvery app, every copy of anapp, and every slight modificationof the app requires a new virtual server

AppA

GuestOS

Bins/Libs

Copy ofApp

No OS. CanShare bins/libs

AppA

GuestOS

GuestOS

VMs Containers

Page 18: Docker.io:

Quais os princípios básicos doDocker?

Source Code

Repository

DockerfileFor A

Docker Engine

DockerContainer

Image Registry

Build

Do

cker

Host 2 OS (Linux)

Co

ntain

er A

Co

ntain

er B

Co

ntain

er C

Co

ntain

er A

Push

SearchPull

Run

Host 1 OS (Linux)

Page 19: Docker.io:

Mudanças e Atualizações

Docker Engine

DockerContainer

Image Registry

Docker Engine

Push

Update

Bins/Libs

AppA

Ap

p Δ

Bin

s/

Base Container

Image

Host is now running A’’

Container Mod A’’

Ap

p Δ

Bin

s/

Bins/Libs

AppA

Bin

s/

Bins/Libs

AppA’’

Host running A wants to upgrade to A’’. Requests update. Gets only diffs

Container Mod A’

Page 20: Docker.io:

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

Page 21: Docker.io:

Casos de Uso - Na ComunidadeUse Case Examples LinkClusters Building a MongoDB cluster using docker http://bit.ly/1acbjZf

Production Quality MongoDB Setup with Docker http://bit.ly/15CaiHbWildfly 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 for Instruction

JiffyLab – web based environment for the instruction, or lightweight use of, Python and UNIX shell

http://bit.ly/12oaj2K

Easy Application Deployment  

Deploy Java Apps With Docker = Awesome http://bit.ly/11BCvvuHow to put your development environment on docker http://bit.ly/1b4XtJ3Running Drupal on Docker http://bit.ly/15MJS6BInstalling 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/11nL8vhAutomated 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

Page 22: Docker.io:

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

Page 23: Docker.io:

OpenStack / DockerNew hypervisor to enable Nova to deploy Linux containers

Page 24: Docker.io:

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

Page 25: Docker.io:

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 ([email protected])

Page 26: Docker.io:

www.docker.io