Top Banner
Docker e sua Relação com Microsserviços Gabriel Angelo Sgarbi Cocenza Gabriel Muniz Morão Gustavo Pedralino de Oliveira Kleber Yuji Inoue Uelton Cardeal Pimenta Filho
33

Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Mar 21, 2022

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Docker e sua Relação com Microsserviços

Gabriel Angelo Sgarbi CocenzaGabriel Muniz MorãoGustavo Pedralino de OliveiraKleber Yuji InoueUelton Cardeal Pimenta Filho

Page 2: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Agenda

2

● O que é Docker e seus principais conceitos;● Evolução histórica e a empresa Docker;● Utilização e dados estatísticos;● Instalação, dockerfile e principais comandos;● Docker Compose;● Docker Hub: suas funcionalidades e comandos;● Osquestração de Containers, Kubernetes e Docker Swarm;● Exemplo e live coding com Docker.

Page 3: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Agrupamento de uma aplicação junto com suas dependências que compartilham o kernel do S.O do host, ou seja, da máquina virtual ou física onde está rodando a aplicação.

Seu objetivo é dar independência de execução à diversos processos e aplicações, a fim de otimizar a utilização da infraestrutura de recursos promovendo a mesma segurança de sistemas separados.

Container

3

Page 4: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Projeto open source de plataforma as a service (PaaS), com a proposta de desenvolver, entregar e executar projetos em pacotes de software.

Esses pacotes são containers isolados que agrupam seus próprios softwares, bibliotecas e arquivos.

Solução flexível, portátil e escalável para desenvolvimento de aplicações.

Docker

4

Page 5: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

VM vs Docker Container

5

Page 6: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Evolução

6

2005

OpenVz

Ferramenta para gerenciamento de container que ajudou na popularização do VPS (Virtual Private Server) e, consequentemente na criação de centenas de empresas de hosting

2008

LXC (Google + Virtuozzo + IBM)Solução estável para criação e gerenciamento de containers que trazia consigo o CGroups, namespaces e chroot.

2000

FreeBSD jails

isolamento do filesystem + isolamento processos

2013

Docker

1979

chroot

introduzido em 1979 na versão 7 Unix em 1979 foi feito para isolar o filesystem

Page 7: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Docker Inc.

7

● Começou em 2010 quando Solomon Hykes fundou a dotCloud especializada em PaaS (Plataform as a Service) com o diferencial de não ser atrelado a nenhuma linguagem de programação específica. Heroku por exemplo suportava somente apps em Ruby;

● Em 2013 tornou open-source o core da plataforma - assim nasceu o Docker;

● 6 meses > 6 mil stars GitHub > 170 desenvolvedores pelo mundo;

● Antes da versão 1.0 para produção, Spotify já usava em grande escala;

● AWS e GCP começaram a oferecer suporte na nuvem;

● Tornou-se um unicórnio em 2015.

Page 8: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Histórico Utilização Docker

8

MicrosoftMicrosoft anuncia segunda versão do WSL (Windows Subsystem for Linux ). Portanto, Docker passa a funcionar para Windows 10 Home, Pro e Enterprise

2019

LinkedinUma análise no Linkedin demonstrou que a utilização do docker cresceu 160%

2017

Principais Parceiros Cisco, Google, Huawei, IBM, Microsoft, and Red Hat

2016

IBM / AWSParceria estratégica com o Docker para melhor integração com IBM Cloud. Serviço de Docker anunciado na AWS para a EC2

2014

Red HatColobaração para Fedora, Red Hat Enterpise Linux (RHEL) e OpenShift

2013

Page 9: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Crescimento Utilização Docker

9 Fonte

Page 10: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Crescimento Utilização Docker

10 Fonte

Page 11: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Crescimento Utilização Docker

11 Fonte

Page 12: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Crescimento Utilização Docker

12 Fonte

Page 13: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Instalação Docker

13 Fonte

Pré-requisitos:

● Máquinas 64 bits

● Estável para kernel >= 3.8 (Ubuntu 20 - Kernel 5.4)

● kernel com suporte aos sistemas de arquivos, como o AUFS, Device Mapper etc.

● Suporte a cgroups e namespaces que vem habilitado por default na maioria das distros.

Page 14: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

dockerfile

14

➔ ADD - Copia novos arquivos, diretórios, arquivos TAR ou arquivos remotos e adiciona ao filesystem do container.

➔ CMD - Executa um comando. Diferentemente do RUN, que executa o comando quando está “buildando”, a imagem, o CMD irá fazê-lo somente quando o container for iniciado.

➔ LABEL - Adiciona metadados à imagem, como versão, descrição e fabricante➔ COPY - Copia novos arquivos e diretórios e os adiciona ao filesystem do container➔ ENTRYPOINT - Permite configurar um container para rodar um executável. Quando

finaliza o executável, o container também será.➔ ENV - Informa variáveis de ambiente ao container.➔ EXPOSE - Informa qual porta o container está ouvindo➔ FROM - Indica qual imagem será utilizada como base. Primeira linha do dockerfile➔ MAINTAINER - Autor da imagem➔ RUN - Executa qualquer comando em uma nova camada no topo da imagem e

“comita” as alterações.➔ USER - especifica o usuário que será utilizado na imagem. Por padrão é root➔ VOLUME - Permite criação de um ponto de montagem no container.➔ WORKDIR - Responsável por mudar do diretório raiz para o específico nele

Page 15: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

dockerfile

15

Page 16: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

dockerfile

16

FROM alpine:3.10

COPY requirements.txt /

RUN apk add --no-cache python3 python3-dev libev libev-dev tzdata \

&& pip3 install --upgrade pip

RUN apk add --no-cache --virtual build-dependencies \

gcc \

musl-dev \

\

&& cp /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime \

&& echo "America/Sao_Paulo" > /etc/timezone \

&& pip3 install -r /requirements.txt \

&& apk del build-dependencies \

&& rm requirements.txt

COPY src /src

COPY run.py /run.py

CMD python3 run.py

Page 17: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Principais Comandos

17

Montar imagem:docker build -t <imageName> .

Rodar a imagem:docker run <imageName>

Pausar:docker container stop <ContainerID>

Pausar todos os containers da máquina:docker stop $(docker ps -a -q)

Remover todos os containers da máquina:docker system prune

Remover todos os imagens da máquina:docker rmi $(docker images -q)

Page 18: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Docker Compose

18

● Ferramenta para escrever em um único arquivo todos os detalhes do ambiente da aplicação. Com ele é possível definir todos os serviços que deseja-se criar e quais as características de cada serviço ( quantidade de containers, volumes, networks, secrets, etc.)

● Formato de arquivo YML

Principais comandos:Subir Containersdocker-compose up --build -d

Pausar containers:docker-compose down

Page 19: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Docker Compose

19

version: "3.7"

services:

mongodb_container:

container_name: "mongodb"

image: mongo:4.0

network_mode: host

volumes:

- mongodb_data:/data/db

ports:

- "27017:27017"

volumes:

mongodb_data:

Page 20: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Docker Hub

20

● Repositório público e privado de imagens que disponibiliza diversos recursos, como por exemplo, banco de dados, sistema de autenticação entre outras funcionalidades;

● Maior comunidade e biblioteca do mundo em imagens de contêineres;

● Grande uso pela comunidade;

● Reuso de Software;

● Economia de tempo.

https://hub.docker.com/

Page 21: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Docker Hub - Funcionalidades

21

● Repositório de imagens;

● Automatização da construção das imagens;

● Webhooks;

● Organização;

● Integração com GitHub e Bitbucket;

● Serviço de autenticação.

https://hub.docker.com/

Page 22: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Docker Hub - Comandos

22

Busca:docker search [OPTIONS] TERM

Login:docker login [OPTIONS][SERVER]

Pull:docker pull [OPTIONS] NAME[:TAG|@DIGEST]

Push:docker push [OPTIONS] NAME[:TAG]

https://hub.docker.com/

Page 23: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Docker Hub

23

https://docs.docker.com/

Page 24: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Docker Hub

24

https://docs.docker.com/

Page 25: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Orquestração de Containers

25

● Docker é muito bom para criar ambientes de sistemas que atendam diferentes estágios de desenvolvimento (testes e homologações), mas e quando uma aplicação está já está em produção?

● Exemplo:○ Você está em um avião em movimento e ele apresenta um problema. É

impossível parar o avião para consertá-lo, então é preciso resolver o problema com o avião em movimento.

Fonte

Page 26: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Orquestração de Containers

26

● O exemplo mostra a complexidade do ambiente de produção e os orquestradores de containers são responsáveis por preparar o ambiente para “manter o avião voando em perfeitas condições”.

● Os containers são passíveis a problemas, como:○ Travas;○ Lentidão;○ Dificuldades para lidar com upgrades;○ Sofrem instabilidades nos servidores.

Fonte

Page 27: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Orquestração de Containers

27

● As ferramentas de orquestração de containers são aplicações em nuvem que permitem fazer o gerenciamento de múltiplos contêineres.

● Objetivo:○ Cuidar do ciclo de vida dos containers de forma autônoma, subindo e

distribuindo, conforme as especificações ou as demandas.

Fonte

Page 28: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Kubernetes (K8s)

28

● Orquestrador de containers mais utilizado no mercado, por ter sido um dos primeiros orquestradores e também ser uma opção open source;

● Foi desenvolvida pela Google para projetos internos. Em 2015 foi entregue ao Cloud Native Computing Foundation e até hoje é mantida pela comunidade;

● Possui uma comunidade gigante;

● Possui uma curva de aprendizado acentuada.

Fonte

Page 29: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Docker Swarm

29

● Docker Swarm é uma ferramenta nativa do Docker para orquestração de containers;

● Open source;

● Possui configurações mais amigáveis, o que torna a curva de aprendizado menor;

● Possui uma curva de aprendizado mais leve.

Fonte

Page 30: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Kubernetes x Docker Swarm

30

Kubernetes Docker Swarm

Instalação complexa Fácil instalação

Alta curva de aprendizado Mais fácil de usar

Auto escalável Manualmente escalável

Imensa comunidade Comunidade menor em relação ao Kubernetes

É uma ferramenta muito robusta Possui limitação maior nas funcionalidades

Fonte

Page 31: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Outras Ferramentas

31

● Amazon ECS - Amazon;

● OpenShift - Red Hat;

● Google Container Engine - Google;

● Azure Container Service - Microsoft.

Page 32: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

Referências

32

https://dockerswarm.rocks/https://docs.docker.com/https://github.com/paurakhsharma/python-microservice-fastapihttps://dev.to/paurakhsharma/microservice-in-python-using-fastapi-24cchttps://github.com/tiangolo/full-stack-fastapi-postgresqlhttps://www.nginx.com/https://doc.traefik.io/traefik/

Page 33: Uelton Cardeal Pimenta Filho Kleber Yuji Inoue Gustavo ...

OBRIGADO!

33