Docker

Jonhnatha Trigueiro
v 2.1.0

Sobre mim

$ docker run joepreludian/hello

 

Jonhnatha Trigueiro

SRE - Mastercard IT

 

@jjrt42

github.com/joepreludian

Camo faremos?

  • Introdução;
  • Para desenvolvedor;
  • Para ambiente de produção;

História

Virtualização

Virtualização

  • Total;
  • Paravirtualização;
  • VMware;
  • VirtualBox;
  • KVM;

LibVirt
LXC
LibContainer

Docker

  • Virtualização à nível de S.O.
  • Mesmo Kernel, múltiplas distros;
  • Partida quente;
  • Mais rápido;
  • Controle granular de recursos;
    • CPU;
    • Memória;
    • Dispositivos;
    • Pontos de montagem;
    • Rede.

Container

Container

  • Descarga de algodão lenta;
  • Criado para resolver problema de transporte;
  • Tamanho padronizado;
  • Funcionava nos caminhões, trens e navios!

Container

  • Virtualização a nível de S.O;
    • Processo Isolado dentro do sistema operacional;
    • Limitação de recursos (opcional)
  • Criado pra ser uma alternativa barata à virtualização;
  • Formato Padronizado (imagens, containers, composições)
  • Funciona na sua máquina e no servidor em produção;
    • Mesmas configurações em ambos sistemas

Container

  • Imagens de disco versionáveis;
  • Rede Inteligente;
  • Arquivo de composição de containers;
  • Docker Registry.

Para Desenvolvedores

Características

  • Ponte rápida para desenvolvimento;
  • Pode ser utilizado em algumas modalidades:
    • Como uma ferramenta do dia a dia (ex: builder)
    • Como serviço que se queira consumir (ex: mysql)
    • Como ponte para seu próprio projeto
      • Criar imagem com seu projeto;
      • Criação de arquivos de composição de containers
  • Docker Volumes: monta sua pasta local: executa no docker;
    • Montagem de pastas do linux

Latex

$ docker run --rm -it -v $(pwd):/var/texlive harshjv/texlive-2015 pdflatex joey_teste.tex
FROM harshjv/texlive-2015:latest

MAINTAINER Jonhnatha Trigueiro <joepreludian@gmail.com>

ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update && apt-get install pandoc* -y

RUN apt-get clean && \
    rm -rf /var/lib/apt/lists/* \
           /tmp/* \
           /var/tmp/*

ENV PATH /opt/texbin:$PATH
VOLUME /var/texlive

WORKDIR /var/texlive

Docker HUB

Docker HUB

  • Repositório Público Grátis;
  • Repositórios Privados;
  • Ponto de partida para se pegar imagens;
  • https://hub.docker.com;
  • Faça seu próprio Docker HUB;

Docker

Em produção

Um novo paradigma

  • Escalonamento Horizontal;
  • Clusters;
    • Containers entre nós; (Docker Swarm, K8S)
  • Seu server vira um agregador de containers;
    • Build container/Deployment container
  • Basta rodar a imagem que:
    • Você criou à partir de um Dockerfile;
    • Você baixou de um DockerHub privado ou,
    • Que você baixou do SEU próprio "Docker Hub".

Algumas Ferramentas

Docker Compose

---
version: "3.7"

services:
  database:
    image: 'docker.io/postgres:11'
    environment:
      POSTGRES_PASSWORD: 302010wiproite
      POSTGRES_DB: wiproite
      POSTGRES_USER: postgres
    volumes:
      - "db_data:/var/lib/postgresql/data"
  web:
    build:
      context: .
      dockerfile: _devops/Dockerfile-django
    volumes:
      - .:/app
    command: sh run_dev.sh
    ports:
      - 8000:8000
    environment:
      DB_HOST: database
      DB_USER: postgres
      DB_NAME: wiproite
      DB_PASSWORD: 302010wiproite
      IS_PRODUCTION: 'no'
volumes:
  db_data:

Portainer.io

Docker Swarm

Apache Mesos

Google Kubernetes

Ou a sua!

Ele usa uma API REST por trás ;)

unix:///var/run/docker.sock

Obrigado!
(dúvidas?)

@jjrt42
github.com/joepreludian

Docker

By Jonhnatha Trigueiro

Docker

Do Desenvolvedor Ao Ambiente Em Produção Escalável – Jonhnatha Trigueiro

  • 1,611