Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Linux contêineres na unha (TDC Porto Alegre 2019)

Linux contêineres na unha (TDC Porto Alegre 2019)

Palestra apresentada no dia 20 de novembro de 2019 no The Developers Conference em Porto Alegre-RS. Mostramos um pouco do que são containers, histórico, diferenças dos tipos de virtualização e como que funciona o isolamento dos processos e os recursos utilizados para o tal. No final fizemos uma demonstração disponível em (https://github.com/wsilva/container-from-scratch-demo) montando contêineres usando Go lang isolando alguns namespaces e cgroups manualmente.

Wellington F. Silva

November 30, 2019
Tweet

More Decks by Wellington F. Silva

Other Decks in Technology

Transcript

  1. Linux Contêineres
    na Unha

    View Slide

  2. Wellington F. Silva
    contato:
    @_wsilva
    nicks:
    wsilva, boina, tom, fisi*
    roles:
    pai, tec. telecom,
    programador, sysadmin,
    instrutor, escritor, php zce,
    docker community leader,
    docker certified associate
    * deprecation in favor of Well

    View Slide

  3. Agenda
    • Disclaimer
    • O que são contêineres Linux
    • O que são Kernel Namespaces
    • O que são CGroups
    • O que são Rootfs
    • Demo

    View Slide

  4. Disclaimer
    Palestra inspirada nas talks da
    Liz Rice (@lizrice) e no artigo* de
    Julian Friedman (@doctor_julz)
    http://bit.ly/container-golang *

    View Slide

  5. Julian Friedman
    • Engenheiro líder do Garden
    (tecnologia de contêineres da
    Cloud Foundry's)
    • Trabalha para IBM
    • Defensor do Open Source

    View Slide

  6. Liz Rice
    • Especialista em segurança de
    contêineres na Aqua Security
    • Contribuidora Kubernetes
    • Evangelista Go Lang

    View Slide

  7. O que é DOCKER?

    View Slide

  8. O que é Container?

    View Slide

  9. “Ferramenta para
    virtualização no nível do
    Sistema Operacional.”

    View Slide

  10. –Wellington F. Silva
    “Ferramenta para
    virtualização no nível do
    Sistema Operacional.”

    View Slide

  11. Tipos de
    Virtualização

    View Slide

  12. Tipos de Virtualização
    • Full Virtualization

    View Slide

  13. Tipos de Virtualização
    • Full Virtualization
    • Partial Virtualization

    View Slide

  14. Tipos de Virtualização
    • Full Virtualization
    • Partial Virtualization
    • Paravirtualization

    View Slide

  15. Tipos de Virtualização
    • Full Virtualization
    • Partial Virtualization
    • Paravirtualization
    • OS Level Virtualization

    View Slide

  16. Tipos de Virtualização
    • Full Virtualization
    • Partial Virtualization
    • Paravirtualization
    • OS Level Virtualization
    (Docker, rkt, Garden, Guardian, containerD, cri-
    O)

    View Slide

  17. Container NÃO é VM

    View Slide

  18. Evolução

    View Slide

  19. U
    nix
    / C
    hroot BSD
    FreeBSD
    Jails
    / Solaris
    Zones
    O
    penVZ
    Parallels
    C
    groups
    Process
    C
    ontainers
    AIX
    / W
    pars
    LXC
    D
    ocker, rkt, cloud
    foundry,
    C
    ontainerD
    1982 2000 2005 2006 2007 2008 >= 2013

    View Slide

  20. Como Funciona?

    View Slide

  21. PROCESSOS
    +
    KERNEL NAMESPACES
    +
    CGROUPS
    +
    ROOTFS

    View Slide

  22. PROCESSOS

    View Slide

  23. PROCESSOS
    Aqueles que matamos com kill -9

    View Slide

  24. Processos
    • Processo Linux com ID atribuído (PID)

    View Slide

  25. Processos
    • Processo Linux com ID atribuído (PID)
    • Podem ser listados (com ps) dentro do
    contêiner ou fora (no host)

    View Slide

  26. Processos
    • Processo Linux com ID atribuído (PID)
    • Podem ser listados (com ps) dentro do
    contêiner ou fora, no host
    • Dentro do contêiner o PID=1, fora (no host) vai
    ter valor alto

    View Slide

  27. KERNEL
    NAMESPACES

    View Slide

  28. KERNEL
    NAMESPACES
    Tudo aquilo que o processo pode "ver"

    View Slide

  29. Kernel Namespaces
    • IPC - Interprocess communication

    View Slide

  30. Kernel Namespaces
    • IPC - Interprocess communication
    • PID - Processos

    View Slide

  31. Kernel Namespaces
    • IPC - Interprocess communication
    • PID - Processos
    • NET- Rede

    View Slide

  32. Kernel Namespaces
    • IPC - Interprocess communication
    • PID - Processos
    • NET- Rede
    • UTS - Unix timesharing system

    View Slide

  33. Kernel Namespaces
    • IPC - interprocess communication
    • PID - Processos
    • NET- rede
    • UTS - Unix timesharing system
    • USER - Usuários e grupos

    View Slide

  34. Kernel Namespaces
    • IPC - interprocess communication
    • PID - Processos
    • NET- rede
    • UTS - Unix timesharing system
    • USER - Usuários e grupos
    • MNT - Pontos de montagem

    View Slide

  35. CGROUPS

    View Slide

  36. CGROUPS
    Tudo aquilo que o processo pode "usar"

    View Slide

  37. CGroups
    • CPU

    View Slide

  38. CGroups
    • CPU
    • Memória

    View Slide

  39. CGroups
    • CPU
    • Memória
    • I/O em disco

    View Slide

  40. CGroups
    • CPU
    • Memória
    • I/O em disco
    • Interface de rede

    View Slide

  41. CGroups
    • CPU
    • Memória
    • I/O em disco
    • Interface de rede
    • Hardwares periféricos
    (pen drives, cameras, etc)

    View Slide

  42. ROOTFS
    Onde o processo vai rodar

    View Slide

  43. Rootfs
    • Filesystem é uma hierarquia de diretórios

    View Slide

  44. Rootfs
    • Filesystem é uma hierarquia de diretórios
    • Rootfs é o filesystem base onde os demais
    sistemas de arquivos são montados

    View Slide

  45. Rootfs
    • Filesystem é uma hierarquia de diretórios
    • Rootfs é o filesystem base onde os demais
    sistemas de arquivos são montados
    • Em linhas gerais é o / (barra) de uma
    distribuição Linux

    View Slide

  46. Resumo
    • Processo
    (é o que roda a aplicação)
    • CGroups e Namespaces
    (como o processo vai rodar)
    • Rootfs
    (onde o processo vai rodar)

    View Slide

  47. –Linus Torvalds
    “Talk is cheap. Show me
    the code.”

    View Slide

  48. Demo
    https://github.com/wsilva/container-from-scratch-demo

    View Slide

  49. Valeu
    =)
    Slides em
    https://speakerdeck.com/wsilva/ *

    View Slide