$30 off During Our Annual Pro Sale. View Details »

Entendendo o ecossistema de containers

Entendendo o ecossistema de containers

Lucas Santos

March 25, 2021
Tweet

More Decks by Lucas Santos

Other Decks in Technology

Transcript

  1. Entendendo o Ecossistema
    de Containers
    muito além do Docker

    View Slide

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

    View Slide

  3. docker e kubernetes_

    View Slide

  4. kubernetes sem docker?

    View Slide

  5. o ecossistema de containers_

    View Slide

  6. 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

    View Slide

  7. runtimes mais famosos

    View Slide

  8. muita gente para pouco padrão_

    View Slide

  9. 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

    View Slide

  10. 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

    View Slide

  11. CRI? Shim? containerd? runc?

    View Slide

  12. 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

    View Slide

  13. Antes da separação

    View Slide

  14. depois da separação

    View Slide

  15. 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

    View Slide

  16. depois da separação

    View Slide

  17. atualmente

    View Slide

  18. conhecendo as
    ferramentas_

    View Slide

  19. 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

    View Slide

  20. 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

    View Slide

  21. o Docker hoje_
    como tudo realmente funciona

    View Slide

  22. diagrama geral

    View Slide

  23. um comando por baixo dos panos

    View Slide

  24. O ecossistema de containers é muito
    grande

    View Slide

  25. View Slide

  26. demo

    View Slide

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

    View Slide

  28. View Slide

  29. View Slide

  30. um Docker menos “bonitinho”

    View Slide

  31. pro código

    View Slide

  32. /khaosdoctor @_staticvoid
    lsantos.dev
    /khaosdoctor
    obrigado_

    View Slide

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

    View Slide