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

Linux contêineres na unha (Meetup Docker SP #25)

Linux contêineres na unha (Meetup Docker SP #25)

Palestra apresentada no dia 25 de abril de 2019 no 25º meetup docker em São Paulo-SP. 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

April 25, 2019
Tweet

More Decks by Wellington F. Silva

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. Disclaimer Palestra inspirada nas talks da Liz Rice (@lizrice) e

    no artigo* de Julian Friedman (@doctor_julz) http://bit.ly/container-golang *
  4. Julian Friedman • Engenheiro líder do Garden (tecnologia de contêineres

    da Cloud Foundry's) • Trabalha para IBM • Defensor do Open Source
  5. Liz Rice • Especialista em segurança de contêineres na Aqua

    Security • Contribuidora Kubernetes • Evangelista Go Lang
  6. Tipos de Virtualização • Full Virtualization • Partial Virtualization •

    Paravirtualization • OS Level Virtualization 
 (Docker, rkt, Garden, Guardian, containerD, cri- O)
  7. 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
  8. Processos • Processo Linux com ID atribuído (PID) • Podem

    ser listados (com ps) dentro do contêiner ou fora (no host)
  9. 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
  10. Kernel Namespaces • IPC - Interprocess communication • PID -

    Processos • NET- Rede • UTS - Unix timesharing system
  11. Kernel Namespaces • IPC - interprocess communication • PID -

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

    Processos • NET- rede • UTS - Unix timesharing system • USER - Usuários e grupos • MNT - Pontos de montagem
  13. CGroups • CPU • Memória • I/O em disco •

    Interface de rede • Hardwares periféricos 
 (pen drives, cameras, etc)
  14. Rootfs • Filesystem é uma hierarquia de diretórios • Rootfs

    é o filesystem base onde os demais sistemas de arquivos são montados
  15. 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
  16. Resumo • Processo 
 (é o que roda a aplicação)

    • CGroups e Namespaces 
 (como o processo vai rodar) • Rootfs 
 (onde o processo vai rodar)