Slide 1

Slide 1 text

Docker for PHP Developers Por Jonata Weber

Slide 2

Slide 2 text

Era uma vez...

Slide 3

Slide 3 text

Oi, meu nome é Ted!

Slide 4

Slide 4 text

Alice, pode fazer o deploy! Ok, Ted!

Slide 5

Slide 5 text

Olá! #empreendedor #programador #fãDoRaulSeixas

Slide 6

Slide 6 text

Virtual Machines

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Virtual Machines Vantagem ● Isolação total dos ambientes Desvantagens ● Alto consumo de memória e disco; ● Alto overhead e baixa performance; ● Inicialização lenta; ● Lento para recriar e provisionar;

Slide 10

Slide 10 text

Linux Containers

Slide 11

Slide 11 text

"LXC is a userspace interface for the Linux kernel containment features. Through a powerful API and simple tools, it lets Linux users easily create and manage system or application containers."

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Kernel Features ● Kernel namespaces (ipc, uts, mount, pid, network and user) ● Apparmor and SELinux profiles ● Seccomp policies ● Chroots (using pivot_root) ● Kernel capabilities ● CGroups (control groups)

Slide 14

Slide 14 text

Containers Vantagens ● Inicialização em milissegundos ● Menos consumo de memória e disco ● Aplicação 2x mais rápida (em relação a VMs) ● Múltiplos containers no mesmo SO Desvantagens ● Só é nativo no Linux (uso de VMs em outros SOs)

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

O que é o Docker? ● Open Source (pela dotCloud em março de 2008) ● Desenvolvimento, Implantação e Execução ● Desenvolvido em Golang ● Linux Containers ● Interface própria para acessar namespaces, cgroup e afins ● Images Layers ● Disco, memória, CPU e rede são isolados

Slide 20

Slide 20 text

Um mundo além dos containers!

Slide 21

Slide 21 text

Por que devo usá-lo? ● Ambientes semelhantes ● Aplicação como pacote completo ● Padronização e replicação ● Infraestrutura e desenvolvimento juntos! ● Comunidade

Slide 22

Slide 22 text

Ecossistema Docker ● Docker Engine ● Docker Compose ● Docker Machine ● Docker Hub ● Kitematic ● Docker Swarm

Slide 23

Slide 23 text

Docker Engine

Slide 24

Slide 24 text

Docker Machine

Slide 25

Slide 25 text

Let's code!

Slide 26

Slide 26 text

Instale o Docker Toolbox https://www.docker.com/products/docker-toolbox

Slide 27

Slide 27 text

Docker sem GNU/Linux

Slide 28

Slide 28 text

Hello, Docker! $ docker run hello-world 1. Checa se existe a imagem "hello-world" 2. Faz o download da imagem (se ainda não foi baixado) 3. Carrega a imagem e executa!

Slide 29

Slide 29 text

PHP7 container :) $ docker run php:7 php -v

Slide 30

Slide 30 text

Rodando um PHP7 webserver $ docker run -d \ --name web7 \ -p 8000:8000 \ -v $PWD:/usr/src/myapp \ php:7 php -S 0.0.0.0:8000

Slide 31

Slide 31 text

MySQL container $ docker run -d \ --name db \ -e MYSQL_ROOT_PASSWORD=123456 \ -p 3306:3306 \ mysql

Slide 32

Slide 32 text

Olá, Dockerfile!

Slide 33

Slide 33 text

Criando minha primeira imagem FROM php:7 CMD php -v $ docker build -t php7-version -f Dockerfile . $ docker run php7-version Dockerfile

Slide 34

Slide 34 text

PHP7 webserver com Dockerfile FROM php:7 COPY ./ /usr/src/myapp WORKDIR /usr/src/myapp CMD php -S 0.0.0.0:9000 EXPOSE 9000 Dockerfile

Slide 35

Slide 35 text

PHP7 + Apache + MySQL #dockerfile FROM php:7.0.5-apache RUN docker-php-ext-install pdo pdo_mysql COPY . /var/www/html $ docker run -d --name db -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql $ docker build -t myapp-php7 . $ docker run -d --name myapp --link db:db -p 80:80 myapp-php7

Slide 36

Slide 36 text

Docker Compose web: build: . ports: - "80:80" volumes: - ./:/usr/src/myapp links: - db db: image: mysql environment: - MYSQL_ROOT_PASSWORD=123456 Dockerfile $ docker-compose up -d

Slide 37

Slide 37 text

Para concluir...

Slide 38

Slide 38 text

Projetos Interessantes ● phpdocker.io ● Kubernetes ● Tsuru.io ● Apache Mesos ● Docker Swarm

Slide 39

Slide 39 text

Livros sobre Docker

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

Obrigado! @JonataWeber [email protected]

Slide 42

Slide 42 text

Referências https://www.docker.com/what-docker https://medium.com/iron-io-blog/why-and-how-to-use-docker-for-development-a156c1de3b24 https://www.digitalocean.com/community/tutorials/the-docker-ecosystem-an-overview-of-containerization http://www.infoq.com/br/presentations/docker-e-containers http://www.newmediacampaigns.com/blog/docker-for-php-developers http://www.slideshare.net/jpetazzo/introduction-docker-linux-containers-lxc http://techfree.com.br/2015/12/entendendo-armazenamentos-de-dados-no-docker/ https://leanpub.com/dockerparadesenvolvedores