Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Docker - Um linux container engine

Docker - Um linux container engine

Hudson Brendon

April 25, 2015
Tweet

More Decks by Hudson Brendon

Other Decks in Programming

Transcript

  1. Agenda • Conhecendo o docker • Criando imagens, contêineres, etc

    • Dockerfile • Dockerhub • Instalando • Demos
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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).
  7. 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.
  8. 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.
  9. Um Dockerfile FROM ubuntu:14.04 MAINTAINER Hudson Brendon <[email protected]> # pip

    requirements ADD /requirements/requirements.txt /home/requirements/requirements.txt # update e upgrade RUN apt-get -yq update && apt-get -yq upgrade # enstall pre-requisites RUN apt-get -yq install build-essential python-pip python-dev git vim # pip install packages RUN pip install -r /home/requirements/requirements.txt # expose the port EXPOSE 8000 CMD ["/bin/bash"]