2017-03-13
DOCKER - uma visão geral
Michael Granados
Michael
Granados
Desenvolvedor web desde 2006
Designer
Pai de família
Programdor multilinguagem
Curioso por DevOps
Agenda
✤ O que é docker?
✤ O que são contêineres?
✤ Qual a diferença entre máquina física, máquina virtual e
contêineres?
✤ Primeiros passos
✤ Vamos fazer um bolo?
✤ Don’t repeat yourself! (again)
O que é docker?
✤ É a plataforma de contêineres de software mais conhecida no
mundo
✤ Ele permite que os desenvolvedores trabalhem com contêineres
isolados de forma a evitar o problema de “problemas com minha
máquina”
✤ Permite que ambientes complexos sejam levantados e
interligados de forma rápida e dinâmica
✤ Por ser de fácil manutenção, permite uma escalabilidade mais
rápida e flexível
O que são contêineres
✤ São todos os componentes requeridos para a execução de qualquer
trecho de software
✤ Esses componentes ficam isolados e contidos em contêineres, sendo
assim, não são afetados pela execução do código, podendo ser
reutilizado a qualquer momento
✤ Como os contêineres ficam isolados, eles podem ser combinados e
mantidos em versões distintas
✤ Ao contrário das máquinas virtuais, os contêineres não ocupam todo o
espaço, memória, cpu. Ao invés disso, compartilham com a máquina
que está executando o docker
Qual a diferença entre máquina física, máquina virtual e
contêineres?
Máquina física
Arquitetura x86
Sistema Operacional
Aplicação
Qual a diferença entre máquina física, máquina virtual e
contêineres?
Máquina virtual
Arquitetura x86
Sistema Operacional/servidor de máquinas virtuais
Máquina Virtual
Sistema Operacional
Aplicação
Máquina Virtual
Sistema Operacional
Aplicação
Máquina Virtual
Sistema Operacional
Aplicação
Qual a diferença entre máquina física, máquina virtual e
contêineres?
Contêineres
Arquitetura x86
Sistema Operacional
Docker Engine
Aplicação
conteiner 1
conteiner 2
Aplicação 2
conteiner 1
Primeiros passos
✤ docker run [opções] <imagem> [comando]
✤ -v “pasta_no_host:pasta_no_docker” (define/compartilha volumes)
✤ -p “porta_no_host:porta_no_docker” (define/compartilha portas)
✤ -t (virtualiza a sessão)
✤ -i (interativo)
✤ -e (associa uma variável de ambiente)
✤ docker ps [opções]
✤ -a (exibir todos os processos)
✤ -q (exibir somente o hash do processo)
✤ docker images [opções]
✤ docker exec [opções] <instância> <comando>
✤ docker pull image
✤ docker rm
✤ docker rmi
docker ps -qa | xargs docker rm -f
remove todos os processos
docker images -a | xargs docker rmi -f
remove todas as imagens
Vamos fazer um bolo?
✤ Criando o Dockerfile
FROM ubuntu
RUN apt-get update && apt-get install -y curl
ENTRYPOINT curl
✤ Apenas um Dockerfile por pasta
docker build -t [tag da imagem] <pasta>
Vamos fazer um bolo?
✤ FROM - imagem na qual esta imagem se baseia
✤ RUN - executa um determinado comando
✤ COPY - copia arquivos para dentro da imagem
✤ ENTRYPOINT - comando que será precedido ao comando CMD ou
ao comando passado no comando run do docker
✤ EXPOSE - portas que serão expostas pela imagem
✤ CMD - comando principal que será executado se nada for passado
no comando run
Don’t repeat yourself! (again)
✤ O docker guarda cada comando RUN como uma imagem
que pode ser reaproveitada
✤ Aproveite o cache do docker
✤ Reutilize imagens, utilizando FROM
✤ aproveite o http://hub.docker.com
✤ envie suas imagens para um repositório - por exemplo o
próprio http://hub.docker.com ou o AWS ECS
“Não me interessa se roda na sua máquina! Nós não estamos
entregando a sua máquina!”
–Vidiu Platon

Docker: uma visão geral

  • 1.
    2017-03-13 DOCKER - umavisão geral Michael Granados
  • 2.
    Michael Granados Desenvolvedor web desde2006 Designer Pai de família Programdor multilinguagem Curioso por DevOps
  • 3.
    Agenda ✤ O queé docker? ✤ O que são contêineres? ✤ Qual a diferença entre máquina física, máquina virtual e contêineres? ✤ Primeiros passos ✤ Vamos fazer um bolo? ✤ Don’t repeat yourself! (again)
  • 4.
    O que édocker? ✤ É a plataforma de contêineres de software mais conhecida no mundo ✤ Ele permite que os desenvolvedores trabalhem com contêineres isolados de forma a evitar o problema de “problemas com minha máquina” ✤ Permite que ambientes complexos sejam levantados e interligados de forma rápida e dinâmica ✤ Por ser de fácil manutenção, permite uma escalabilidade mais rápida e flexível
  • 5.
    O que sãocontêineres ✤ São todos os componentes requeridos para a execução de qualquer trecho de software ✤ Esses componentes ficam isolados e contidos em contêineres, sendo assim, não são afetados pela execução do código, podendo ser reutilizado a qualquer momento ✤ Como os contêineres ficam isolados, eles podem ser combinados e mantidos em versões distintas ✤ Ao contrário das máquinas virtuais, os contêineres não ocupam todo o espaço, memória, cpu. Ao invés disso, compartilham com a máquina que está executando o docker
  • 6.
    Qual a diferençaentre máquina física, máquina virtual e contêineres? Máquina física Arquitetura x86 Sistema Operacional Aplicação
  • 7.
    Qual a diferençaentre máquina física, máquina virtual e contêineres? Máquina virtual Arquitetura x86 Sistema Operacional/servidor de máquinas virtuais Máquina Virtual Sistema Operacional Aplicação Máquina Virtual Sistema Operacional Aplicação Máquina Virtual Sistema Operacional Aplicação
  • 8.
    Qual a diferençaentre máquina física, máquina virtual e contêineres? Contêineres Arquitetura x86 Sistema Operacional Docker Engine Aplicação conteiner 1 conteiner 2 Aplicação 2 conteiner 1
  • 9.
    Primeiros passos ✤ dockerrun [opções] <imagem> [comando] ✤ -v “pasta_no_host:pasta_no_docker” (define/compartilha volumes) ✤ -p “porta_no_host:porta_no_docker” (define/compartilha portas) ✤ -t (virtualiza a sessão) ✤ -i (interativo) ✤ -e (associa uma variável de ambiente) ✤ docker ps [opções] ✤ -a (exibir todos os processos) ✤ -q (exibir somente o hash do processo) ✤ docker images [opções] ✤ docker exec [opções] <instância> <comando> ✤ docker pull image ✤ docker rm ✤ docker rmi
  • 10.
    docker ps -qa| xargs docker rm -f remove todos os processos
  • 11.
    docker images -a| xargs docker rmi -f remove todas as imagens
  • 12.
    Vamos fazer umbolo? ✤ Criando o Dockerfile FROM ubuntu RUN apt-get update && apt-get install -y curl ENTRYPOINT curl ✤ Apenas um Dockerfile por pasta docker build -t [tag da imagem] <pasta>
  • 13.
    Vamos fazer umbolo? ✤ FROM - imagem na qual esta imagem se baseia ✤ RUN - executa um determinado comando ✤ COPY - copia arquivos para dentro da imagem ✤ ENTRYPOINT - comando que será precedido ao comando CMD ou ao comando passado no comando run do docker ✤ EXPOSE - portas que serão expostas pela imagem ✤ CMD - comando principal que será executado se nada for passado no comando run
  • 14.
    Don’t repeat yourself!(again) ✤ O docker guarda cada comando RUN como uma imagem que pode ser reaproveitada ✤ Aproveite o cache do docker ✤ Reutilize imagens, utilizando FROM ✤ aproveite o http://hub.docker.com ✤ envie suas imagens para um repositório - por exemplo o próprio http://hub.docker.com ou o AWS ECS
  • 15.
    “Não me interessase roda na sua máquina! Nós não estamos entregando a sua máquina!” –Vidiu Platon