Slide 1

Slide 1 text

Introdução ao Docker

Slide 2

Slide 2 text

Docker - Breve história ● Release inicial em 13/3/2013 ● Iniciado como projeto interno ● Criado por Solomon Hykes ● Escrito em Go (Google) ● Open Source - http://docker.com

Slide 3

Slide 3 text

Docker - O que é? ● Tecnologia de código aberto ● Crie, execute, teste e implante aplicações. ● Empacote software em uma unidade padronizada para o desenvolvimento. ● Utilizou LXC inicialmente, migrado para runC (libcontainer). ● AUFS como filesystem (Another Union File System) ● Container não é VM!

Slide 4

Slide 4 text

Docker - Comunidade Github - Open Source ● 180k linhas de código ● 31k commits ● 185 releases ● 1.6k contribuidores

Slide 5

Slide 5 text

Docker - Alguns dados - Docker Con 2016 ● 460K aplicações em Docker, um crescimento de 3100% em 2 anos. ● 4 bilhões de imagens baixadas. ● 530% em contribuição com o código.

Slide 6

Slide 6 text

Docker - Alguns dados - Datadog - Abril/2017 ● 10% dos hosts utilizam Docker. ● 30% de aumento em adoção em 1 ano. ● 5x o aumento em deploys em 10 meses entre usuários. https://www.datadoghq.com/docker-adoption

Slide 7

Slide 7 text

Docker - Alguns dados - New Relic 2016 ● 192% de aumento em containers por empresa. ● Tempo de vida de container caiu de 13 horas para 9.5 horas. ○ Aumento de deploys. ● Frameworks em PHP, Ruby e Node são as principais tecnologias.

Slide 8

Slide 8 text

Docker - VM vs Container

Slide 9

Slide 9 text

Docker - Por que utilizar? ● Evitamos a frase - “mas funciona na minha máquina”. ● Aplicação toda contida em uma imagem. ● Infraestrutura definida como código. ● Comunidade.

Slide 10

Slide 10 text

Docker - Terminologia ● Images - É a “planta” de nossa aplicação, que forma a base para os containers. ● Containers - Implementação dinâmica de uma imagem. Múltiplos containers podem vir de uma única imagem. ● Docker Daemon - Serviço em background que roda no host e que gerencia a construção, execução e distribuição.

Slide 11

Slide 11 text

Docker - Terminologia ● Docker Client - Linha de comando que permite que o usuário interaja com o daemon. ● Docker Hub - O registry (repositório) para Docker Images.

Slide 12

Slide 12 text

Docker - Como instalar ? CE - Community Edition 1. sudo apt-get -y install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common 2. curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - 3. sudo apt-get update 4. apt-get -y install docker-ce

Slide 13

Slide 13 text

Docker - Como iniciar, qual o primeiro comando? ● Que tal iniciar pelo começo? ○ docker version ○ docker info

Slide 14

Slide 14 text

Docker - Como eu...? ● ...inicio meu primeiro container? Spoiler alert: tudo vem de uma imagem!

Slide 15

Slide 15 text

Docker DEMO

Slide 16

Slide 16 text

Docker - Evoluindo... ● Como listar containers? docker container list ● Como parar? docker stop ● Como reiniciar? docker restart ● Como remover? docker rm

Slide 17

Slide 17 text

Docker DEMO

Slide 18

Slide 18 text

Docker - Entrando num container “Quero criar minha própria imagem, pois nenhuma imagem que procurei atendeu meus requisitos.” Podemos usar o comando docker attach para trabalhar no container.

Slide 19

Slide 19 text

Docker DEMO

Slide 20

Slide 20 text

Docker - Okay, tudo pronto, e agora? Agora temos que “empacotar” o seu container em uma imagem. Usamos então o comando docker commit para gerar a imagem.

Slide 21

Slide 21 text

Docker DEMO

Slide 22

Slide 22 text

Docker - Terminologia Dockerfile é: ● Simples arquivo texto onde contém uma lista de comandos. ● É uma forma simples de automatizar a criação de imagens. ● Basicamente são comandos em Linux, então não é necessário aprender uma nova sintaxe.

Slide 23

Slide 23 text

Docker - Nginx # imagem base FROM nginx # copiando arquivo para um diretório específico COPY index.html /usr/share/nginx/html # qual porta queremos que seja publicada EXPOSE 8000 # rodando aplicação CMD ["nginx", "-g", "daemon off;"]

Slide 24

Slide 24 text

Docker - PHP CLI # imagem base FROM php:7.1-cli # comando que irá rodar ao iniciar o container CMD ["php", "--version"]

Slide 25

Slide 25 text

Docker - Volumes Queremos programar localmente, ou temos dados para enviar para dentro do container. docker run -it -v /path/to/file:/file tchelinux-app command /file

Slide 26

Slide 26 text

PERGUNTAS?