Docker – Um capítulo
à parte
MAURÍCIO HARLEY
MAIO DE 2018
https://itHarley.com
Agenda
• Virtualização;
• Histórico sobre Containers;
• Conceitos Gerais;
• Demo;
• Dicas de Leitura;
• Bônus: o que vem “depois”?
2
https://itHarley.com
Quem é você?
• MBA em Gerenciamento de Projetos deTI – Faculdade Farias Brito;
• Bacharel em Engenharia Elétrica – UFC;
• Tecnológo emTelemática – FIC/Estácio;
• Técnico em Informática Industrial – ETFCE/CEFET-CE/IFCE;
• 2x CCIE (Routing & Switching, Service Provider), CISSP;
• VCIX-NV (Vmware NSX), MCSECloud Platform,VCP6-DCV, JNCIA-Cloud, ITIL v3;
• Ex-membro do Cisco Data CenterTigerTeam;
• Áreas de especialidade: Cyber Security, DataCenter, Cloud Computing, Routing & Switching, Service Provider;
• Colaborador regular da PenTest Magazine e da Hakin9;
• Arquiteto de CloudComputing e Cyber Security na HX Brasil;
• Palestrante de temas diversos emTecnologia da Informação;
• Mais de 20 anos de experiência emTI.
3
Virtualização
4
https://itHarley.com
Virtualização
• Quando e como começou?
• Década de 1960;
• Mainframes;
• Sistema de compartilhamento de tempo para processamento de tarefas;
• Alterações foram realizadas no sistema operacional;
• Cada usuário passou a receber uma “máquina virtual”, que dava a ele a impressão
de estar acessando o computador central;
• A tecnologia evoluiu ao longo do tempo, permitindo a possibilidade de criar
clusters de computadores para determinadas atividades;
• AVMware portou essa capacidade para servidores x86.
5
https://itHarley.com
Calma! Mainframe? Como assim?
6
https://itHarley.com
O que pode ser virtualizado em TI?
• Hardware
• VMware vSphere ou Microsoft Hyper-V
• Storage
• Dell Compellent ou FreeNAS
• Rede
• VLANs eVRFs
• Aplicação
• Citrix XenApp ouVMwareThinApp
• Desktop
• Microsoft Remote Desktop Services (RDS) ou Citrix XenDesktop
7
https://itHarley.com
Focando em virtualização de hardware
• Tipos deVirtualização de Servidores
• Tipo 1
• Tipo 2
8
https://itHarley.com
Exemplos de Virtualizadores
• Tipo 1, também chamados de hypervisors
• Microsoft Hyper-V;
• VMware ESXi
• O que é o vSphere???
• vSphere é apenas a suíte composta por ESXi + vCenter.
• XenServer (Citrix ou open source);
• KVM + QEMU + libvirt;
• bhyve e xhyve.
9
https://itHarley.com
Exemplos de Virtualizadores (cont.)
• Tipo 2 (dependem do sistema operacional host)
• MicrosoftVirtual PC (descontinuado);
• VMwareWorkstation;
• VMware Player;
• VMware Fusion;
• OracleVirtualbox;
• Parallels Desktop.
10
Histórico sobre Containers
11
https://itHarley.com
Antes de mais nada...
O que são containers, no “mundo real”?
12
https://itHarley.com
13
https://itHarley.com
Breve Histórico
• Containers não começaram com Docker!
• Década de 1970: UnixV7;
• 2000: Jails no FreeBSD;
• 2001: VServer no Linux (ao mesmo estilo dos Jails);
• 2002: Virtuozzo;
• 2004: Oracle Solaris Containers;
• 2005: OpenVZ;
14
https://itHarley.com
Breve Histórico (cont.)
• 2006: Process Containers;
• 2008: LXC (Linux Containers) ;
• 2011: Warden;
• 2013: LMCTFY (Let Me ContainThat ForYou);
• 2013: Docker;
• Quem criou o Docker?
• A Docker Inc., certo?
• Sim e não! O software foi criado em 2010 pela dotCloud, uma empresa de PaaS;
• Ela foi comprada pela Docker Inc. em 2013, ano em que o produto foi liberado como
open source.
15
https://itHarley.com
Breve Histórico (cont.)
• 2014: CoreOS lança o rkt, sua versão de containers;
• 2017: produto se torna plenamente maduro;
• 2017: Kubernetes dá um boom ao mundo de containers
• Kubernetes suporta Docker e rkt;
• AWS e Microsoft anunciam suporte pleno à plataforma;
• Google já a suporta desde o lançamento, e a usa internamente em todos os
serviços da GCP (GoogleCloud Platform).
16
Conceitos Gerais
17
https://itHarley.com
Conceitos Gerais
• Containers, emTI, são:
• Estruturas isoladas para execução de aplicativos e serviços em um espaço de
memória próprio;
• Ambiente mínimo de execução de aplicações, aproveitando-se do
compartilhamento de um mesmo sistema operacional, o que permite usar as
bibliotecas e chamadas de kernel (syscalls) desse sistema;
• Mecanismos de se aproveitar de um repositório central, conhecido como
“registry”, responsável por armazenar imagens que são usadas como base para
instanciamento dos mesmos.
18
https://itHarley.com
Conceitos Gerais (cont.)
19
VMs =
Containers =
https://itHarley.com
Conceitos Gerais (cont.)
20
https://itHarley.com
Conceitos Gerais (cont.)
• 1: Hypervisor tipo 2 comVMs;
• 2: Hypervisor tipo 2 comVMs. Uma tem o Docker;
• 3: Docker instalado diretamente no sistema operacional do servidor;
• 4: Hypervisor tpio 1 comVMs. Uma tem o Docker.
21
https://itHarley.com
Conceitos Gerais (cont.)
• Componentes do Docker
• Docker Engine
22
https://itHarley.com
Conceitos Gerais (cont.)
• Componentes do Docker
• Docker Engine (cont.)
23
https://itHarley.com
Conceitos Gerais (cont.)
• Componentes do Docker
• Docker Machine
24
https://itHarley.com
Conceitos Gerais (cont.)
25
https://itHarley.com
Conceitos Gerais (cont.)
• Docker Machine foi a primeira forma de fazer containers Linux rodar em
sistemas não-Linux;
• Quando necessitando de containers Docker em sistemas assim (Windows
ou macOS), a recomendação é usar a respectiva versão do software para a
plataforma:
• Docker forWindows;
• Docker for macOS.
• Docker forWindows usa Hyper-V;
• Docker for macOS usa HyperKit (xhyve);
• São opções com hypervisor do tipo 1!
26
https://itHarley.com
Conceitos Gerais (cont.)
• Componentes do Docker
• Docker Compose
27
https://itHarley.com
Conceitos Gerais (cont.)
• Componentes do Docker
• Docker Registry
28
https://itHarley.com
Conceitos Gerais (cont.)
• Componentes do Docker
• Docker Registry
29
https://itHarley.com
Conceitos Gerais (cont.)
• E quando se tem muitos containers, o que fazer para gerenciá-los?
• Criar um cluster de Docker Swarm!
• Cada host que executa o Docker daemon (server) é eleito como membro do cluster;
• Um deles é definido como mestre, e se torna responsável pela alocação de containers
nele mesmo e nos outros hosts;
• Numa situação de falha do mestre, um outro membro do cluster é eleito novo mestre.
• Ok, mas e se forem dezenas, centenas, milhares de containers???
• Kubernetes (k8s)!
• Orquestrador de ambientes de micro serviços;
• Gerencia não só os containers em si, mas os hosts, a rede e o storage envolvidos;
• Criado inicialmente pelo Google para uso próprio, mas liberado como open source em
2014.
30
https://itHarley.com
Conceitos Gerais (cont.)
• Docker Hub
• Repositório público ou privado para você armazenar suas imagens.
• Docker Store
• Marketplace (a exemplo de AWS, Google e Microsoft) para ter acesso às imagens
de outras empresas. Parceiros do ecossistema Docker oferecem aqui seus
produtos.
• Orquestração de Containers na Nuvem
• Google Cloud Platform Kubernetes;
• AWS ECS (ElasticContainer Service);
• MicrosoftAKS (Azure Kubernetes Service).
31
Demo
32
Dicas de Leitura
33
https://itHarley.com
Dicas de Leitura
34
https://itHarley.com
Links para referência
• https://itHarley.com/a-b-c-docker-capitulo-1
• https://www.docker.com
• https://kubernetes.io
• https://coreos.com
• https://blog.docker.com/2016/03/containers-are-not-vms/
• https://www.networkworld.com/article/2254433/virtualization/with-long-history-of-virtualization-
behind-it--ibm-looks-to-the-future.html
• http://www.techadvisory.org/2016/01/5-different-types-of-virtualization/
• https://searchservervirtualization.techtarget.com/feature/A-brief-history-of-Docker-Containers-
overnight-success
• https://blog.aquasec.com/a-brief-history-of-containers-from-1970s-chroot-to-docker-2016
35
Bônus: o que vem “depois”?
36
https://itHarley.com
Serverless Computing
• Está relacionada com computação em nuvem;
• Abstração completa de infraestrutura, sistema operacional,
framework, ou qualquer outro componente interno;
• Dispensa provisionamento de qualquer servidor;
• Funções!
• Perfeitamente integrável com microserviços (containers);
• Interação é feita através de APIs.
37
https://itHarley.com
Serverless Computing (cont.)
• Pode ser usada com runtimes ou com bases de dados;
• Nos runtimes, é preciso que a linguagem de programação seja suportada
• Python, Node.JS, C#, Go, Java, ...
• AWS Lambda, Azure Functions, Google Functions;
• IBM lançou o OpenWhisk como open source
• É atualmente sub-projeto da Apache Foundation;
• Suporta Node.JS, Python, Java e Swift.
• OpenFaaS (Function as a Service) é outra solução open source
• Focada em Docker e Kubernetes.
38
https://itHarley.com
Serverless Computing (cont.)
• Também eliminam a necessidade de provisionamento dos
respectivos bancos de dados;
• É usado o conceito de lago de dados (data lake), uma definição
proveniente de Big Data
• Bases de tamanhos absurdamente grandes e com alto desempenho.
• Exemplos de produtos são oAWS Aurora, o Azure Data Lake, Google
Cloud Datastore;
• Opção independente: FaunaDB (baseada em tecnologia doTwitter).
39
https://itHarley.com
Inscrições: http://bit.ly/DevOps-CE
40
https://itHarley.com
Obrigado!!!
https://itHarley.com
@mauricioharley
42

Docker - Um capitulo à parte

  • 1.
    Docker – Umcapítulo à parte MAURÍCIO HARLEY MAIO DE 2018
  • 2.
    https://itHarley.com Agenda • Virtualização; • Históricosobre Containers; • Conceitos Gerais; • Demo; • Dicas de Leitura; • Bônus: o que vem “depois”? 2
  • 3.
    https://itHarley.com Quem é você? •MBA em Gerenciamento de Projetos deTI – Faculdade Farias Brito; • Bacharel em Engenharia Elétrica – UFC; • Tecnológo emTelemática – FIC/Estácio; • Técnico em Informática Industrial – ETFCE/CEFET-CE/IFCE; • 2x CCIE (Routing & Switching, Service Provider), CISSP; • VCIX-NV (Vmware NSX), MCSECloud Platform,VCP6-DCV, JNCIA-Cloud, ITIL v3; • Ex-membro do Cisco Data CenterTigerTeam; • Áreas de especialidade: Cyber Security, DataCenter, Cloud Computing, Routing & Switching, Service Provider; • Colaborador regular da PenTest Magazine e da Hakin9; • Arquiteto de CloudComputing e Cyber Security na HX Brasil; • Palestrante de temas diversos emTecnologia da Informação; • Mais de 20 anos de experiência emTI. 3
  • 4.
  • 5.
    https://itHarley.com Virtualização • Quando ecomo começou? • Década de 1960; • Mainframes; • Sistema de compartilhamento de tempo para processamento de tarefas; • Alterações foram realizadas no sistema operacional; • Cada usuário passou a receber uma “máquina virtual”, que dava a ele a impressão de estar acessando o computador central; • A tecnologia evoluiu ao longo do tempo, permitindo a possibilidade de criar clusters de computadores para determinadas atividades; • AVMware portou essa capacidade para servidores x86. 5
  • 6.
  • 7.
    https://itHarley.com O que podeser virtualizado em TI? • Hardware • VMware vSphere ou Microsoft Hyper-V • Storage • Dell Compellent ou FreeNAS • Rede • VLANs eVRFs • Aplicação • Citrix XenApp ouVMwareThinApp • Desktop • Microsoft Remote Desktop Services (RDS) ou Citrix XenDesktop 7
  • 8.
    https://itHarley.com Focando em virtualizaçãode hardware • Tipos deVirtualização de Servidores • Tipo 1 • Tipo 2 8
  • 9.
    https://itHarley.com Exemplos de Virtualizadores •Tipo 1, também chamados de hypervisors • Microsoft Hyper-V; • VMware ESXi • O que é o vSphere??? • vSphere é apenas a suíte composta por ESXi + vCenter. • XenServer (Citrix ou open source); • KVM + QEMU + libvirt; • bhyve e xhyve. 9
  • 10.
    https://itHarley.com Exemplos de Virtualizadores(cont.) • Tipo 2 (dependem do sistema operacional host) • MicrosoftVirtual PC (descontinuado); • VMwareWorkstation; • VMware Player; • VMware Fusion; • OracleVirtualbox; • Parallels Desktop. 10
  • 11.
  • 12.
    https://itHarley.com Antes de maisnada... O que são containers, no “mundo real”? 12
  • 13.
  • 14.
    https://itHarley.com Breve Histórico • Containersnão começaram com Docker! • Década de 1970: UnixV7; • 2000: Jails no FreeBSD; • 2001: VServer no Linux (ao mesmo estilo dos Jails); • 2002: Virtuozzo; • 2004: Oracle Solaris Containers; • 2005: OpenVZ; 14
  • 15.
    https://itHarley.com Breve Histórico (cont.) •2006: Process Containers; • 2008: LXC (Linux Containers) ; • 2011: Warden; • 2013: LMCTFY (Let Me ContainThat ForYou); • 2013: Docker; • Quem criou o Docker? • A Docker Inc., certo? • Sim e não! O software foi criado em 2010 pela dotCloud, uma empresa de PaaS; • Ela foi comprada pela Docker Inc. em 2013, ano em que o produto foi liberado como open source. 15
  • 16.
    https://itHarley.com Breve Histórico (cont.) •2014: CoreOS lança o rkt, sua versão de containers; • 2017: produto se torna plenamente maduro; • 2017: Kubernetes dá um boom ao mundo de containers • Kubernetes suporta Docker e rkt; • AWS e Microsoft anunciam suporte pleno à plataforma; • Google já a suporta desde o lançamento, e a usa internamente em todos os serviços da GCP (GoogleCloud Platform). 16
  • 17.
  • 18.
    https://itHarley.com Conceitos Gerais • Containers,emTI, são: • Estruturas isoladas para execução de aplicativos e serviços em um espaço de memória próprio; • Ambiente mínimo de execução de aplicações, aproveitando-se do compartilhamento de um mesmo sistema operacional, o que permite usar as bibliotecas e chamadas de kernel (syscalls) desse sistema; • Mecanismos de se aproveitar de um repositório central, conhecido como “registry”, responsável por armazenar imagens que são usadas como base para instanciamento dos mesmos. 18
  • 19.
  • 20.
  • 21.
    https://itHarley.com Conceitos Gerais (cont.) •1: Hypervisor tipo 2 comVMs; • 2: Hypervisor tipo 2 comVMs. Uma tem o Docker; • 3: Docker instalado diretamente no sistema operacional do servidor; • 4: Hypervisor tpio 1 comVMs. Uma tem o Docker. 21
  • 22.
    https://itHarley.com Conceitos Gerais (cont.) •Componentes do Docker • Docker Engine 22
  • 23.
    https://itHarley.com Conceitos Gerais (cont.) •Componentes do Docker • Docker Engine (cont.) 23
  • 24.
    https://itHarley.com Conceitos Gerais (cont.) •Componentes do Docker • Docker Machine 24
  • 25.
  • 26.
    https://itHarley.com Conceitos Gerais (cont.) •Docker Machine foi a primeira forma de fazer containers Linux rodar em sistemas não-Linux; • Quando necessitando de containers Docker em sistemas assim (Windows ou macOS), a recomendação é usar a respectiva versão do software para a plataforma: • Docker forWindows; • Docker for macOS. • Docker forWindows usa Hyper-V; • Docker for macOS usa HyperKit (xhyve); • São opções com hypervisor do tipo 1! 26
  • 27.
    https://itHarley.com Conceitos Gerais (cont.) •Componentes do Docker • Docker Compose 27
  • 28.
    https://itHarley.com Conceitos Gerais (cont.) •Componentes do Docker • Docker Registry 28
  • 29.
    https://itHarley.com Conceitos Gerais (cont.) •Componentes do Docker • Docker Registry 29
  • 30.
    https://itHarley.com Conceitos Gerais (cont.) •E quando se tem muitos containers, o que fazer para gerenciá-los? • Criar um cluster de Docker Swarm! • Cada host que executa o Docker daemon (server) é eleito como membro do cluster; • Um deles é definido como mestre, e se torna responsável pela alocação de containers nele mesmo e nos outros hosts; • Numa situação de falha do mestre, um outro membro do cluster é eleito novo mestre. • Ok, mas e se forem dezenas, centenas, milhares de containers??? • Kubernetes (k8s)! • Orquestrador de ambientes de micro serviços; • Gerencia não só os containers em si, mas os hosts, a rede e o storage envolvidos; • Criado inicialmente pelo Google para uso próprio, mas liberado como open source em 2014. 30
  • 31.
    https://itHarley.com Conceitos Gerais (cont.) •Docker Hub • Repositório público ou privado para você armazenar suas imagens. • Docker Store • Marketplace (a exemplo de AWS, Google e Microsoft) para ter acesso às imagens de outras empresas. Parceiros do ecossistema Docker oferecem aqui seus produtos. • Orquestração de Containers na Nuvem • Google Cloud Platform Kubernetes; • AWS ECS (ElasticContainer Service); • MicrosoftAKS (Azure Kubernetes Service). 31
  • 32.
  • 33.
  • 34.
  • 35.
    https://itHarley.com Links para referência •https://itHarley.com/a-b-c-docker-capitulo-1 • https://www.docker.com • https://kubernetes.io • https://coreos.com • https://blog.docker.com/2016/03/containers-are-not-vms/ • https://www.networkworld.com/article/2254433/virtualization/with-long-history-of-virtualization- behind-it--ibm-looks-to-the-future.html • http://www.techadvisory.org/2016/01/5-different-types-of-virtualization/ • https://searchservervirtualization.techtarget.com/feature/A-brief-history-of-Docker-Containers- overnight-success • https://blog.aquasec.com/a-brief-history-of-containers-from-1970s-chroot-to-docker-2016 35
  • 36.
    Bônus: o quevem “depois”? 36
  • 37.
    https://itHarley.com Serverless Computing • Estárelacionada com computação em nuvem; • Abstração completa de infraestrutura, sistema operacional, framework, ou qualquer outro componente interno; • Dispensa provisionamento de qualquer servidor; • Funções! • Perfeitamente integrável com microserviços (containers); • Interação é feita através de APIs. 37
  • 38.
    https://itHarley.com Serverless Computing (cont.) •Pode ser usada com runtimes ou com bases de dados; • Nos runtimes, é preciso que a linguagem de programação seja suportada • Python, Node.JS, C#, Go, Java, ... • AWS Lambda, Azure Functions, Google Functions; • IBM lançou o OpenWhisk como open source • É atualmente sub-projeto da Apache Foundation; • Suporta Node.JS, Python, Java e Swift. • OpenFaaS (Function as a Service) é outra solução open source • Focada em Docker e Kubernetes. 38
  • 39.
    https://itHarley.com Serverless Computing (cont.) •Também eliminam a necessidade de provisionamento dos respectivos bancos de dados; • É usado o conceito de lago de dados (data lake), uma definição proveniente de Big Data • Bases de tamanhos absurdamente grandes e com alto desempenho. • Exemplos de produtos são oAWS Aurora, o Azure Data Lake, Google Cloud Datastore; • Opção independente: FaunaDB (baseada em tecnologia doTwitter). 39
  • 40.
  • 41.

Notas do Editor

  • #15 Unix V7: chroot; Jails: criação de ambientes independentes, com memória, sistema de arquivos e rede separados; VServer: exatamente a mesma coisa do Jails, mas para Linux; Virtuozzo: criava VPSs isolados em servidores bare metal, mas só podiam executar um determinado SO guest (ou apenas Windows ou apenas Linux); Solaris: controles de separação se baseavam em zonas, o que permitia criação de snapshots e clones para o ZFS; OpenVZ: idêntico ao Virtuozzo, mas sob a licença GPL.
  • #16 Process Containers: projeto do Google – limitar e isolar conjunto de recursos (CPU, memória, disco, rede) de um conjunto de processo. Virou cgroups em 2007; LXC: primeiro esboço do conceito de containers. Usava cgroups e kernel namespaces; Warden: foi baseado no LXC, mas usava uma implementação própria para rodar como daemon e apresentar uma API; LMCTFY: iniciou como uma alternativa open-source ao projeto de containers do Google, possibilitando que aplicações em Linux criassem seus próprios containers.