Linux contêineres na unha (The Developers Conference POA 2017)

Linux contêineres na unha (The Developers Conference POA 2017)

Palestra apresentada dia 11 de novembro de 2017 no The Developers conference de Porto Alegre. Mostramos um pouco do que é Docker, como que funcionar 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)

280fecb4f048de5ecf36bec281609ea4?s=128

Wellington F. Silva

November 11, 2017
Tweet

Transcript

  1. Linux Contêineres na unha

  2. Wellington F. Silva contato: @_wsilva nicks: wsilva, boina, tom, fisi

    roles: pai, tec. telecom, programador, sysadmin, instrutor, escritor, docker community leader
  3. Agenda • Que é Docker • O que são contêineres

    Linux • O que são Kernel Namespaces • O que são CGroups • O que são Rootfs • Demos
  4. Disclaimer 1 Apesar de acompanhar há quase 2 anos não

    sou especialista em Golang, fiz poucas coisas e por conta própria.
  5. Disclaimer 2 Palestras inspirada nas talks da Liz Rice (@lizrice)

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

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

    Security • Evangelista Go Lang • Biker
  8. O que é DOCKER?

  9. None
  10. None
  11. O que é DOCKER?

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

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

    Operacional.”
  14. Tipos de Virtualização

  15. Tipos de Virtualização • Full Virtualization

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

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

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

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

    Paravirtualization • OS Level Virtualization Docker
  20. Docker NÃO é VM

  21. Como Funciona?

  22. PROCESSOS + KERNEL NAMESPACES + CGROUPS + ROOTFS

  23. PROCESSOS Aqueles que matamos com kill -9

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

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

    ser listados (com ps) dentro do contêiner ou fora, no host
  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
  27. KERNEL NAMESPACES Tudo aquilo que o processo pode "ver"

  28. Kernel Namespaces • IPC - interprocess communication

  29. Kernel Namespaces • IPC - interprocess communication • PID -

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

    Processos • NET- rede
  31. Kernel Namespaces • IPC - interprocess communication • PID -

    Processos • NET- rede • UTS - Unix timesharing system, recursos do kernel
  32. Kernel Namespaces • IPC - interprocess communication • PID -

    Processos • NET- rede • UTS - Unix timesharing system, recursos do kernel • USER - usuários
  33. Kernel Namespaces • IPC - interprocess communication • PID -

    Processos • NET- rede • UTS - Unix timesharing system, recursos do kernel • USER - usuários • MNT - filesystem e pontos de montagem
  34. CGROUPS Tudo aquilo que o processo pode "usar"

  35. CGroups • CPU

  36. CGroups • CPU • Memória

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

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

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

    Interface de rede • Hardwares periféricos 
 (pen drives, cameras, etc)
  40. ROOTFS Aquilo que o processo vai rodar

  41. Rootfs • Filesystem base • Onde os arquivos serão montados

    • Em linhas gerais é o / (barra) do Linux empacotado
  42. –Linus Torvalds “Talk is cheap. Show me the code.”

  43. Demo

  44. + Sobre Docker • Curso Docker: 
 http://bit.ly/curso-docker • Telegram:

    
 http://t.me/dockerbr • Slacks:
 http://bit.ly/docker-slack
 http://dockr.ly/community • Meetup:
 http://bit.ly/meetup- docker-sp
  45. + Sobre Go • Tutoriais: 
 https://github.com/crgimenes/Go-Hands-On/
 https://tour.golang.org
 • Telegrams:

    
 http://t.me/go_br
 http://t.me/GopheliaCoding
 • Slack:
 https://invite.slack.golangbridge.org