Docker um Linux container engine - Hudson Brendon
-
Upload
potilivre -
Category
Technology
-
view
136 -
download
4
Transcript of Docker um Linux container engine - Hudson Brendon
Um linux container engine
@HudsonBrendon
hudsonbrendon.comgithub.com/hudsonbrendontwitter.com/[email protected]
Agenda
● Conhecendo o docker● Criando imagens, contêineres, etc● Dockerfile● Dockerhub● Instalando● Demos
Contêineres, contêineres e contêineres
O problema
Vms x Contêineres
Camadas: Imagens e contêineres
Camadas: Imagens e contêineres
Camadas: Imagens e contêineres
Camadas: Imagens e contêineres
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.
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.
DEMOLISTANDO IMAGENSRODANDO UM CONTÊINERLISTANDO, PARANDO, REINICIANDO CONTÊINERES
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.
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.
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).
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.
Quem usa?
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.
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"]
DEMOBAIXANDO UMA IMAGEMCRIANDO UMA IMAGEMEMPURRANDO UMA IMAGEM PARA O HUB
Mais informações
● Docker: docker.com● Tutorial: docker.com/tryit● Boot2Docker: boot2docker.io
Dúvidas?Hudson Brendon
@hudsonbrendon