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 full-size 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 full-size 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 full-size 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 full-size 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 full-size slide

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

    View full-size slide

  7. O que é DOCKER?

    View full-size slide

  8. O que é Container?

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  11. Tipos de
    Virtualização

    View full-size slide

  12. Tipos de Virtualização
    • Full Virtualization

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  17. Container NÃO é VM

    View full-size slide

  18. 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 full-size slide

  19. Como Funciona?

    View full-size slide

  20. PROCESSOS
    +
    KERNEL NAMESPACES
    +
    CGROUPS
    +
    ROOTFS

    View full-size slide

  21. PROCESSOS
    Aqueles que matamos com kill -9

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  24. 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 full-size slide

  25. KERNEL
    NAMESPACES

    View full-size slide

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

    View full-size slide

  27. Kernel Namespaces
    • IPC - Interprocess communication

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  34. CGroups
    • CPU

    View full-size slide

  35. CGroups
    • CPU
    • Memória

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  39. ROOTFS
    Onde o processo vai rodar

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  42. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide