Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

O que é o Docker afinal? (Workshop Novatec)

72 views

Published on

Workshop de introdução apresentado na Novatec em 06/10/2016 mostrando na essência o que são contêineres (Linux e Windows), da onde vem o Docker, o que são LXC e demos montando contêineres manualmente, com LXC e com Docker além de alguns exemplos básicos de utilização do Docker.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

O que é o Docker afinal? (Workshop Novatec)

  1. 1. AFINAL, O QUE É DOCKER? WORKSHOP
  2. 2. WHO AM I? WELLINGTON F. SILVA ▸ AKA: wsilva | boina | tom | fisi ▸ Pai ▸ Técnico Telecom ▸ Programador ▸ Instrutor ▸ Devops ▸ Escritor
  3. 3. AGENDA ▸ Virtualização ▸ Histórico ▸ Container from scratch ▸ LXC - Linux Containers ▸ Virtual Machine x Contêineres ▸ Evolução ▸ Arquitetura ▸ OSX x Windows x Linux ▸ Imagens ▸ Hands On (comandos e exemplos)
  4. 4. O QUE É DOCKER?
  5. 5. FERRAMENTA PARA VIRTUALIZAÇÃO NO NÍVEL DO SISTEMAS OPERACIONAL wsilva O QUE É O DOCKER?
  6. 6. TIPOS DE VIRTUALIZAÇÃO
  7. 7. O QUE É O DOCKER? TIPOS DE VIRTUALIZAÇÃO ▸ Full Virtualization
  8. 8. O QUE É O DOCKER? TIPOS DE VIRTUALIZAÇÃO ▸ Full Virtualization ▸ Partial Virtualization
  9. 9. O QUE É O DOCKER? TIPOS DE VIRTUALIZAÇÃO ▸ Full Virtualization ▸ Partial Virtualization ▸ Paravirtualization
  10. 10. O QUE É O DOCKER? TIPOS DE VIRTUALIZAÇÃO ▸ Full Virtualization ▸ Partial Virtualization ▸ Paravirtualization ▸ OS Level Virtualization
  11. 11. O QUE É O DOCKER? TIPOS DE VIRTUALIZAÇÃO ▸ Full Virtualization ▸ Partial Virtualization ▸ Paravirtualization ▸ OS Level Virtualization <= DOCKER
  12. 12. HISTÓRICO
  13. 13. HISTÓRICO HISTÓRIA ▸ 21/03/2013 1ª Demo
  14. 14. HISTÓRICO HISTÓRIA ▸ 21/03/2013 1ª Demo ▸ Opensource(Apache License 2.0)
  15. 15. HISTÓRICO HISTÓRIA ▸ 21/03/2013 1ª Demo ▸ Opensource(Apache License 2.0) ▸ Base para dotCloud
  16. 16. HISTÓRICO HISTÓRIA ▸ 21/03/2013 1ª Demo ▸ Opensource(Apache License 2.0) ▸ Base para dotCloud ▸ 23/07/2013 - Ben Golub, CEO da Gluster e da Plaxo se une ao time
  17. 17. HISTÓRICO HISTÓRIA ▸ 21/03/2013 1ª Demo ▸ Opensource(Apache License 2.0) ▸ Base para dotCloud ▸ 23/07/2013 - Ben Golub, CEO da Gluster e da Plaxo se une ao time ▸ 22/01/2014 2º aporte de US$ 15 mi
  18. 18. HISTÓRICO HISTÓRIA ▸ 23/07/2014 Compra da Orchard (FIG)
  19. 19. HISTÓRICO HISTÓRIA ▸ 23/07/2014 Compra da Orchard (FIG) ▸ 16/09/2014 3º aporte US$ 40 mi
  20. 20. HISTÓRICO HISTÓRIA ▸ 23/07/2014 Compra da Orchard (FIG) ▸ 16/09/2014 3º aporte US$ 40 mi ▸ 15/10/2014 Microsoft anuncia Docker no Windows 2016 sever
  21. 21. HISTÓRICO HISTÓRIA ▸ 23/07/2014 Compra da Orchard (FIG) ▸ 16/09/2014 3º aporte US$ 40 mi ▸ 15/10/2014 Microsoft anuncia Docker no Windows 2016 sever ▸ 14/04/2015 4º aporte US$ 95 mi
  22. 22. HISTÓRICO HISTÓRIA ▸ 23/07/2014 Compra da Orchard (FIG) ▸ 16/09/2014 3º aporte US$ 40 mi ▸ 15/10/2014 Microsoft anuncia Docker no Windows 2016 sever ▸ 14/04/2015 4º aporte US$ 95 mi ▸ 22/06/2015 Open Container Initiative
  23. 23. COMO FUNCIONA?
  24. 24. PROCESSOS + KERNEL NAMESPACES + CGROUPS
  25. 25. PROCESSOS PID=1
  26. 26. KERNEL NAMESPACES (O QUE O PROCESSO PODE VER)
  27. 27. COMO FUNCIONA? KERNEL NAMESPACES ▸ IPC - interprocess communication
  28. 28. COMO FUNCIONA? KERNEL NAMESPACES ▸ IPC - interprocess communication ▸ PID - Processos
  29. 29. COMO FUNCIONA? KERNEL NAMESPACES ▸ IPC - interprocess communication ▸ PID - Processos ▸ NET- rede
  30. 30. COMO FUNCIONA? KERNEL NAMESPACES ▸ IPC - interprocess communication ▸ PID - Processos ▸ NET- rede ▸ UTS - Unix timesharing system, recursos do kernel
  31. 31. COMO FUNCIONA? KERNEL NAMESPACES ▸ IPC - interprocess communication ▸ PID - Processos ▸ NET- rede ▸ UTS - Unix timesharing system, recursos do kernel ▸ USER - usuários
  32. 32. COMO FUNCIONA? 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
  33. 33. CGROUPS (O QUE O PROCESSO PODE USAR)
  34. 34. COMO FUNCIONA? CGROUPS ▸ CPU
  35. 35. COMO FUNCIONA? CGROUPS ▸ CPU ▸ Memória
  36. 36. COMO FUNCIONA? CGROUPS ▸ CPU ▸ Memória ▸ I/O em disco
  37. 37. COMO FUNCIONA? CGROUPS ▸ CPU ▸ Memória ▸ I/O em disco ▸ Interface de rede
  38. 38. COMO FUNCIONA? CGROUPS ▸ CPU ▸ Memória ▸ I/O em disco ▸ Interface de rede ▸ Hardwares periféricos (pen drive, camera, etc)
  39. 39. DEMOS
  40. 40. https://github.com/wsilva/container-from-scratch-demo
  41. 41. LXC - Linux Containers
  42. 42. VMS X CONTÊINERES
  43. 43. SERVIDORSERVIDOR HOST OSHOST OS CONTAINER ENGINEHYPERVISOR BINS/LIBSGUEST OS BINS/LIBSGUEST OS BINS/LIBS BINS/LIBS APP APP APP APP VM VM Container Container VMs x Contêineres
  44. 44. SERVIDORSERVIDOR DEBIAN LINUXDEBIAN LINUX DOCKERVIRTUALBOX BINS/LIBSCENTOS LINUX BINS/LIBSUBUNTU LINUX BINS/LIBS BINS/LIBS NGINX MYSQL NGINX MYSQL VM VM Container Container VMs x Contêineres
  45. 45. EVOLUÇÃO
  46. 46. EVOLUÇÃO EVOLUÇÃO ▸ Libvirt / LXC ▸ Libcontainer ▸ runC ▸ containerd
  47. 47. ARQUITETURA
  48. 48. DOCKER HOST Imagens DAEMON Volumes Containers KITEMATIC DOCKER CLIENT DOCKER PULL DOCKER PUSH DOCKER BUILD DOCKER RUN DOCKER PS DOCKER IMAGES DOCKER REGISTRY (HUB) HTTP CURL WGET
  49. 49. WINDOWS VS OSX VS LINUX
  50. 50. LINUX (DOCKER HOST)WINDOWSOSX VM LINUX (DOCKER HOST) DOCKER CLIENTDOCKER CLIENT VM LINUX (DOCKER HOST) DOCKER CLIENT DOCKER DAEMONDOCKER DAEMONDOCKER DAEMON CONTÊINERES LINUX
  51. 51. WINDOWS (DOCKER HOST) LINUXOSX VM WINDOWS (DOCKER HOST) DOCKER CLIENTDOCKER CLIENT DOCKER CLIENT DOCKER DAEMON DOCKER DAEMONDOCKER DAEMON CONTÊINERES WINDOWS VM WINDOWS (DOCKER HOST)
  52. 52. IMAGENS
  53. 53. COMANDOS DE APOIO
  54. 54. COMANDOS DE APOIO HELP $ docker -h $ docker --help $ docker help
  55. 55. COMANDOS DE APOIO VERSÃO $ docker -v $ docker --version $ docker version
  56. 56. COMANDOS DE APOIO INFORMAÇÕES DO SISTEMA $ docker info
  57. 57. PRIMEIROS CONTÊINERES
  58. 58. HELLO WORLD $ docker run hello-world
  59. 59. COWSAY $ docker run hello-world
 $ docker run docker/ whalesay cowsay "Olaaaa"
  60. 60. TRABALHANDO COM IMAGENS
  61. 61. TRABALHANDO COM IMAGENS LISTANDO IMAGENS $ docker images
  62. 62. TRABALHANDO COM IMAGENS BUSCANDO IMAGENS $ docker search apache
  63. 63. TRABALHANDO COM IMAGENS BAIXANDO IMAGENS $ docker pull nginx
  64. 64. TRABALHANDO COM IMAGENS CRIANDO IMAGEM A PARTIR DE CONTÊINER $ docker commit container_name ou
 $ docker commit 1005692cf261
  65. 65. TRABALHANDO COM IMAGENS CRIANDO IMAGEM A PARTIR DE DOCKERFILE $ docker build --tag wfsilva/nginx:dockerfile .
 
 Obs: o ponto (.) é o path onde está o Dockerfile
  66. 66. TRABALHANDO COM IMAGENS EXEMPLO DE DOCKERFILE FROM nginx:latest
 MANTAINER wsilva RUN echo "Ola" | tee /usr/ share/nginx/html/demo.html
  67. 67. TRABALHANDO COM IMAGENS TAG DE IMAGENS $ docker tag nginx:latest wfsilva/nginx:latest ou $ docker tag c54a2cc56cbb wfsilva/nginx
  68. 68. TRABALHANDO COM IMAGENS ENVIANDO IMAGENS $ docker push wfsilva/ nginx
  69. 69. TRABALHANDO COM IMAGENS IMAGENS EM ARQUIVOS $ docker save hello-world --output hello-world.tar
 $ docker load --input hello-world.tar
  70. 70. TRABALHANDO COM IMAGENS CAMADAS DE UMA IMAGEM $ docker history hello- world
  71. 71. TRABALHANDO COM IMAGENS REMOVENDO IMAGENS $ docker rmi hello-world ou
 $ docker rmi c54a2cc56cbb
  72. 72. RODANDO CONTÊINERES
  73. 73. RODANDO CONTÊINERES COMO RODAR $ docker run [opções] nome-ou-id-da-imagem [comandos e ou argumentos]
  74. 74. LISTANDO CONTÊINERES
  75. 75. LISTANDO CONTÊINERES COMANDO MAIS UTILIZADO $ docker ps
 ou
 $ docker ps -a
 para listar inclusive os parados
  76. 76. REMOVENDO CONTÊINERES
  77. 77. REMOVENDO CONTÊINERES REMOVENDO CONTÊINERES $ docker rm
 nome-ou-id-do-contêiner
  78. 78. MANEIRAS DE RODAR
  79. 79. MANEIRAS DE RODAR DETACHED $ docker run --detach debian sleep infinity $ docker run -d debian sleep infinity
  80. 80. MANEIRAS DE RODAR INTERATIVA COM TERMINAL $ docker run --interactive --tty debian /bin/bash
  81. 81. MANEIRAS DE RODAR INTERATIVA COM TERMINAL $ docker run -i -t 
 debian /bin/bash
  82. 82. MANEIRAS DE RODAR INTERATIVA COM TERMINAL $ docker run -i -t 
 debian /bin/bash $ docker run -it 
 debian /bin/bash
  83. 83. MANEIRAS DE RODAR INTERATIVA (UNIX PIPELINE) $ echo "Ola" | docker run -i debian cat
  84. 84. PORTAS
  85. 85. PORTAS EXPONDO PORTAS $ docker run -d 
 --publish 80 
 nginx
 ou
 $ docker run -d 
 —publish-all 
 nginx
  86. 86. PORTAS MAPEANDO PORTAS $ docker run -d 
 --publish 8080:80 
 tutum/hello-world

  87. 87. PORTAS LISTANDO AS PORTAS DE UM CONTÊINER $ docker port container- name
  88. 88. VOLUMES
  89. 89. VOLUMES CRIANDO VOLUME $ docker volume create 
 --name dados
  90. 90. VOLUMES LISTANDO VOLUMES $ docker volume ls
  91. 91. VOLUMES USANDO UM VOLUME CRIADO $ docker run -it 
 --volume dados:/dados 
 alpine 
 /bin/sh

  92. 92. VOLUMES MAPEANDO UMA PASTA DO HOST $ docker run -it 
 --volume /home/tom:/tom 
 alpine 
 /bin/sh

  93. 93. VOLUMES REMOVENDO VOLUME $ docker volume rm dados
  94. 94. ESTADOS DE UM CONTÊINER
  95. 95. CREATE STOPPED RUNNING PAUSED CREATE DESTROY DELETED START docker run docker create docker
 start docker rm RESTART docker kill docker
 stop KILL DIE DIE STOP DIE START RESTART PAUSE UNPAUSE DIE OOM docker 
 pause docker
 restart docker unpause exit killed yes no
  96. 96. EXEMPLOS
  97. 97. EXEMPLOS PHP BUILT IN WEB SERVER $ docker run -d --publish 80:80 --volume "$(pwd):/app" --workdir /app php:7-cli php -S 0.0.0.0:80
  98. 98. EXEMPLOS NGINX SERVER docker run -d 
 -p 80:80 
 --volume "$(pwd):/usr/ share/nginx/html" nginx
  99. 99. EXEMPLOS COMANDOS "DOCKERIZADOS" $ docker run -it 
 --volume "$(pwd):/app" 
 --volume "$HOME/.ssh:/ root/.ssh" 
 composer/composer 
 install
  100. 100. EXEMPLOS APLICAÇÕES GUI ▸ Navegador Tor ▸ Eyes ▸ Spotify ▸ Sugestão: https://hub.docker.com/u/jess/
  101. 101. EXEMPLOS DOCKER CRAFT docker run -d -p 25565:25565 -v /var/run/docker.sock:/var/run/ docker.sock wfsilva/dockercraft
  102. 102. TO BE CONTINUED… MAIS SOBRE DOCKER
  103. 103. TO BE CONTINUED… PRÓXIMOS PASSOS ▸ docker-compose ▸ docker-machine ▸ docker-swarm ▸ kubernetes ▸ monitoring
  104. 104. TO BE CONTINUED… MAIS SOBRE DOCKER ▸ https://docs.docker.com ▸ https://telegram.me/dockerbr ▸ http://docker-br.herokuapp.com ▸ http://bit.ly/curso-docker

×