O que é o Docker afinal? (Workshop Novatec)

111
AFINAL, O QUE É DOCKER? WORKSHOP

Transcript of O que é o Docker afinal? (Workshop Novatec)

Page 1: O que é o Docker afinal? (Workshop Novatec)

AFINAL, O QUE É DOCKER?WORKSHOP

Page 2: O que é o Docker afinal? (Workshop Novatec)

WHO AM I?

WELLINGTON F. SILVA

▸ AKA: wsilva | boina | tom | fisi

▸ Pai

▸ Técnico Telecom

▸ Programador

▸ Instrutor

▸ Devops

▸ Escritor

Page 3: O que é o Docker afinal? (Workshop Novatec)

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)

Page 4: O que é o Docker afinal? (Workshop Novatec)

O QUE É DOCKER?

Page 5: O que é o Docker afinal? (Workshop Novatec)
Page 6: O que é o Docker afinal? (Workshop Novatec)
Page 7: O que é o Docker afinal? (Workshop Novatec)

FERRAMENTA PARA VIRTUALIZAÇÃO NO NÍVEL DO SISTEMAS OPERACIONAL

wsilva

O QUE É O DOCKER?

Page 8: O que é o Docker afinal? (Workshop Novatec)

TIPOS DE VIRTUALIZAÇÃO

Page 9: O que é o Docker afinal? (Workshop Novatec)

O QUE É O DOCKER?

TIPOS DE VIRTUALIZAÇÃO

▸ Full Virtualization

Page 10: O que é o Docker afinal? (Workshop Novatec)

O QUE É O DOCKER?

TIPOS DE VIRTUALIZAÇÃO

▸ Full Virtualization

▸ Partial Virtualization

Page 11: O que é o Docker afinal? (Workshop Novatec)

O QUE É O DOCKER?

TIPOS DE VIRTUALIZAÇÃO

▸ Full Virtualization

▸ Partial Virtualization

▸ Paravirtualization

Page 12: O que é o Docker afinal? (Workshop Novatec)

O QUE É O DOCKER?

TIPOS DE VIRTUALIZAÇÃO

▸ Full Virtualization

▸ Partial Virtualization

▸ Paravirtualization

▸ OS Level Virtualization

Page 13: O que é o Docker afinal? (Workshop Novatec)

O QUE É O DOCKER?

TIPOS DE VIRTUALIZAÇÃO

▸ Full Virtualization

▸ Partial Virtualization

▸ Paravirtualization

▸ OS Level Virtualization <= DOCKER

Page 14: O que é o Docker afinal? (Workshop Novatec)
Page 15: O que é o Docker afinal? (Workshop Novatec)

HISTÓRICO

Page 16: O que é o Docker afinal? (Workshop Novatec)

HISTÓRICO

HISTÓRIA

▸ 21/03/2013 1ª Demo

Page 17: O que é o Docker afinal? (Workshop Novatec)

HISTÓRICO

HISTÓRIA

▸ 21/03/2013 1ª Demo

▸ Opensource(Apache License 2.0)

Page 18: O que é o Docker afinal? (Workshop Novatec)

HISTÓRICO

HISTÓRIA

▸ 21/03/2013 1ª Demo

▸ Opensource(Apache License 2.0)

▸ Base para dotCloud

Page 19: O que é o Docker afinal? (Workshop Novatec)

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

Page 20: O que é o Docker afinal? (Workshop Novatec)

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

Page 21: O que é o Docker afinal? (Workshop Novatec)

HISTÓRICO

HISTÓRIA

▸ 23/07/2014 Compra da Orchard (FIG)

Page 22: O que é o Docker afinal? (Workshop Novatec)

HISTÓRICO

HISTÓRIA

▸ 23/07/2014 Compra da Orchard (FIG)

▸ 16/09/2014 3º aporte US$ 40 mi

Page 23: O que é o Docker afinal? (Workshop Novatec)

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

Page 24: O que é o Docker afinal? (Workshop Novatec)

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

Page 25: O que é o Docker afinal? (Workshop Novatec)

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

Page 26: O que é o Docker afinal? (Workshop Novatec)

COMO FUNCIONA?

Page 27: O que é o Docker afinal? (Workshop Novatec)

PROCESSOS +

KERNEL NAMESPACES +

CGROUPS

Page 28: O que é o Docker afinal? (Workshop Novatec)

PROCESSOS PID=1

Page 29: O que é o Docker afinal? (Workshop Novatec)

KERNEL NAMESPACES (O QUE O PROCESSO PODE VER)

Page 30: O que é o Docker afinal? (Workshop Novatec)

COMO FUNCIONA?

KERNEL NAMESPACES

▸ IPC - interprocess communication

Page 31: O que é o Docker afinal? (Workshop Novatec)

COMO FUNCIONA?

KERNEL NAMESPACES

▸ IPC - interprocess communication

▸ PID - Processos

Page 32: O que é o Docker afinal? (Workshop Novatec)

COMO FUNCIONA?

KERNEL NAMESPACES

▸ IPC - interprocess communication

▸ PID - Processos

▸ NET- rede

Page 33: O que é o Docker afinal? (Workshop Novatec)

COMO FUNCIONA?

KERNEL NAMESPACES

▸ IPC - interprocess communication

▸ PID - Processos

▸ NET- rede

▸ UTS - Unix timesharing system, recursos do kernel

Page 34: O que é o Docker afinal? (Workshop Novatec)

COMO FUNCIONA?

KERNEL NAMESPACES

▸ IPC - interprocess communication

▸ PID - Processos

▸ NET- rede

▸ UTS - Unix timesharing system, recursos do kernel

▸ USER - usuários

Page 35: O que é o Docker afinal? (Workshop Novatec)

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

Page 36: O que é o Docker afinal? (Workshop Novatec)

CGROUPS (O QUE O PROCESSO PODE USAR)

Page 37: O que é o Docker afinal? (Workshop Novatec)

COMO FUNCIONA?

CGROUPS

▸ CPU

Page 38: O que é o Docker afinal? (Workshop Novatec)

COMO FUNCIONA?

CGROUPS

▸ CPU

▸ Memória

Page 39: O que é o Docker afinal? (Workshop Novatec)

COMO FUNCIONA?

CGROUPS

▸ CPU

▸ Memória

▸ I/O em disco

Page 40: O que é o Docker afinal? (Workshop Novatec)

COMO FUNCIONA?

CGROUPS

▸ CPU

▸ Memória

▸ I/O em disco

▸ Interface de rede

Page 41: O que é o Docker afinal? (Workshop Novatec)

COMO FUNCIONA?

CGROUPS

▸ CPU

▸ Memória

▸ I/O em disco

▸ Interface de rede

▸ Hardwares periféricos (pen drive, camera, etc)

Page 42: O que é o Docker afinal? (Workshop Novatec)

DEMOS

Page 43: O que é o Docker afinal? (Workshop Novatec)

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

Page 44: O que é o Docker afinal? (Workshop Novatec)

LXC - Linux Containers

Page 45: O que é o Docker afinal? (Workshop Novatec)

VMS X CONTÊINERES

Page 46: O que é o Docker afinal? (Workshop Novatec)

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

Page 47: O que é o Docker afinal? (Workshop Novatec)

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

Page 48: O que é o Docker afinal? (Workshop Novatec)

EVOLUÇÃO

Page 49: O que é o Docker afinal? (Workshop Novatec)

EVOLUÇÃO

EVOLUÇÃO

▸ Libvirt / LXC

▸ Libcontainer

▸ runC

▸ containerd

Page 50: O que é o Docker afinal? (Workshop Novatec)

ARQUITETURA

Page 51: O que é o Docker afinal? (Workshop Novatec)

DOCKER HOST

Imagens

DAEMON

Volumes

Containers

KITEMATIC

DOCKER CLIENT

DOCKER PULL DOCKER PUSH DOCKER BUILD DOCKER RUN DOCKER PS

DOCKER IMAGES

DOCKER REGISTRY (HUB)

HTTPCURL WGET

Page 52: O que é o Docker afinal? (Workshop Novatec)

WINDOWS VS OSX VS LINUX

Page 53: O que é o Docker afinal? (Workshop Novatec)

LINUX (DOCKER HOST)WINDOWSOSX

VM LINUX (DOCKER HOST)

DOCKER CLIENTDOCKER CLIENT

VM LINUX (DOCKER HOST)

DOCKER CLIENT

DOCKER DAEMONDOCKER DAEMONDOCKER DAEMON

CONTÊINERES LINUX

Page 54: O que é o Docker afinal? (Workshop Novatec)

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)

Page 55: O que é o Docker afinal? (Workshop Novatec)

IMAGENS

Page 56: O que é o Docker afinal? (Workshop Novatec)
Page 57: O que é o Docker afinal? (Workshop Novatec)
Page 58: O que é o Docker afinal? (Workshop Novatec)
Page 59: O que é o Docker afinal? (Workshop Novatec)
Page 60: O que é o Docker afinal? (Workshop Novatec)

COMANDOS DE APOIO

Page 61: O que é o Docker afinal? (Workshop Novatec)

COMANDOS DE APOIO

HELP

$ docker -h$ docker --help$ docker help

Page 62: O que é o Docker afinal? (Workshop Novatec)

COMANDOS DE APOIO

VERSÃO

$ docker -v$ docker --version$ docker version

Page 63: O que é o Docker afinal? (Workshop Novatec)

COMANDOS DE APOIO

INFORMAÇÕES DO SISTEMA

$ docker info

Page 64: O que é o Docker afinal? (Workshop Novatec)

PRIMEIROS CONTÊINERES

Page 65: O que é o Docker afinal? (Workshop Novatec)

HELLO WORLD

$ docker run hello-world

Page 66: O que é o Docker afinal? (Workshop Novatec)

COWSAY

$ docker run hello-world $ docker run docker/whalesay cowsay "Olaaaa"

Page 67: O que é o Docker afinal? (Workshop Novatec)

TRABALHANDO COM IMAGENS

Page 68: O que é o Docker afinal? (Workshop Novatec)

TRABALHANDO COM IMAGENS

LISTANDO IMAGENS

$ docker images

Page 69: O que é o Docker afinal? (Workshop Novatec)

TRABALHANDO COM IMAGENS

BUSCANDO IMAGENS

$ docker search apache

Page 70: O que é o Docker afinal? (Workshop Novatec)

TRABALHANDO COM IMAGENS

BAIXANDO IMAGENS

$ docker pull nginx

Page 71: O que é o Docker afinal? (Workshop Novatec)

TRABALHANDO COM IMAGENS

CRIANDO IMAGEM A PARTIR DE CONTÊINER

$ docker commit container_nameou $ docker commit 1005692cf261

Page 72: O que é o Docker afinal? (Workshop Novatec)

TRABALHANDO COM IMAGENS

CRIANDO IMAGEM A PARTIR DE DOCKERFILE

$ docker build --tag wfsilva/nginx:dockerfile . Obs: o ponto (.) é o path onde está o Dockerfile

Page 73: O que é o Docker afinal? (Workshop Novatec)

TRABALHANDO COM IMAGENS

EXEMPLO DE DOCKERFILE

FROM nginx:latest MANTAINER wsilvaRUN echo "Ola" | tee /usr/share/nginx/html/demo.html

Page 74: O que é o Docker afinal? (Workshop Novatec)

TRABALHANDO COM IMAGENS

TAG DE IMAGENS

$ docker tag nginx:latest wfsilva/nginx:latestou$ docker tag c54a2cc56cbb wfsilva/nginx

Page 75: O que é o Docker afinal? (Workshop Novatec)

TRABALHANDO COM IMAGENS

ENVIANDO IMAGENS

$ docker push wfsilva/nginx

Page 76: O que é o Docker afinal? (Workshop Novatec)

TRABALHANDO COM IMAGENS

IMAGENS EM ARQUIVOS

$ docker save hello-world --output hello-world.tar $ docker load --input hello-world.tar

Page 77: O que é o Docker afinal? (Workshop Novatec)

TRABALHANDO COM IMAGENS

CAMADAS DE UMA IMAGEM

$ docker history hello-world

Page 78: O que é o Docker afinal? (Workshop Novatec)

TRABALHANDO COM IMAGENS

REMOVENDO IMAGENS

$ docker rmi hello-worldou $ docker rmi c54a2cc56cbb

Page 79: O que é o Docker afinal? (Workshop Novatec)

RODANDO CONTÊINERES

Page 80: O que é o Docker afinal? (Workshop Novatec)

RODANDO CONTÊINERES

COMO RODAR

$ docker run [opções] nome-ou-id-da-imagem [comandos e ou argumentos]

Page 81: O que é o Docker afinal? (Workshop Novatec)

LISTANDO CONTÊINERES

Page 82: O que é o Docker afinal? (Workshop Novatec)

LISTANDO CONTÊINERES

COMANDO MAIS UTILIZADO

$ docker ps ou $ docker ps -a para listar inclusive os parados

Page 83: O que é o Docker afinal? (Workshop Novatec)

REMOVENDO CONTÊINERES

Page 84: O que é o Docker afinal? (Workshop Novatec)

REMOVENDO CONTÊINERES

REMOVENDO CONTÊINERES

$ docker rm nome-ou-id-do-contêiner

Page 85: O que é o Docker afinal? (Workshop Novatec)

MANEIRAS DE RODAR

Page 86: O que é o Docker afinal? (Workshop Novatec)

MANEIRAS DE RODAR

DETACHED

$ docker run --detach \ debian sleep infinity

$ docker run -d debian \ sleep infinity

Page 87: O que é o Docker afinal? (Workshop Novatec)

MANEIRAS DE RODAR

INTERATIVA COM TERMINAL

$ docker run \ --interactive \ --tty \ debian \ /bin/bash

Page 88: O que é o Docker afinal? (Workshop Novatec)

MANEIRAS DE RODAR

INTERATIVA COM TERMINAL

$ docker run -i -t \ debian /bin/bash

Page 89: O que é o Docker afinal? (Workshop Novatec)

MANEIRAS DE RODAR

INTERATIVA COM TERMINAL

$ docker run -i -t \ debian /bin/bash$ docker run -it \ debian /bin/bash

Page 90: O que é o Docker afinal? (Workshop Novatec)

MANEIRAS DE RODAR

INTERATIVA (UNIX PIPELINE)

$ echo "Ola" | docker run -i debian cat

Page 91: O que é o Docker afinal? (Workshop Novatec)

PORTAS

Page 92: O que é o Docker afinal? (Workshop Novatec)

PORTAS

EXPONDO PORTAS

$ docker run -d \ --publish 80 \ nginx ou $ docker run -d \ —publish-all \ nginx

Page 93: O que é o Docker afinal? (Workshop Novatec)

PORTAS

MAPEANDO PORTAS

$ docker run -d \ --publish 8080:80 \ tutum/hello-world

Page 94: O que é o Docker afinal? (Workshop Novatec)

PORTAS

LISTANDO AS PORTAS DE UM CONTÊINER

$ docker port container-name

Page 95: O que é o Docker afinal? (Workshop Novatec)

VOLUMES

Page 96: O que é o Docker afinal? (Workshop Novatec)

VOLUMES

CRIANDO VOLUME

$ docker volume create \ --name dados

Page 97: O que é o Docker afinal? (Workshop Novatec)

VOLUMES

LISTANDO VOLUMES

$ docker volume ls

Page 98: O que é o Docker afinal? (Workshop Novatec)

VOLUMES

USANDO UM VOLUME CRIADO

$ docker run -it \ --volume dados:/dados \ alpine \ /bin/sh

Page 99: O que é o Docker afinal? (Workshop Novatec)

VOLUMES

MAPEANDO UMA PASTA DO HOST

$ docker run -it \ --volume /home/tom:/tom \ alpine \ /bin/sh

Page 100: O que é o Docker afinal? (Workshop Novatec)

VOLUMES

REMOVENDO VOLUME

$ docker volume rm dados

Page 101: O que é o Docker afinal? (Workshop Novatec)

ESTADOS DE UM CONTÊINER

Page 102: O que é o Docker afinal? (Workshop Novatec)

CREATE

STOPPED RUNNING

PAUSED

CREATE

DESTROY

DELETED

START

docker run

docker create

dockerstart

docker rm

RESTART

docker kill

docker stopKILL

DIE

DIE

STOP

DIE

START

RESTART

PAUSE

UNPAUSE

DIE

OOM

docker pause

dockerrestart

docker unpause

exit

killedyesno

Page 103: O que é o Docker afinal? (Workshop Novatec)

EXEMPLOS

Page 104: O que é o Docker afinal? (Workshop Novatec)

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

Page 105: O que é o Docker afinal? (Workshop Novatec)

EXEMPLOS

NGINX SERVER

docker run -d \ -p 80:80 \ --volume "$(pwd):/usr/share/nginx/html" \ nginx

Page 106: O que é o Docker afinal? (Workshop Novatec)

EXEMPLOS

COMANDOS "DOCKERIZADOS"

$ docker run -it \ --volume "$(pwd):/app" \ --volume "$HOME/.ssh:/root/.ssh" \ composer/composer \ install

Page 107: O que é o Docker afinal? (Workshop Novatec)

EXEMPLOS

APLICAÇÕES GUI

▸ Navegador Tor

▸ Eyes

▸ Spotify

▸ Sugestão: https://hub.docker.com/u/jess/

Page 108: O que é o Docker afinal? (Workshop Novatec)

EXEMPLOS

DOCKER CRAFT

docker run -d \

-p 25565:25565 \

-v /var/run/docker.sock:/var/run/docker.sock \

wfsilva/dockercraft

Page 109: O que é o Docker afinal? (Workshop Novatec)

TO BE CONTINUED…MAIS SOBRE DOCKER

Page 110: O que é o Docker afinal? (Workshop Novatec)

TO BE CONTINUED…

PRÓXIMOS PASSOS

▸ docker-compose

▸ docker-machine

▸ docker-swarm

▸ kubernetes

▸ monitoring

Page 111: O que é o Docker afinal? (Workshop Novatec)

TO BE CONTINUED…

MAIS SOBRE DOCKER

▸ https://docs.docker.com

▸ https://telegram.me/dockerbr

▸ http://docker-br.herokuapp.com

▸ http://bit.ly/curso-docker