53
Workshop Docker

TDC 2016 Floripa - Workshop docker

Embed Size (px)

Citation preview

Page 1: TDC 2016 Floripa - Workshop docker

Workshop Docker

Page 2: TDC 2016 Floripa - Workshop docker

Quem sou eu

Rafael Gomes:● Soteropolitano● Apaixonado por compartilhamento● Consultor na Thoughtworks● Blog: techfree.com.br● Twitter/github: @gomex● Áreas de interesse/foco:

○ Cultura DevOps○ Cloud○ Entrega contínua○ Automação de infraestrutura○ Teste de infraestrutura○ Monitoramento

Page 3: TDC 2016 Floripa - Workshop docker

O que estou fazendo de relevante agoraLivro:

● Pague quanto quiser, inclusive nada

● Não precisa saber nada de Docker

● Licenciado com Creative Commons

http://tinyurl.com/docker-devel

Page 4: TDC 2016 Floripa - Workshop docker

Introdução ao ecossistema Docker

Page 5: TDC 2016 Floripa - Workshop docker

5

Projeto Open source• 2B+ Download de Imagens• 2000+ Contribudores• 40K+ Estrelas no GitHub • 200K+ App Dockerizadas• 240 Meetups em 70 países• 95K Membros de Meetup

Quem somos nos

Comunidade Docker Docker IncProvedor de container como serviço• Plataforma de integração para dev e

ops• Suporte técnico comercial

Patrocinado do projeto Docker• Principal patrocinador do projeto

Docker• Suporta mantenedores do projeto

Page 6: TDC 2016 Floripa - Workshop docker

Ecossistema do Docker

Dev Tools

Official Repositories

Operating Systems

Big Data

Service Discovery

Build / Continuous Integration

Configuration ManagementConsulting &Training

Management

Storage

Clustering & Scheduling

Networking

Infrastructure & Service Providers

Storage

Security

Monitoring & Logging

6

Page 7: TDC 2016 Floripa - Workshop docker

Básico do Docker

Docker ImageThe basis of a Docker container

Docker ContainerThe standard unit in which the application service resides

Docker Engine Creates, ships and runs Docker containers deployable on physical or virtual host locally, in a datacenter or cloud service provider

Docker RegistryOn-premises registry for image storing and collaboration

Page 8: TDC 2016 Floripa - Workshop docker

Applications are changing

8

Loosely Coupled Services

Many Small Servers

~2000 Today

Monolithic

Big Servers

Slow changing

Rapidly updated

Page 9: TDC 2016 Floripa - Workshop docker

O Desafio

9

Virtual machines

Server Public Cloud

Disaster Recovery

Developer Laptop

Server Cluster

Data Center

Static Website

Web Front EndBackground Workers

User DB Analytics DB

Queue API Endpoint

Development Test & QA Production Scale Out

Page 10: TDC 2016 Floripa - Workshop docker

• Pacotes com binários e suas dependências

• Softwares isolados uns dos outros

• Container como formato padrão

• Fácil portabilidade entre ambientes (GNU/Linux)

• Permite padronização no processo de desenvolvimento

Solução: Containers Docker

10

Container

Page 11: TDC 2016 Floripa - Workshop docker

Solução

11

Static Website

Web Front End

Background Workers

User DB

Analytics DB

QueueAPI Endpoint

Page 12: TDC 2016 Floripa - Workshop docker

Na visão do desenvolvedor

• Build uma vez e rode onde quiser

• Um ambiente de execução portável, seguro e limpo para sua aplicação• Não se preocupe com dependências perdidas, pacotes e outros pontos de dores durante

implantações futuras. Se rodou uma vez, rodará sempre• Execute cada aplicação isolado em seu container, dessa forma você pode executar várias

versões de biblioteca e outras dependências para aplicação sem problemas• Teste automatizado, integração, empacotamento, tudo que você pode fazer com script.• Reduz/elimina preocupações com relação a diferentes plataformas GNU/Linux• Barato e sem penalidade de performance para implantar seus ambientes. Restart instantâneo

de todo ambiente na velocidade da iniciação do serviço. Esse é o poder do Docker.

Page 13: TDC 2016 Floripa - Workshop docker

Na visão do sysadmin

• Configura uma vez, rode em qualquer lugar

• Faça o ciclo de vida completo ser mais eficiente, consistente e replicável• Aumente a qualidade do código produzido pelos desenvolvedores• Elimine inconsistência entre desenvolvimento, teste, produção e ambiente do cliente• Melhoria significativa na velocidade e confiança do continuous deployment (CD) e continuous

integration (CI).• Container são mais leves, impactam significativamente em problemas de performance, custo,

implantação e portabilidade que normalmente são associados a VMs.

Page 14: TDC 2016 Floripa - Workshop docker

Docker ToolboxTudo que você precisa dentro de uma caixa

• Toolbox inclue:– Kitematic– Docker CLI– Docker Machine– Docker Swarm– Docker Compose

14

Page 15: TDC 2016 Floripa - Workshop docker

Docker Toolbox

15

Vamos instalar!

Page 16: TDC 2016 Floripa - Workshop docker

Containers vs. VMs

Page 17: TDC 2016 Floripa - Workshop docker

Camadas

Page 18: TDC 2016 Floripa - Workshop docker

Imagem e Containers

Page 19: TDC 2016 Floripa - Workshop docker

Arquitetura

Page 20: TDC 2016 Floripa - Workshop docker

Comandos básicos

Comando Explicação

docker pull <nome da imagem> Baixar imagem

docker images Listar as imagens locais

docker inspect <id imagem ou container> Inspecionar informações

docker run <nome da imagem> Iniciar um container

docker ps Listas os containers

docker exec <nome do container> <cmd> Executar comandos no container

Page 21: TDC 2016 Floripa - Workshop docker

docker pull

Page 22: TDC 2016 Floripa - Workshop docker

Exercicio

Baixe a imagem do python

# docker pull python

Page 23: TDC 2016 Floripa - Workshop docker

docker images

Page 24: TDC 2016 Floripa - Workshop docker

Exercicio

Verifique se imagem python existe localmente

# docker images

Page 25: TDC 2016 Floripa - Workshop docker

docker inspect

Page 26: TDC 2016 Floripa - Workshop docker

Exercicio

Verifique qual comando padrão da imagem

# docker inspect python

Obs: Verifique o valor de "CMD"

Page 27: TDC 2016 Floripa - Workshop docker

docker run <parâmetros> <imagem> <CMD>

Parâmetro Explicação

-d Execução em background

--name Nomear o container

-m Limitar o uso de memória RAM

-c Balancear o uso de CPU

-p Mapeamento de porta

-v Mapeamento de volume

-i Modo interativo

-t Alocar pseudo tty

Page 28: TDC 2016 Floripa - Workshop docker

Exercicio

Execute a imagem python em modo interativo e acesse seu shell

# docker run -it python

Page 29: TDC 2016 Floripa - Workshop docker

Restrição de memória

# docker run -m <memória> <imagem>

Page 30: TDC 2016 Floripa - Workshop docker

Exercicio

Execute o container com apenas 300MB de limite

# docker run -it -m 300M python

Page 31: TDC 2016 Floripa - Workshop docker

Balanceamento de CPU

# docker run -c <peso> <imagem>

Valor base 1024

Page 32: TDC 2016 Floripa - Workshop docker

Exercicio

Execute o container com metade do peso

# docker run -it -c 512 python

Page 33: TDC 2016 Floripa - Workshop docker

Mapeamento de porta

# docker run -p portahost:portacontainer <imagem>

Docker host

Virtualbox

Container8080

80

192.168.99.100:80

Cliente

Page 34: TDC 2016 Floripa - Workshop docker

Exercicio

Efetue mapeamento da porta 80 para o container da imagem tutum/apache-php

# docker run -it -p 80:80 tutum/apache-php

Verifique o ip da sua máquina virtual e acesse a interface web

Page 35: TDC 2016 Floripa - Workshop docker

Mapeamento de volume

# docker run -v volhost:volcontainer <imagem>

Docker host

Virtualbox

Container

/Users/gomex/app

Cliente /Users

/app

Page 36: TDC 2016 Floripa - Workshop docker

Exercicio

Efetue mapeamento a sua pasta atual com a pasta /root do container python

# docker run -it -v $PWD:/root python /bin/bash

Crie um arquivo na pasta /root do container, depois saia do container e verifique se esse

arquivo está no host

Page 37: TDC 2016 Floripa - Workshop docker

docker volumes <parâmetros>

Parâmetro Explicação

Create <nome> Cria um volume

Inspect <nome> Inspeciona o volume

ls Lista os volumes existentes

rm Remove o volume

Page 38: TDC 2016 Floripa - Workshop docker

Crie um volume e efetue mapeamento com a pasta /root do container python

# docker volume create --name teste# docker run -it -v teste:/root python /bin/bash

Crie um arquivo na pasta /root do container, depois saia do container, crie um outro container

com o mesmo volume e verifique se o arquivo existe

# docker run -it -v teste:/root alpine /bin/sh

Exercicio

Page 39: TDC 2016 Floripa - Workshop docker

docker ps <parâmetros>

Parâmetro Explicação

-a Lista todos os containers, inclusive os desligados

-l Lista os ultimos containers, inclusive os desligados

-n Lista os últimos N containers, inclusive os desligados

-q Lista apenas os ids dos containers

Page 40: TDC 2016 Floripa - Workshop docker

Exercicio

Verifique quais containers estão em execução no momento

# docker ps

Page 41: TDC 2016 Floripa - Workshop docker

Outros comandos

docker Explicação

stop <id do container> Desliga o container em execução

start <id do container> Inicia o mesmo container que estava finalizado

logs -f <id do container> Verifica o saida padrão do container

attach <id do container> Conectar ao processo que está executando

Page 42: TDC 2016 Floripa - Workshop docker

Exercicio

Vamos testar cada comando

# docker run -itd --name testepython python# docker stop testepython# docker start testepython# docker logs -f testepython# docker attach testepython

Page 43: TDC 2016 Floripa - Workshop docker

docker exec <parâmetros>

Parâmetro Explicação

-i Modo interativo

-t Com pseudo tty

Page 44: TDC 2016 Floripa - Workshop docker

Exercicio

Vamos iniciar um container em background e enviar comandos

# docker run -itd --name testealpine alpine /bin/sh# docker exec -it testealpine ls /etc

Page 45: TDC 2016 Floripa - Workshop docker

Exercicio

1) Crie uma conta na nuvem pública do docker (hub.docker.com)2) Pesquise online sobre uma imagem que você tenha interesse3) Leia README da imagem escolhida4) Baixe a imagem escolhida5) Execute a imagem escolhida com base nos dados do README

Sugestão:

https://hub.docker.com/r/berngp/docker-zabbix/

# docker run -d -P --name zabbix berngp/docker-zabbix

Page 46: TDC 2016 Floripa - Workshop docker

Dockerfile

Page 47: TDC 2016 Floripa - Workshop docker

Dockerfile

É o documento que contém todos os comandos que o usuário poderia normalmente executar para criar um ambiente.

Basicamente é uma descrição de procedimentos para criação do seu ambiente.

Page 48: TDC 2016 Floripa - Workshop docker

Dockerfile

Instruções Explicação

FROM <imagem> Imagem base

MAINTAINER <Autor> Com pseudo tty

COPY <SRC> <DST> Copiar arquivo para dentro do container

RUN <comando> Executar um determinado comando dentro do container

CMD <processo> CMD padrão caso nada seja definido no "docker run"

ENV <Variável><Valor> Especificar variável de ambiente para o container

USER <usuário> O usuário que será usado para dar os comandos

WORKDIR <pasta> Qual pasta de trabalho (cd <pasta>)

Page 49: TDC 2016 Floripa - Workshop docker

Dockerfile

O arquivo é analisado do top a base do arquivo, ou seja, se preocupe com a ordem as instruções nesse documento!

FROM python:2.7COPY . /codeWORKDIR /codeRUN pip install -r requirements.txtCMD python app.py

Page 50: TDC 2016 Floripa - Workshop docker

Fazendo o build

# mkdir imagem# cd imagem# vi Dockerfile# docker build -t=<nome da imagem> .

Obs: No nome da imagem, lembre-se que a imagem deve conter o nome do seu usuário antes do nome da imagem. Exemplo: gomex/redis (meu usuário é gomex).

Page 51: TDC 2016 Floripa - Workshop docker

# docker login# docker push <nome da imagem>

Obs: No nome da imagem, lembre-se que a imagem deve conter o nome do seu usuário antes do nome da imagem. Exemplo: gomex/redis (meu usuário é gomex).

Enviando pra nuvem

Page 52: TDC 2016 Floripa - Workshop docker

Exercício

1)Escolha uma imagem para ser estendida2)Crie um Dockerfile com suas modificações3)Faça build da imagem4)Envie para nuvem