Slide 1

Slide 1 text

Entendendo o Ecossistema de Containers muito além do Docker

Slide 2

Slide 2 text

blog.lsantos.dev quem sou eu_ cloud advocate_ [email protected]

Slide 3

Slide 3 text

docker e kubernetes_

Slide 4

Slide 4 text

kubernetes sem docker?

Slide 5

Slide 5 text

o ecossistema de containers_

Slide 6

Slide 6 text

runtimes de containers_ porque não só de Docker vive o homem - O Docker é o que chamamos de um runtime de containers - Um runtime é o motor principal de execução dos containers - O Docker começou como um runtime completo - Hoje o Docker implementa o containerd

Slide 7

Slide 7 text

runtimes mais famosos

Slide 8

Slide 8 text

muita gente para pouco padrão_

Slide 9

Slide 9 text

open container initiative - A OCI foi criada pela junção de várias empresas líderes no mercado de containers em 2015 - Hoje funciona nos moldes da CNCF e da Linux Foundation - a OCI tem o objetivo de criar um padrão de mercado seguido por todas as empresas que trabalham com containers - A OCI tem duas especificações, uma para imagens (chamada image-spec) e outra para os runtimes (runtime-spec) - O runc é uma implementação de referência para a runtime-spec

Slide 10

Slide 10 text

depois da OCI_ - Toda a imagem “OCI compliant” pode ser executada por qualquer runtime também “OCI compliant” - Outras empresas tem um norte para poder seguir quando desenvolvem seus próprios runtimes - O ecossistema de containers fica mais variado, mas ao mesmo tempo muito coeso e definido

Slide 11

Slide 11 text

CRI? Shim? containerd? runc?

Slide 12

Slide 12 text

kubernetes e containers como o kuberentes lida com containers - O Kubernetes suporta, por padrão mais de um runtime de execução (Docker e RKT) - Trocar de runtime requeria a recompilação total do kubelet - Solução: abstrair a interface de containers

Slide 13

Slide 13 text

Antes da separação

Slide 14

Slide 14 text

depois da separação

Slide 15

Slide 15 text

dockershim o causador de todos os problemas - Shims são modificadores de chamada que atuam como proxies - O Docker não possuía um CRI pois ele era feito para usuários humanos - O time do Kubernetes teve que criar o próprio CRI para poder utilizar somente a parte programática do docker - Manter o shim era um trabalho complicado

Slide 16

Slide 16 text

depois da separação

Slide 17

Slide 17 text

atualmente

Slide 18

Slide 18 text

conhecendo as ferramentas_

Slide 19

Slide 19 text

o mais famoso - Criado pela OCI como um runtime de alto nível - Também é dito como sendo um gerenciador do runc - Gerencia imagens - Inicia/para containers através de comandos para o runc - Faz parte do Docker - Criado para ser manipulado via APIs e código

Slide 20

Slide 20 text

quem faz todo o trabalho - Wrapper ao redor da libcontainer - A libcontainers é a interface a nível de SO para criar containers - Especificação de referência para um runtime OCI - Utilizado pela maioria dos runtimes baseados em Linux

Slide 21

Slide 21 text

o Docker hoje_ como tudo realmente funciona

Slide 22

Slide 22 text

diagrama geral

Slide 23

Slide 23 text

um comando por baixo dos panos

Slide 24

Slide 24 text

O ecossistema de containers é muito grande

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

demo

Slide 27

Slide 27 text

demo o que vamos precisar - VM linux - Golang - containerd - runc

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

um Docker menos “bonitinho”

Slide 31

Slide 31 text

pro código

Slide 32

Slide 32 text

/khaosdoctor @_staticvoid lsantos.dev /khaosdoctor obrigado_

Slide 33

Slide 33 text

refs_ - http://bit.ly/lsantos-containers - http://bit.ly/lsantos-containerd - http://bit.ly/fcc-docker - http://bit.ly/ecossistema-slides