docker um linux container engine - hudson brendon

26
Um linux container engine

Upload: potilivre

Post on 10-Aug-2015

136 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Docker um Linux container engine - Hudson Brendon

Um linux container engine

Page 2: Docker um Linux container engine - Hudson Brendon

@HudsonBrendon

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

Page 3: Docker um Linux container engine - Hudson Brendon

Agenda

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

Page 4: Docker um Linux container engine - Hudson Brendon

Contêineres, contêineres e contêineres

Page 5: Docker um Linux container engine - Hudson Brendon

O problema

Page 6: Docker um Linux container engine - Hudson Brendon
Page 7: Docker um Linux container engine - Hudson Brendon
Page 8: Docker um Linux container engine - Hudson Brendon
Page 9: Docker um Linux container engine - Hudson Brendon

Vms x Contêineres

Page 10: Docker um Linux container engine - Hudson Brendon

Camadas: Imagens e contêineres

Page 11: Docker um Linux container engine - Hudson Brendon

Camadas: Imagens e contêineres

Page 12: Docker um Linux container engine - Hudson Brendon

Camadas: Imagens e contêineres

Page 13: Docker um Linux container engine - Hudson Brendon

Camadas: Imagens e contêineres

Page 14: Docker um Linux container engine - Hudson Brendon

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 - Hudson Brendon

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 - Hudson Brendon

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

Page 17: Docker um Linux container engine - Hudson Brendon

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 - Hudson Brendon

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 - Hudson Brendon

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 - Hudson Brendon

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 - Hudson Brendon

Quem usa?

Page 22: Docker um Linux container engine - Hudson Brendon

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 - Hudson Brendon

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 - Hudson Brendon

DEMOBAIXANDO UMA IMAGEMCRIANDO UMA IMAGEMEMPURRANDO UMA IMAGEM PARA O HUB

Page 25: Docker um Linux container engine - Hudson Brendon

Mais informações

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

Page 26: Docker um Linux container engine - Hudson Brendon

Dúvidas?Hudson Brendon

[email protected]

@hudsonbrendon