docker: uma visão geral
TRANSCRIPT
Michael GranadosDesenvolvedor 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 x86Sistema 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
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