docker: um linux container engine

26
Um linux container engine

Upload: hudson-brendon

Post on 28-Jul-2015

144 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: Docker:  um linux container engine

Um linux container engine

Page 2: Docker:  um linux container engine

@HudsonBrendon

hudsonbrendon.comgithub.com/hudsonbrendontwitter.com/[email protected]

Page 3: Docker:  um linux container engine

Agenda

● Conhecendo o docker● Criando imagens, contêineres, etc● Dockerfile● Dockerhub● Instalando● Demos

Page 4: Docker:  um linux container engine

Contêineres, contêineres e contêineres

Page 5: Docker:  um linux container engine

O problema

Page 6: Docker:  um linux container engine
Page 7: Docker:  um linux container engine
Page 8: Docker:  um linux container engine
Page 9: Docker:  um linux container engine

Vms x Contêineres

Page 10: Docker:  um linux container engine

Camadas: Imagens e contêineres

Page 11: Docker:  um linux container engine

Camadas: Imagens e contêineres

Page 12: Docker:  um linux container engine

Camadas: Imagens e contêineres

Page 13: Docker:  um linux container engine

Camadas: Imagens e contêineres

Page 14: Docker:  um linux container engine

Imagens● Template read only;● Contém os arquivos que vão executar a aplicação.

Normalmente bibliotecas, frameworks, arquivos do SO;● Há imagens de SO: Ubuntu, Debian, CentOS, etc;● Há imagens de ambientes: Python, Ruby, Python, etc;● Imagens podem ser raiz ou apontar para um ‘pai’;● Podem ser criadas por um Dockerfile ou por um

commit;● Formato: usuário/nomedaimagem, e imagens oficiais

não tem nome do usuário.

Page 15: Docker:  um linux container engine

Contêineres● São iniciados a partir de imagens e rodam sua aplicação (docker

run);● Podem ser commitados para gerar imagens (docker commit);● Se comunicam via rede e o ambiente externo e/ou com outros

contêineres;● Tem sua execução controlada pelo host (CPU, memória, etc);● Podem parar (docker stop), reiniciar (docker restart, docker start),

ser apagado (docker rm), pausar (docker pause) e continuar (docker unpause);

● Tem nome;● Podem ser descartados ou persistentes;● Normalmente rodam somente um processo.

Page 16: Docker:  um linux container engine

DEMOLISTANDO IMAGENSRODANDO UM CONTÊINERLISTANDO, PARANDO, REINICIANDO CONTÊINERES

Page 17: Docker:  um linux container engine

Por que é importante para desenvolvedores?

● Fácil de começar a desenvolver;● Você pode usar Window, Linux ou Mac● Se funciona na sua máquina:

○ vai funcionar na máquina de todos;○ vai passar no build e vai funcionar em produção;

● Fácil de montar o ambiente;● Fácil de estruturar a arquitetura;● Sem conflito entre diferentes projetos;● Rápido, Muito, muito, muito rápido.

Page 18: Docker:  um linux container engine

Por que é importante para sysadmins?

Fácil de colocar em produção;É trivial montar ambientes padronizados para dev, qa e produção;Se passou na build vai funcionar em produção;É fácil escalar;É fácil dar prioridade para uma aplicação sobre outra;Permite aumentar a densidade de uma máquina.

Page 19: Docker:  um linux container engine

Open source

● Disponível em github.com/docker;● Apache2 (permissiva, você detem uma licença para

fazer oque quiser);● Escrito em Go;● Monetização atravéz de serviços adicionais opcionais

e que você pode contruir por conta própria se quiser;● 900+ contribuidores;● Diversos projetos adicionais (composer, libcontainer,

etc).

Page 20: Docker:  um linux container engine

Instalando

● No linux a instalação é feita apenas com uma única linha que você roda no terminal;

● Por causa das dependências com o kernel do linux, Docker não roda diretamente no windows ou no Mac;

● No Windows ou no Mac rode com Boot2Docker, que deixa tudo rápido, ou rode diretamente em uma VM.

Page 21: Docker:  um linux container engine

Quem usa?

Page 22: Docker:  um linux container engine

Dockerfile● É o “fonte” de uma imagem;● É uma maneira de gerar imagens, e é a melhor

maneira;● Fácil de saber o que há em uma imagem: leia o

Dockerfile;● Você indica a imagem pai, arquivos para adicionar,

comandos para rodar ao criar a imagem, o comando que vai rodar a imagem em si, etc;

● Compilado com ‘docker build’;● .dockerignore.

Page 23: Docker:  um linux container engine

Um DockerfileFROM ubuntu:14.04MAINTAINER Hudson Brendon <[email protected]># pip requirementsADD /requirements/requirements.txt /home/requirements/requirements.txt# update e upgradeRUN apt-get -yq update && apt-get -yq upgrade# enstall pre-requisitesRUN apt-get -yq install build-essential python-pip python-dev git vim# pip install packagesRUN pip install -r /home/requirements/requirements.txt# expose the portEXPOSE 8000CMD ["/bin/bash"]

Page 24: Docker:  um linux container engine

DEMOBAIXANDO UMA IMAGEMCRIANDO UMA IMAGEMEMPURRANDO UMA IMAGEM PARA O HUB

Page 25: Docker:  um linux container engine

Mais informações

● Docker: docker.com● Tutorial: docker.com/tryit● Boot2Docker: boot2docker.io

Page 26: Docker:  um linux container engine

Dúvidas?Hudson Brendon

[email protected]

@hudsonbrendon