26
Conheça o Docker Prof. Uirá Ribeiro

Conheça o Docker

Embed Size (px)

Citation preview

Page 1: Conheça o Docker

Conheça o DockerProf. Uirá Ribeiro

Page 2: Conheça o Docker

Introdução ao Docker Como entregar software sem dor ? Como garantir que o software que roda em desenvolvimento

vai rodar em produção? Como criar um ambiente em desenvolvimento que tenha a

infraestrutura de produção sem ”duplicar” a estrutura e dobrar os custos?

Como garantir que as várias camadas e peças de software funcionem bem?

Como não colocar ”todos os ovos” em uma só cesta ?

Page 3: Conheça o Docker

Introdução ao Docker O Docker funciona como um ”Contêiner” de software, capaz

de encapsular tudo que o software precisa para rodar Roda no Kernel existente Isola o ambiente do contêiner do ambiente do Host Possibilita criar uma arquitetura de micro-serviços Muito fácil de criar contêineres Os contêineres são executados de forma rápida e podem ser

parados e reiniciados e trocados em segundos

Page 4: Conheça o Docker

Introdução ao Docker

Page 5: Conheça o Docker

Introdução ao Docker Overhead de processamento é quase inexistente Overhead de rede é mínimo Contêineres são muito leves Um laptop típico pode rodar 10-100 contêineres facilmente Um servidor típico pode rodar de 100-1000 contêineres O que roda local, irá rodar no servidor com o mesmo

comportamento, independente da versão, da distribuição e das dependências de software

Page 6: Conheça o Docker

Introdução ao Docker

Page 7: Conheça o Docker

Introdução ao Docker Um contêiner tem seu próprio espaço de processo (namespaces) Um contêiner tem sua própria rede interna Um contêiner pode rodar programas como ”root” sem problemas Pode ter seu próprio /sbin /etc /etc/init sem afetar o host Seu sistema de arquivos é incremental ”por camadas”. Isso

permite um rollback fácil. Docker CPU performance = performance nativa Docker Memória = % pequeno diferente da memória do Host Docker Rede = % pequeno de overhead

Page 8: Conheça o Docker

Pid namespace

Page 9: Conheça o Docker

Mnt namespace

Page 10: Conheça o Docker

Ipc namespace

Page 11: Conheça o Docker

Docker não é uma VM Docker NÃO é uma VM leve Docker aproveita o KERNEL do Host Docker não precisa de SO Convidado Docker isola o processo do Host Docker permite que você execute um ambiente diferente do

ambiente do Host Docker permite que você tenha uma biblioteca com

dependências e versões diferentes do Host Docker pode rodar em uma VM Docker pode rodar até em um Contêiner

Page 12: Conheça o Docker

VM x Docker

Page 13: Conheça o Docker

Como entregar software para diferentes dispositivos ?

Page 14: Conheça o Docker

O que cabe no contêiner? Seu código fonte todo Seus binários Suas bibliotecas Seu gerenciador de pacotes favorito (APT-GET, RPM, YUM,

YAST, etc) Seus aplicativos Seus serviços de SGBD (Mysql, Oracle, Mongo, PostgreSQL, etc Seus dados

Page 15: Conheça o Docker

E fora do contêiner, fica o que? Logging Acesso remoto Configuração de rede Monitoramento

Page 16: Conheça o Docker

E meus dados? Volumes permitem que um diretório específico exista dentro e

fora do contêiner Os contêineres podem compartilhar volumes em um mesmo

Host Um diretório pode persistir mesmo que um contêiner seja

deletado Volumes com dados podem ser criados em um Dockerfile ou

CLI Uma alteração no sistema de arquivos de um contêiner pode

ser copiada para demais contêineres

Page 17: Conheça o Docker

Chega de Dev x Ops

Page 18: Conheça o Docker

Tá, mas qual a grande sacada? Sim, você pode fazer tudo com VMs. Sim, você pode automatizar com scripts Mas a graaaaaaande questão é fazer tudo r-i-d-i-c-u-l-a-m-e-n-t-e

fácil de usar Você pode utilizar as imagens de outras pessoas (SIM, o

Ecossistema) Continua entrega / integração / teste / orquestração de software Você pode criar e compartilhar imagens (todos da equipe rodam a

mesma coisa) Provê uma maneira simples, PADRÃO e que pode ser REPRODUZIDA

com facilidade de entregar imagens

Page 19: Conheça o Docker

Configuração Simples Sim, funciona no LINUX Sim, funciona no MAC Sim, funciona no Windows Sim, funciona em VMs Altamente escalável Instalação simples através de git Provisionamento simples na AWS, Rackspace, Digital Ocean e

Azure

Page 20: Conheça o Docker

Componentes do Docker Docker Daemon = roda em background, gerencia os contêineres e

imagens. Funciona através de uma API HTTP Docker Contêiner = Unidade padrão que os aplicativos e serviços

residem e são executados Docker Imagem = A base de um contêiner. Docker CLI = cliente que conversa com a API HTTP para processar

as requisições Docker Engine = Cria, entrega e roda os contêineres Docker Registry = Repositório publico ou privado de imagens Demais ferramentas de orquestração = ajudam na entrega e

monitoramento de contêineres

Page 21: Conheça o Docker

Fluxo de Trabalho do Docker Você trabalha com todos os componentes que precisa no

desenvolvimento Todos da equipe de desenvolvimento fazer código com o

mesmo ambiente (compartilham as imagens) Outros serviços necessários do código (RADIS, MEMCACHE,

Banco) também rodam nos contêineres. Você testa como deve ser no servidor

Os contêineres podem ser criados em segundos e rodam instantaneamente

Page 22: Conheça o Docker

Satisfeito com o resultado? Se você ficar satisfeito com o resultado, pode enviar sua

imagem para um repositório; Pode rodar automaticamente o contêiner em CI/CD Pode rodar em produção Permite crescimento fácil com mais contêineres e Loadbalance

FELICIDADE!!! E se algo der errado? Volte ao contêiner anterior sem dor!

Page 23: Conheça o Docker

Simples assim: host$ docker run ubuntu bash ubuntu$ apt-get install aquilo-e-isso host$ docker commit <conteiner_id> minhaimagem

host$ docker run minhaimagem bash minhaimagem$ git clone git://..../meucódigo host$ docker commit <conteiner_id> minhaimagem

host$ docker tag minhaimagem <usuário/minhaimagem> host$ docker push <usuário/minhaimagem>

Page 24: Conheça o Docker

Construir -> Entregar

Page 25: Conheça o Docker

Agilidade + Portabilidade + Controle

Page 26: Conheça o Docker