Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Docker para Desenvolvedores - DevConf 2017

Docker para Desenvolvedores - DevConf 2017

Romulo Scampini

May 27, 2017
Tweet

Other Decks in Programming

Transcript

  1. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 ▸ História

    ▸ O que é Docker ? ▸ Arquitetura ▸ Vantagens e Desvantagens ▸ Comandos Básicos ▸ Construindo sua imagem Docker DOCKER PARA DESENVOLVEDORES AGENDA
  2. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 DOCKER PARA

    DESENVOLVEDORES QUESTÕES RESPONDIDAS ▸ Porque todos os devs deveriam utilizar Docker? ▸ O que é Docker? ▸ Qual a diferença entre Containers (Docker) e Máquinas virtuais (VMs)?
  3. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 DOCKER PARA

    DESENVOLVEDORES ROMULO SCAMPINI ▸ Desenvolvedor / DevOps ▸ github.com/romuloscampini ▸ twitter.com/romuloscampini ▸ www.scampini.com.br ▸ [email protected] ▸ medium.com/@romuloscampini
  4. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 DOCKER PARA

    DESENVOLVEDORES HISTÓRIA ▸ Apresentado na PYCON US em 2013 ▸ Criado por Solomon Hykes, Andrea Luzzardi e Francois- Xavier Bourlet na dotCloud, além de Jeff Lindsay com colaboração independente. ▸ Evoluiu dos Linux Containers ▸ Escrito em Go lang
  5. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 DOCKER PARA

    DESENVOLVEDORES O QUE É DOCKER ? Namespaces Control groups (Cgroups) Union file systems Container format (libcontainer) + + +
  6. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 DOCKER PARA

    DESENVOLVEDORES O QUE É DOCKER ? VM Container
  7. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 DOCKER PARA

    DESENVOLVEDORES O QUE É DOCKER ? ▸ Definição oficial para desenvolvedores:
 
 "Docker automatiza as tarefas repetitivas de configuração do ambiente…"
  8. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 DOCKER PARA

    DESENVOLVEDORES VANTAGENS ▸ Ambiente mais próximo com o de produção ▸ Facilidade de ter diversos ambientes na máquina ▸ Facilidade de uso ▸ Ideal para arquitetura de microserviços ▸ Portabilidade ▸ Velocidade
  9. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 ▸ Imagens

    prontas DOCKER PARA DESENVOLVEDORES VANTAGENS
  10. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 DOCKER PARA

    DESENVOLVEDORES DESVANTAGENS ▸ Dificulta troubleshooting ▸ Como todos os containers compartilham o kernel do host, um bug no kernel pode afetar todos os containers ▸ Gerenciamento em grandes ambientes necessita de alguma ferramenta (Swarm, Kubernetes, etc) ▸ Limite da Imagem até 10GB
  11. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 COMANDOS BÁSICOS

    ▸ docker run → docker container run ▸ docker ps → docker container ls / docker container ps ▸ docker images → docker image ls ▸ docker stop / docker start → docker container… ▸ docker exec → docker container exec ▸ docker inspect → docker container/image/etc inspect ▸ docker rm / docker rmi → docker container rm / docker image rm DOCKER PARA DESENVOLVEDORES
  12. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 COMANDOS DA

    DEMONSTRAÇÃO 1 ▸ Subindo um banco de dados Postgres
 # docker run -d --name db1 -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_DB=postgres -e POSTGRES_PASSWORD=postgres postgres:9.4 ▸ Subindo um banco de dados MySQL
 # docker run -d --name db2 -p 3306:3306 -e MYSQL_DATABASE=db_app -e MYSQL_ROOT_PASSWORD=app123 mysql:5.7 ▸ Subindo um servidor MongoDB
 # docker run -d --name db3 -p 27017 mongo ▸ Subindo um servidor PHP
 # docker run -d --name web -p 80:80 php:7.0-apache DOCKER PARA DESENVOLVEDORES
  13. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 CONSTRUINDO A

    SUA IMAGEM DOCKER DOCKER PARA DESENVOLVEDORES
  14. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 OPÇÕES ▸

    Dockerfile + terminal ▸ Dockerfile + algum plugin ▸ Dockerfile + script sh ▸ Dockerfile + Docker-compose* ▸ Docker Hub ▸ CI DOCKER PARA DESENVOLVEDORES
  15. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 ESTRUTURA BÁSICA

    DOCKERFILE DOCKER PARA DESENVOLVEDORES OU
  16. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 GUIA PARA

    CRIAR IMAGEM DA SUA APLICAÇÃO ▸ Definir se irá utilizar uma imagem oficial (se houver) ou se irá construir ▸ Criar um Dockerfile ▸ Estrutura básica Dockerfile:
 - Imagem Base - FROM
 - Definir diretório - WORKDIR
 - Instalar e configurar bibliotecas e dependências - RUN / ADD
 - Copiar aplicação para imagem - ADD
 - Expor uma porta - EXPOSE
 - Definir o comando para subir a aplicação - ENTRYPOINT / CMD ▸ Criar um script sh ou integrar sua aplicação a algum recurso para criar a imagem ▸ Opcional: Criar um arquivo .dockerignore DOCKER PARA DESENVOLVEDORES
  17. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 CRIANDO SUA

    IMAGEM NODE ▸ Repositório Github:
 https://github.com/romuloscampini/exemplo-node- docker
 DOCKER PARA DESENVOLVEDORES
  18. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 CRIANDO SUA

    IMAGEM JAVA ▸ Repositório Github:
 https://github.com/romuloscampini/exemplo-java-docker DOCKER PARA DESENVOLVEDORES
  19. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 "Cada sonho

    que você deixa para trás, 
 é um pedaço do seu futuro 
 que deixa de existir" - Steve Jobs Agradeço a atenção de todos DOCKER PARA DESENVOLVEDORES
  20. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 LINKS ÚTEIS

    ▸ Apresentação Docker PYCON US 2013
 http://bit.ly/docker-apresentacao ▸ Apresentação Docker - Twitter
 http://bit.ly/docker-twitter ▸ Artigo Docker - Romulo Scampini
 http://bit.ly/docker-artigo DOCKER PARA DESENVOLVEDORES
  21. ROMULO SCAMPINI - DEVCONF - OPENSANCA - 2017 GLOSSÁRIO ▸

    Engine / daemon: API que gerencia as imagens e containers através ▸ Client: Consome a API enviando comandos para criar, executar, parar e ▸ demais ações sobre imagens e containers. Pode ser via linha de comando, ▸ aplicações web, ou até aplicações GUI ▸ Registry: Repositório de imagens ▸ Compose: Ferramenta para orquestração de containers ▸ Machine: Ferramenta para gerencia de Docker hosts ▸ Swarm: Ferramenta para orquestração de hosts Docker DOCKER PARA DESENVOLVEDORES