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