docker: uma visão geral

15
2017-03-13 DOCKER - uma visão geral Michael Granados

Upload: michael-castillo-granados

Post on 12-Apr-2017

109 views

Category:

Technology


0 download

TRANSCRIPT

2017-03-13

DOCKER - uma visão geralMichael Granados

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

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